List of usage examples for org.eclipse.jdt.core IMethod getParent
IJavaElement getParent();
null
if this element has no parent. From source file:at.bestsolution.efxclipse.tooling.fxgraph.ui.util.JDTHelper.java
License:Open Source License
private TypeData createData(List<IMethod> allMethods, IJavaProject jproject) throws JavaModelException { TypeData d = new TypeData(); for (IMethod m : allMethods) { if (!Flags.isPublic(m.getFlags())) { continue; }//from w w w . j a v a2 s . c o m if (m.getElementName().startsWith("impl_") || m.getElementName().startsWith("getImpl_")) { continue; } if (m.getElementName().startsWith("get") && m.getParameterNames().length == 0) { String returnSignature = Signature.toString(m.getReturnType()); if (returnSignature.startsWith("javafx.event.EventHandler<? super ") || returnSignature.startsWith("javafx.event.EventHandler<")) { String eventType; if (returnSignature.startsWith("javafx.event.EventHandler<? super ")) { eventType = returnSignature.substring("javafx.event.EventHandler<? super ".length(), returnSignature.length() - 1); } else { eventType = returnSignature.substring("javafx.event.EventHandler<".length(), returnSignature.length() - 1); } EventValueProperty p = new EventValueProperty(m, extractAttributename(m.getElementName()), m.getParent().getElementName(), eventType); d.properties.add(p); } else { String propName = extractAttributename(m.getElementName()); String ownerName = m.getParent().getElementName(); boolean isReadonly = isReadonlySetter(propName, allMethods); if ("double".equals(returnSignature) || "float".equals(returnSignature)) { if (!isReadonly) { FloatingValueProperty p = new FloatingValueProperty(m, propName, ownerName, returnSignature); d.properties.add(p); } } else if ("int".equals(returnSignature) || "long".equals(returnSignature) || "short".equals(returnSignature) || "byte".equals(returnSignature) || "char".equals(returnSignature)) { if (!isReadonly) { IntegerValueProperty p = new IntegerValueProperty(m, propName, ownerName, returnSignature); d.properties.add(p); } } else { IType type; if (returnSignature.indexOf('<') == -1) { type = jproject.findType(returnSignature); } else { type = jproject.findType(returnSignature.substring(0, returnSignature.indexOf('<'))); } if (type == null) { continue; } if (type.isEnum()) { if (!isReadonly) { EnumValueProperty p = new EnumValueProperty(m, propName, ownerName, returnSignature, type); d.properties.add(p); } } else { boolean isLists = false; boolean isMap = false; if ("java.util.List".equals(type.getFullyQualifiedName())) { isLists = true; } else { for (String i : type.getSuperInterfaceNames()) { if (i.equals("java.util.List")) { isLists = true; } } } if (!isLists) { if ("java.util.Map".equals(type.getFullyQualifiedName())) { isMap = true; } else { for (String i : type.getSuperInterfaceNames()) { if (i.equals("java.util.Map")) { isMap = true; } } } } if (isLists) { String listType; if (returnSignature.indexOf('<') != -1) { listType = returnSignature.substring(returnSignature.indexOf('<') + 1, returnSignature.lastIndexOf('>')); } else { listType = "?"; } if (!propName.endsWith("Unmodifiable")) { ListValueProperty p = new ListValueProperty(m, propName, ownerName, listType, isReadonly); d.properties.add(p); } } else if (isMap) { MapValueProperty p = new MapValueProperty(m, propName, ownerName); d.properties.add(p); } else if (type.getFullyQualifiedName().equals("java.lang.String")) { if (!isReadonly) { StringValueProperty p = new StringValueProperty(m, propName, ownerName, returnSignature); d.properties.add(p); } } else { if (!isReadonly) { List<Proposal> props = getProposals(type, jproject); ElementValueProperty p = new ElementValueProperty(m, propName, ownerName, returnSignature, props); d.properties.add(p); } } } } } } else if (m.getElementName().startsWith("is") && m.getParameterNames().length == 0 && "Z".equals(m.getReturnType())) { String propName = extractAttributename(m.getElementName()); boolean isReadonly = isReadonlySetter(propName, allMethods); if (!isReadonly) { BooleanValueProperty p = new BooleanValueProperty(m, propName, m.getParent().getElementName(), "boolean"); d.properties.add(p); } } } return d; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.FXCollectionProperty.java
License:Open Source License
@Override public IType getElementType() { if (elementType == null) { try {// w ww . java 2 s.c om IMethod m = (IMethod) getJavaElement(); String signature; if (isSetable()) { signature = m.getParameterTypes()[0]; } else { signature = m.getReturnType(); } //TODO if the value is a generic parameter we need to resolve it //using the class' generic parameter String genericType = Signature.toString(signature); String eType; if (genericType.contains("extends")) { eType = genericType.substring(genericType.indexOf("extends") + "extends".length(), genericType.indexOf('>')); } else if (genericType.contains("super")) { eType = genericType.substring(genericType.indexOf("super") + "super".length(), genericType.indexOf('>')); } else { eType = genericType.substring(genericType.indexOf('<') + 1, genericType.lastIndexOf('>')); eType = Signature.getTypeErasure(eType); } eType = eType.trim(); IType t = (IType) m.getParent(); String fqnType = Util.getFQNType(t, eType); if (fqnType == null) { return null; } elementType = getFXClass().getJavaProject().findType(fqnType); } catch (JavaModelException e) { // TODO Auto-generated method stub e.printStackTrace(); } } return elementType; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.FXCtrlClass.java
License:Open Source License
private Map<String, IFXCtrlEventMethod> getLocalEventMethods() { if (eventMethods == null) { eventMethods = new HashMap<String, IFXCtrlEventMethod>(); try {// w ww . j a va 2 s. c o m for (IMethod m : type.getMethods()) { boolean annotated = false; for (IAnnotation a : m.getAnnotations()) { if (a.getElementName().endsWith("FXML")) { annotated = true; break; } } if (annotated) { String[] types = m.getParameterTypes(); if (types.length <= 1) { if (types.length == 1) { String erasedFQNType = Util.getFQNType((IType) m.getParent(), Signature.getTypeErasure(Signature.toString(types[0]))); if (FXCtrlEventMethod.isEventMethod(javaProject, erasedFQNType)) { eventMethods.put(m.getElementName(), new FXCtrlEventMethod(this, m, erasedFQNType)); } } else { // Only if there's not already a method with the same id if (!eventMethods.containsKey(m.getElementName())) { eventMethods.put(m.getElementName(), new FXCtrlEventMethod(this, m, null)); } } } } } } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return eventMethods; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.FXEventHandlerProperty.java
License:Open Source License
public IType getEventType() { if (eventType == null) { try {//from w ww.j a va 2 s .c o m IMethod m = (IMethod) getJavaElement(); String signature; if (isSetable()) { signature = m.getParameterTypes()[0]; } else { signature = m.getReturnType(); } IType t = (IType) m.getParent(); String fqnType = Util.toFQN(t, signature); eventType = getFXClass().getJavaProject().findType(fqnType); } catch (JavaModelException e) { // TODO Auto-generated method stub e.printStackTrace(); } } return eventType; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.utils.PropertiesUtil.java
License:Open Source License
private static FXProperty getProperty(FXClass fxClass, String name, IMethod m) throws JavaModelException { FXProperty p = null;//w w w . j a v a 2 s. c o m String signature; if (m.getElementName().startsWith("get") || m.getElementName().startsWith("is")) { signature = m.getReturnType(); } else { // setter or builder method signature = m.getParameterTypes()[0]; } String genericType = Signature.toString(signature); if (FXPrimitiveProperty.isPrimitive(genericType)) { p = new FXPrimitiveProperty(fxClass, name, m, Type.parseType(genericType), false); } else { String erasedFQNType = Util.getFQNType((IType) m.getParent(), Signature.getTypeErasure(genericType)); if (erasedFQNType != null) { if (FXEventHandlerProperty.isEventHandler(fxClass.getJavaProject(), erasedFQNType)) { p = new FXEventHandlerProperty(fxClass, name, m, false); } else if (FXCollectionProperty.isList(fxClass.getJavaProject(), erasedFQNType)) { p = new FXCollectionProperty(fxClass, name, m, erasedFQNType, genericType, false); } else if (FXMapProperty.isMap(fxClass.getJavaProject(), erasedFQNType)) { p = new FXMapProperty(fxClass, name, m, false); } else if (FXEnumProperty.isEnum(fxClass.getJavaProject(), erasedFQNType)) { p = new FXEnumProperty(fxClass, name, m, erasedFQNType, false); } else { p = new FXObjectPoperty(fxClass, name, m, erasedFQNType, false); } } } return p; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.utils.PropertiesUtil.java
License:Open Source License
public static Map<String, IFXProperty> resolveStaticProperties(FXClass fxClass) throws JavaModelException { Map<String, IFXProperty> rv = new HashMap<String, IFXProperty>(); if ("java.lang.Object".equals(fxClass.getFQN())) { return rv; }//from w ww .j a v a2s.co m for (IMethod m : fxClass.getType().getMethods()) { if (!Flags.isPublic(m.getFlags()) || !Flags.isStatic(m.getFlags())) { continue; } String name = m.getElementName(); if (name.startsWith("setImpl")) { continue; } if (name.startsWith("set") && m.getParameterTypes().length == 2) { name = name.substring(3); name = Character.toLowerCase(name.charAt(0)) + name.substring(1); FXProperty p = null; String signature = m.getParameterTypes()[1]; String genericType = Signature.toString(signature); if (FXPrimitiveProperty.isPrimitive(genericType)) { p = new FXPrimitiveProperty(fxClass, name, m, Type.parseType(genericType), true); } else { String erasedFQNType = Util.getFQNType((IType) m.getParent(), Signature.getTypeErasure(genericType)); if (erasedFQNType != null) { if (FXEnumProperty.isEnum(fxClass.getJavaProject(), erasedFQNType)) { p = new FXEnumProperty(fxClass, name, m, erasedFQNType, true); } else { p = new FXObjectPoperty(fxClass, name, m, erasedFQNType, true); } } } if (p != null) { rv.put(p.getName(), p); } } } return rv; }
From source file:com.codenvy.ide.ext.java.server.internal.core.NamedMember.java
License:Open Source License
protected String getKey(IMethod method, boolean forceOpen) throws JavaModelException { StringBuffer key = new StringBuffer(); // declaring class String declaringKey = getKey((IType) method.getParent(), forceOpen); key.append(declaringKey);// w w w. j ava 2s . c o m // selector key.append('.'); String selector = method.getElementName(); key.append(selector); // type parameters if (forceOpen) { ITypeParameter[] typeParameters = method.getTypeParameters(); int length = typeParameters.length; if (length > 0) { key.append('<'); for (int i = 0; i < length; i++) { ITypeParameter typeParameter = typeParameters[i]; String[] bounds = typeParameter.getBounds(); int boundsLength = bounds.length; char[][] boundSignatures = new char[boundsLength][]; for (int j = 0; j < boundsLength; j++) { boundSignatures[j] = Signature.createCharArrayTypeSignature(bounds[j].toCharArray(), method.isBinary()); CharOperation.replace(boundSignatures[j], '.', '/'); } char[] sig = Signature.createTypeParameterSignature( typeParameter.getElementName().toCharArray(), boundSignatures); key.append(sig); } key.append('>'); } } // parameters key.append('('); String[] parameters = method.getParameterTypes(); for (int i = 0, length = parameters.length; i < length; i++) key.append(parameters[i].replace('.', '/')); key.append(')'); // return type if (forceOpen) key.append(method.getReturnType().replace('.', '/')); else key.append('V'); return key.toString(); }
From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.TypeParameterPattern.java
License:Open Source License
/** * @param findDeclarations/* www . ja va 2 s. c o m*/ * @param findReferences * @param typeParameter * @param matchRule */ public TypeParameterPattern(boolean findDeclarations, boolean findReferences, ITypeParameter typeParameter, int matchRule) { super(TYPE_PARAM_PATTERN, matchRule); this.findDeclarations = findDeclarations; // set to find declarations & all occurences this.findReferences = findReferences; // set to find references & all occurences this.typeParameter = typeParameter; this.name = typeParameter.getElementName().toCharArray(); // store type parameter name IMember member = typeParameter.getDeclaringMember(); this.declaringMemberName = member.getElementName().toCharArray(); // store type parameter declaring member name // For method type parameter, store also declaring class name and parameters type names if (member instanceof IMethod) { IMethod method = (IMethod) member; this.methodDeclaringClassName = method.getParent().getElementName().toCharArray(); String[] parameters = method.getParameterTypes(); int length = parameters.length; this.methodArgumentTypes = new char[length][]; for (int i = 0; i < length; i++) { this.methodArgumentTypes[i] = Signature.toCharArray(parameters[i].toCharArray()); } } }
From source file:com.codenvy.ide.ext.java.server.internal.core.SourceMapper.java
License:Open Source License
/** * Creates a handle that has parameter types that are not * fully qualified so that the correct source is found. *///from w w w . j av a 2 s . co m protected IJavaElement[] getUnqualifiedMethodHandle(IMethod method, boolean noDollar) { boolean hasDollar = false; String[] qualifiedParameterTypes = method.getParameterTypes(); String[] unqualifiedParameterTypes = new String[qualifiedParameterTypes.length]; for (int i = 0; i < qualifiedParameterTypes.length; i++) { StringBuffer unqualifiedTypeSig = new StringBuffer(); getUnqualifiedTypeSignature(qualifiedParameterTypes[i], 0/*start*/, qualifiedParameterTypes[i].length(), unqualifiedTypeSig, noDollar); unqualifiedParameterTypes[i] = unqualifiedTypeSig.toString(); hasDollar |= unqualifiedParameterTypes[i].lastIndexOf('$') != -1; } IJavaElement[] result = new IJavaElement[2]; result[0] = ((IType) method.getParent()).getMethod(method.getElementName(), unqualifiedParameterTypes); if (hasDollar) { result[1] = result[0]; } return result; }
From source file:com.codenvy.ide.ext.java.server.internal.core.util.ASTNodeFinder.java
License:Open Source License
public AbstractMethodDeclaration findMethod(IMethod methodHandle) { TypeDeclaration typeDecl = findType((IType) methodHandle.getParent()); if (typeDecl == null) return null; AbstractMethodDeclaration[] methods = typeDecl.methods; if (methods != null) { char[] selector = methodHandle.getElementName().toCharArray(); String[] parameterTypeSignatures = methodHandle.getParameterTypes(); int parameterCount = parameterTypeSignatures.length; nextMethod: for (int i = 0, length = methods.length; i < length; i++) { AbstractMethodDeclaration method = methods[i]; if (CharOperation.equals(selector, method.selector)) { Argument[] args = method.arguments; int argsLength = args == null ? 0 : args.length; if (argsLength == parameterCount) { for (int j = 0; j < parameterCount; j++) { TypeReference type = args[j].type; String signature = Util.typeSignature(type); if (!signature.equals(parameterTypeSignatures[j])) { continue nextMethod; }/*from w w w. jav a 2s. c o m*/ } return method; } } } } return null; }