Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java191
1 files changed, 0 insertions, 191 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java b/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java
deleted file mode 100644
index 0c2f288e3..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.common/src/org/eclipse/jst/jsf/context/symbol/internal/impl/Util.java
+++ /dev/null
@@ -1,191 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 Oracle Corporation.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Cameron Bateman/Oracle - initial API and implementation
- *
- ********************************************************************************/
-package org.eclipse.jst.jsf.context.symbol.internal.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.jdt.core.IMethod;
-import org.eclipse.jdt.core.IType;
-import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.core.Signature;
-import org.eclipse.jst.jsf.common.JSFCommonPlugin;
-import org.eclipse.jst.jsf.common.internal.types.TypeConstants;
-import org.eclipse.jst.jsf.common.internal.types.ValueType;
-import org.eclipse.jst.jsf.common.util.JDTBeanIntrospector;
-import org.eclipse.jst.jsf.common.util.TypeUtil;
-import org.eclipse.jst.jsf.context.symbol.IJavaTypeDescriptor2;
-import org.eclipse.jst.jsf.context.symbol.IPropertySymbol;
-import org.eclipse.jst.jsf.context.symbol.ISymbol;
-import org.eclipse.jst.jsf.context.symbol.ITypeDescriptor;
-import org.eclipse.jst.jsf.context.symbol.SymbolFactory;
-
-final class Util
-{
- static ISymbol call(String methodName, EList methodArguments,
- String symbolName, ITypeDescriptor typeDesc)
- {
- // first, see if the type descriptor wants to handle the call
- ISymbol result = typeDesc.calculateSyntheticCall(methodName, methodArguments, symbolName);
-
- final IType type= typeDesc.resolveType(typeDesc.getTypeSignature());
-
- // if the type is resolved and the typeDesc didn't already handle
- // the call then do this the hard way...
- if (type != null && result == null)
- {
- final JDTBeanIntrospector introspector =
- new JDTBeanIntrospector(type);
-
- final IMethod callMethod =
- Util.matchMethod(methodName, methodArguments, introspector.getAllMethods(),typeDesc.getTypeParameterSignatures());
-
- if (callMethod != null)
- {
- try
- {
- // resolve the method's return type; don't erase parameters
- String retTypeSignature = callMethod.getReturnType();
-
- // if we have a type variable, try to parameter match it
- if (Signature.getTypeSignatureKind(retTypeSignature) == Signature.TYPE_VARIABLE_SIGNATURE)
- {
- retTypeSignature = TypeUtil.matchTypeParameterToArgument
- (type
- , retTypeSignature, typeDesc.getTypeParameterSignatures());
-
- if (retTypeSignature == null)
- {
- retTypeSignature = TypeConstants.TYPE_JAVAOBJECT;
- }
- }
- // otherwise, try and resolve it in type
- else
- {
- retTypeSignature = TypeUtil.resolveTypeSignature
- (type, callMethod.getReturnType(), false);
- }
-
- final IPropertySymbol propSymbol =
- SymbolFactory.eINSTANCE.createIPropertySymbol();
-
- // TODO: there is a possible problem here for non-string keyed maps
- propSymbol.setName(symbolName);
- propSymbol.setReadable(true);
-
- {
- IJavaTypeDescriptor2 newTypeDesc = null;
-
- if (retTypeSignature.equals(TypeConstants.TYPE_JAVAOBJECT))
- {
- newTypeDesc = SymbolFactory.eINSTANCE.createIBoundedJavaTypeDescriptor();
- }
- else
- {
- newTypeDesc = SymbolFactory.eINSTANCE.createIJavaTypeDescriptor2();
- }
-
- newTypeDesc.setArrayCount(Signature.getArrayCount(retTypeSignature));
-
- // may be null
- newTypeDesc.setType(typeDesc.resolveType(retTypeSignature));
- newTypeDesc.setTypeSignatureDelegate(retTypeSignature);
- propSymbol.setTypeDescriptor(newTypeDesc);
- }
-
- result = propSymbol;
- }
- catch (JavaModelException e)
- {
- JSFCommonPlugin.log(e);
- // fall-through and return null result
- }
- }
- }
-
- return result;
- }
-
- static IMethod matchMethod(String methodName, List methodArguments, IMethod[] allMethods, List typeParameterSignatures)
- {
-// final List argSigs = convertArgsToSignatures(methodArguments);
- IMethod matchedMethod = null;
-
- for (int i = 0; i < allMethods.length; i++)
- {
- final IMethod method = allMethods[i];
-
- // check for names and argument count match
- if (method.getParameterTypes().length == methodArguments.size()
- && method.getElementName().equals(methodName))
- {
- List<String> methods = resolveMethodParameters(method, typeParameterSignatures);
-
- // need to verify argument matches
- boolean isMatched = true;
- CHECK_ARGUMENTS: for (int j = 0; j < methods.size(); j++)
- {
- final ValueType valueType = (ValueType) methodArguments.get(j);
-
- // if the parameters match, or if the method expects an object
- // and we have a class
- // TODO: there are some cases not supported here like:
- // - method name overloading
- // - autoboxing primitives
- // - certain kinds of parameterized args
- if (!methods.get(j).equals(valueType.getSignature())
- && !(methods.get(j).equals(TypeConstants.TYPE_JAVAOBJECT)
- && Signature.getTypeSignatureKind(valueType.getSignature())==Signature.CLASS_TYPE_SIGNATURE))
- {
- // not a match
- isMatched = false;
- break CHECK_ARGUMENTS;
- }
- }
-
- if (isMatched)
- {
- return method;
- }
- }
- }
-
- return matchedMethod;
- }
-
- static List<String> resolveMethodParameters(IMethod method, List typeParametersSignatures)
- {
- List<String> resolved = new ArrayList<String>();
- String[] parameterTypes = method.getParameterTypes();
- for (String parameter : parameterTypes)
- {
- parameter = TypeUtil.resolveTypeSignature(method.getDeclaringType()
- , parameter, false);
-
- if (Signature.getTypeSignatureKind(parameter) == Signature.TYPE_VARIABLE_SIGNATURE)
- {
- parameter = TypeUtil.matchTypeParameterToArgument
- (method.getDeclaringType(), parameter, typeParametersSignatures);
- }
-
- if (parameter == null)
- {
- parameter = TypeConstants.TYPE_JAVAOBJECT;
- }
-
- resolved.add(parameter);
- }
-
- return resolved;
- }
-}

Back to the top