List of usage examples for org.eclipse.jdt.core Signature getTypeErasure
public static String getTypeErasure(String parameterizedTypeSignature) throws IllegalArgumentException
From source file:at.bestsolution.efxclipse.tooling.fxgraph.ui.contentassist.FXGraphProposalProvider.java
License:Open Source License
private void collectStaticFields(List<IField> fields, IType type) throws JavaModelException { //FIXME Don't we have to check if the field is assignable??? for (IField f : type.getFields()) { if (Flags.isStatic(f.getFlags())) { fields.add(f);// ww w. j av a2s. c o m } } String s = type.getSuperclassName(); if (s != null) { String fqn = at.bestsolution.efxclipse.tooling.model.internal.utils.Util.getFQNType(type, Signature.getTypeErasure(s)); collectStaticFields(fields, type.getJavaProject().findType(fqn)); } }
From source file:at.bestsolution.efxclipse.tooling.jdt.ui.internal.FXBeanJavaCompletionProposalComputer.java
License:Open Source License
private IType toType(IType t, String typeSig) throws JavaModelException { String erasedType = Signature.getTypeErasure(Signature.toString(typeSig)); String[][] types = t.resolveType(erasedType); if (types != null && types.length == 1) { StringBuilder b = new StringBuilder(); for (String p : types[0]) { if (b.length() > 0) { b.append("."); }//from w w w. j a va2s . c om b.append(p); } return t.getJavaProject().findType(b.toString()); } return null; }
From source file:at.bestsolution.efxclipse.tooling.model.internal.FXClass.java
License:Open Source License
public FXClass(IJavaProject jp, IType type) { this.type = type; this.javaProject = jp; try {//from w ww . j a v a 2 s. c om String s = type.getSuperclassName(); if (s != null) { s = getFQNType(type, Signature.getTypeErasure(s)); superClass = FXPlugin.getClassmodel().findClass(jp, jp.findType(s)); } } catch (JavaModelException e) { FXPlugin.getLogger().log(LogService.LOG_ERROR, "Unable to retrieve superclass name of '" + type.getFullyQualifiedName() + "'", e); } }
From source file:at.bestsolution.efxclipse.tooling.model.internal.FXCollectionProperty.java
License:Open Source License
@Override public IType getElementType() { if (elementType == null) { try {//ww w . j a va2 s. c o m 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 {//from ww w . ja v a 2 s . com 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.FXCtrlClass.java
License:Open Source License
private Map<String, IFXCtrlField> getLocalFields() { if (fields == null) { fields = new HashMap<String, IFXCtrlField>(); try {//from w ww.j a va 2 s.c o m for (IField f : type.getFields()) { boolean annotated = false; for (IAnnotation a : f.getAnnotations()) { if (a.getElementName().endsWith("FXML")) { annotated = true; break; } } if (annotated) { String erasedFQNType = Util.getFQNType((IType) f.getParent(), Signature.getTypeErasure(Signature.toString(f.getTypeSignature()))); FXCtrlField field = new FXCtrlField(this, f, erasedFQNType); fields.put(f.getElementName(), field); } } } catch (JavaModelException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return fields; }
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;/*from 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 w w . j a v a 2 s.c om 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:at.bestsolution.fxide.jdt.corext.util.MethodOverrideTester.java
License:Open Source License
private StringBuffer internalGetSubstitutedTypeName(String typeSig, IMember context, boolean erasure, StringBuffer buf) throws JavaModelException { int sigKind = Signature.getTypeSignatureKind(typeSig); switch (sigKind) { case Signature.BASE_TYPE_SIGNATURE: return buf.append(Signature.toString(typeSig)); case Signature.ARRAY_TYPE_SIGNATURE: internalGetSubstitutedTypeName(Signature.getElementType(typeSig), context, erasure, buf); for (int i = Signature.getArrayCount(typeSig); i > 0; i--) { buf.append('[').append(']'); }/*from w w w . ja va 2 s .c o m*/ return buf; case Signature.CLASS_TYPE_SIGNATURE: { String erasureSig = Signature.getTypeErasure(typeSig); String erasureName = Signature.getSimpleName(Signature.toString(erasureSig)); char ch = erasureSig.charAt(0); if (ch == Signature.C_RESOLVED) { buf.append(erasureName); } else if (ch == Signature.C_UNRESOLVED) { // could be a type variable if (erasure) { buf.append(getVariableErasure(context, erasureName)); } else { buf.append(getVariableSubstitution(context, erasureName)); } } else { Assert.isTrue(false, "Unknown class type signature"); //$NON-NLS-1$ } if (!erasure) { String[] typeArguments = Signature.getTypeArguments(typeSig); if (typeArguments.length > 0) { buf.append('<'); for (int i = 0; i < typeArguments.length; i++) { if (i > 0) { buf.append(','); } internalGetSubstitutedTypeName(typeArguments[i], context, erasure, buf); } buf.append('>'); } } return buf; } case Signature.TYPE_VARIABLE_SIGNATURE: String varName = Signature.toString(typeSig); if (erasure) { return buf.append(getVariableErasure(context, varName)); } else { return buf.append(getVariableSubstitution(context, varName)); } case Signature.WILDCARD_TYPE_SIGNATURE: { buf.append('?'); char ch = typeSig.charAt(0); if (ch == Signature.C_STAR) { return buf; } else if (ch == Signature.C_EXTENDS) { buf.append(" extends "); //$NON-NLS-1$ } else { buf.append(" super "); //$NON-NLS-1$ } return internalGetSubstitutedTypeName(typeSig.substring(1), context, erasure, buf); } case Signature.CAPTURE_TYPE_SIGNATURE: return internalGetSubstitutedTypeName(typeSig.substring(1), context, erasure, buf); default: Assert.isTrue(false, "Unhandled type signature kind"); //$NON-NLS-1$ return buf; } }
From source file:at.bestsolution.fxide.jdt.editor.internal.MethodUtil.java
License:Open Source License
/** * Returns the simple erased name for a given type signature, possibly replacing type variables. * * @param signature the type signature//from ww w .ja v a2s. com * @param typeVariables the Map<SimpleName, VariableName> * @return the simple erased name for signature */ private String computeSimpleTypeName(String signature, Map<String, char[]> typeVariables) { // method equality uses erased types String erasure = Signature.getTypeErasure(signature); erasure = erasure.replaceAll("/", "."); //$NON-NLS-1$//$NON-NLS-2$ String simpleName = Signature.getSimpleName(Signature.toString(erasure)); char[] typeVar = typeVariables.get(simpleName); if (typeVar != null) simpleName = String.valueOf(Signature.getSignatureSimpleName(typeVar)); return simpleName; }