List of usage examples for org.eclipse.jdt.core IField getConstant
public Object getConstant() throws JavaModelException;
null if this field has none. From source file:com.codenvy.ide.ext.java.server.javadoc.JavadocContentAccess2.java
License:Open Source License
private boolean handleConstantValue(IField field, boolean link) throws JavaModelException { String text = null;//from w w w . j a va 2 s.co m ISourceRange nameRange = field.getNameRange(); if (SourceRange.isAvailable(nameRange)) { CompilationUnit cuNode = ASTProvider.createAST(field.getTypeRoot(), null); if (cuNode != null) { ASTNode nameNode = NodeFinder.perform(cuNode, nameRange); if (nameNode instanceof SimpleName) { IBinding binding = ((SimpleName) nameNode).resolveBinding(); if (binding instanceof IVariableBinding) { IVariableBinding variableBinding = (IVariableBinding) binding; Object constantValue = variableBinding.getConstantValue(); if (constantValue != null) { if (constantValue instanceof String) { text = ASTNodes.getEscapedStringLiteral((String) constantValue); } else { text = constantValue.toString(); // Javadoc tool is even worse for chars... } } } } } } if (text == null) { Object constant = field.getConstant(); if (constant != null) { text = constant.toString(); } } if (text != null) { text = HTMLPrinter.convertToHTMLContentWithWhitespace(text); if (link) { String uri; try { uri = JavaElementLinks.createURI(urlPrefix, field); fBuf.append(JavaElementLinks.createLink(uri, text)); } catch (URISyntaxException e) { LOG.error(e.getMessage(), e); return false; } } else { handleText(text); } return true; } return false; }
From source file:com.codenvy.ide.ext.java.server.SourcesFromBytecodeGenerator.java
License:Open Source License
private void generateType(IType type, StringBuilder builder, String indent) throws JavaModelException { int flags = 0; appendAnnotationLabels(type.getAnnotations(), flags, builder, indent.substring(TAB.length())); builder.append(indent.substring(TAB.length())); builder.append(getModifiers(type.getFlags(), type.getFlags())).append(' ').append(getJavaType(type)) .append(' ').append(type.getElementName()); if (type.isResolved()) { BindingKey key = new BindingKey(type.getKey()); if (key.isParameterizedType()) { String[] typeArguments = key.getTypeArguments(); appendTypeArgumentSignaturesLabel(type, typeArguments, flags, builder); } else {// ww w. j ava 2s . c o m String[] typeParameters = Signature.getTypeParameters(key.toSignature()); appendTypeParameterSignaturesLabel(typeParameters, builder); } } else { appendTypeParametersLabels(type.getTypeParameters(), flags, builder); } if (!"java.lang.Object".equals(type.getSuperclassName()) && !"java.lang.Enum".equals(type.getSuperclassName())) { builder.append(" extends "); if (type.getSuperclassTypeSignature() != null) { // appendTypeSignatureLabel(type, type.getSuperclassTypeSignature(), flags, builder); builder.append(Signature.toString(type.getSuperclassTypeSignature())); } else { builder.append(type.getSuperclassName()); } } if (!type.isAnnotation()) { if (type.getSuperInterfaceNames().length != 0) { builder.append(" implements "); String[] signatures = type.getSuperInterfaceTypeSignatures(); if (signatures.length == 0) { signatures = type.getSuperInterfaceNames(); } for (String interfaceFqn : signatures) { builder.append(Signature.toString(interfaceFqn)).append(", "); } builder.delete(builder.length() - 2, builder.length()); } } builder.append(" {\n"); List<IField> fields = new ArrayList<>(); if (type.isEnum()) { builder.append(indent); for (IField field : type.getFields()) { if (field.isEnumConstant()) { builder.append(field.getElementName()).append(", "); } else { fields.add(field); } } if (", ".equals(builder.substring(builder.length() - 2))) { builder.delete(builder.length() - 2, builder.length()); } builder.append(";\n"); } else { fields.addAll(Arrays.asList(type.getFields())); } for (IField field : fields) { if (Flags.isSynthetic(field.getFlags())) { continue; } appendAnnotationLabels(field.getAnnotations(), flags, builder, indent); builder.append(indent).append(getModifiers(field.getFlags(), type.getFlags())); if (builder.charAt(builder.length() - 1) != ' ') { builder.append(' '); } builder.append(Signature.toCharArray(field.getTypeSignature().toCharArray())).append(' ') .append(field.getElementName()); if (field.getConstant() != null) { builder.append(" = "); if (field.getConstant() instanceof String) { builder.append('"').append(field.getConstant()).append('"'); } else { builder.append(field.getConstant()); } } builder.append(";\n"); } builder.append('\n'); for (IMethod method : type.getMethods()) { if (method.getElementName().equals("<clinit>") || Flags.isSynthetic(method.getFlags())) { continue; } appendAnnotationLabels(method.getAnnotations(), flags, builder, indent); BindingKey resolvedKey = method.isResolved() ? new BindingKey(method.getKey()) : null; String resolvedSig = (resolvedKey != null) ? resolvedKey.toSignature() : null; builder.append(indent).append(getModifiers(method.getFlags(), type.getFlags())); if (builder.charAt(builder.length() - 1) != ' ') { builder.append(' '); } if (resolvedKey != null) { if (resolvedKey.isParameterizedMethod()) { String[] typeArgRefs = resolvedKey.getTypeArguments(); if (typeArgRefs.length > 0) { appendTypeArgumentSignaturesLabel(method, typeArgRefs, flags, builder); builder.append(' '); } } else { String[] typeParameterSigs = Signature.getTypeParameters(resolvedSig); if (typeParameterSigs.length > 0) { appendTypeParameterSignaturesLabel(typeParameterSigs, builder); builder.append(' '); } } } else if (method.exists()) { ITypeParameter[] typeParameters = method.getTypeParameters(); if (typeParameters.length > 0) { appendTypeParametersLabels(typeParameters, flags, builder); builder.append(' '); } } if (!method.isConstructor()) { String returnTypeSig = resolvedSig != null ? Signature.getReturnType(resolvedSig) : method.getReturnType(); appendTypeSignatureLabel(method, returnTypeSig, 0, builder); builder.append(' '); // builder.append(Signature.toCharArray(method.getReturnType().toCharArray())).append(' '); } builder.append(method.getElementName()); builder.append('('); for (ILocalVariable variable : method.getParameters()) { builder.append(Signature.toString(variable.getTypeSignature())); builder.append(' ').append(variable.getElementName()).append(", "); } if (builder.charAt(builder.length() - 1) == ' ') { builder.delete(builder.length() - 2, builder.length()); } builder.append(')'); String[] exceptionTypes = method.getExceptionTypes(); if (exceptionTypes != null && exceptionTypes.length != 0) { builder.append(' ').append("throws "); for (String exceptionType : exceptionTypes) { builder.append(Signature.toCharArray(exceptionType.toCharArray())).append(", "); } builder.delete(builder.length() - 2, builder.length()); } if (type.isInterface() || type.isAnnotation()) { builder.append(";\n\n"); } else { builder.append(" {").append(METHOD_BODY).append("}\n\n"); } } for (IType iType : type.getTypes()) { generateType(iType, builder, indent + indent); } builder.append(indent.substring(TAB.length())); builder.append("}\n"); }
From source file:com.tsc9526.monalisa.plugin.eclipse.generator.SourceUnit.java
License:Open Source License
public String getFingerprint(String name) { try {//from ww w .ja v a 2 s . c o m String fullClassName = getFullName(name); IType type = findType(fullClassName); if (type != null) { if (type.getCompilationUnit() != null) { IField field = type.getField("FINGERPRINT"); if (field != null) { String fp = (String) field.getConstant(); if (fp.startsWith("\"")) { fp = fp.substring(1, fp.length() - 1); } return fp; } } } return null; } catch (JavaModelException jme) { return MelpException.throwRuntimeException(jme); } }
From source file:fr.ifpen.emptooling.reverse.JavaToEcore.java
License:Open Source License
/** * Process (resolve types of all fields) for the given {@link IType}. * /*from w w w . j av a 2 s . c om*/ * @param iType the given {@link IType} (a java Class). * @param clazz the associated {@link EClass}. * @throws JavaModelException */ protected void processFields(IType iType, EClass clazz) throws JavaModelException { IField[] fields = iType.getFields(); for (IField iField : fields) { EStructuralFeature feature; EClassifier ecoreType = processAttributeType(iField); if (isListEReference(iField)) { feature = eFactory.createEReference(); feature.setUpperBound(-1); feature.setUnique(false); feature.setOrdered(true); } else if (isSetEReference(iField)) { feature = eFactory.createEReference(); feature.setUpperBound(-1); feature.setUnique(true); feature.setOrdered(false); } else if (isSortedSetEReference(iField)) { feature = eFactory.createEReference(); feature.setUpperBound(-1); feature.setUnique(true); feature.setOrdered(true); } else if (ecoreType instanceof EClass) { feature = eFactory.createEReference(); feature.setLowerBound(1); feature.setUpperBound(1); feature.setUnique(true); } else if (ecoreType instanceof EEnum) { feature = eFactory.createEAttribute(); feature.setLowerBound(1); // replace EEnum type by an EINT type ecoreType = EcorePackage.Literals.EINT; setEnumAnnotation(iField, feature); // feature.setEType(ecoreType);//FP // getConstant on non final field return a null string ! // feature.setDefaultValue(iField.getConstant());//FP } else if (ecoreType instanceof EDataType) { feature = eFactory.createEAttribute(); feature.setLowerBound(1); } else { feature = eFactory.createEAttribute(); feature.setLowerBound(1); System.err.println("Passage anormal pour le reverse !!!!"); } feature.setName(iField.getElementName()); feature.setEType(ecoreType); // check flags for final static fields and transient fields int flags = iField.getFlags(); if (Flags.isFinal(flags) && Flags.isStatic(flags)) { // a constant is not persistent and not changeable feature.setTransient(true); feature.setChangeable(false); // retrieve the value of this constant and set it to default feature value try { feature.setDefaultValue(iField.getConstant()); } catch (IllegalStateException e) { // Cannot serialize value to object without an EDataType eType // nevermind: do nothing more System.err.println(e.getMessage() + " for constant " + feature.getName() + " from class " + clazz.getName()); } } // transient field or no typed field or set to transient if (Flags.isTransient(flags) || feature.getEType() == null) { feature.setTransient(true); } clazz.getEStructuralFeatures().add(feature); /* Add generic parameters in case of EMap */ manageEMapParameters(iField, feature); /* Manage annotations but ignore transient fields */ if (!feature.isTransient()) { manageGetterAnnotation(iField, iType, feature); } } }
From source file:org.eclim.plugin.jdt.command.src.ClassPrototypeCommand.java
License:Open Source License
/** * Prototypes the supplied field.//from www . ja v a2 s . c o m * * @param buffer The buffer to append to. * @param field The field. * @param indent The current indentation. * @param imports Keep track of imports. */ protected void prototypeField(StringBuffer buffer, IField field, String indent, Set<String> imports) throws Exception { String fieldName = field.getElementName(); if (fieldName.indexOf("$") == -1) { buffer.append(indent); prototypeFlags(buffer, field); String type = field.getTypeSignature(); String typeName = Signature.getSignatureSimpleName(type); buffer.append(typeName).append(' ').append(field.getElementName()); addImport(imports, type); Object defaultValue = field.getConstant(); if (defaultValue != null) { buffer.append(" = "); if (typeName.equals("char")) { buffer.append('\'').append(defaultValue).append('\''); } else if (typeName.equals("int") || typeName.equals("long") || typeName.equals("short") || typeName.equals("double") || typeName.equals("float") || typeName.equals("boolean") || typeName.equals("byte")) { buffer.append(defaultValue); } else if (defaultValue instanceof String) { buffer.append('"').append(defaultValue).append('"'); } else { logger.warn("Unhandled constant value: '{}' '{}'", defaultValue.getClass().getName(), defaultValue); } } buffer.append(";\n"); } }
From source file:org.eclipse.gmf.tests.gen.RuntimeCompilationTest.java
License:Open Source License
public void testCustomPreferences() throws Exception { DiaGenSource s = createLibraryGen(false); final GenDiagram gd = s.getGenDiagram(); GenCustomPreferencePage pp = GMFGenFactory.eINSTANCE.createGenCustomPreferencePage(); if (gd.getPreferencePages().isEmpty()) { gd.getPreferencePages().add(pp); } else {// w ww . j a v a 2 s . com gd.getPreferencePages().get(0).getChildren().add(pp); } pp.setGenerateBoilerplate(true); pp.setName("Page Name"); pp.setQualifiedClassName(gd.getEditorGen().getEditor().getPackageName() + ".CustomPreferencePage"); GenPreference p1 = GMFGenFactory.eINSTANCE.createGenPreference(); p1.setName("PREF_XXX_ONE"); p1.setDefaultValue("\"XXX_ONE_DEFAULT\""); GenPreference p2 = GMFGenFactory.eINSTANCE.createGenPreference(); p2.setName("NO_PREFIX_XXX_TWO"); p2.setKey("KEY.XXX.TWO"); pp.getPreferences().add(p1); pp.getPreferences().add(p2); // generateAndCompile(s); // IProject generatedProject = ResourcesPlugin.getWorkspace().getRoot() .getProject(gd.getEditorGen().getPlugin().getID()); IFile file_pp = generatedProject.getFile("/src/" + pp.getQualifiedClassName().replace('.', '/') + ".java"); assertTrue(file_pp.exists()); ICompilationUnit cuPage = (ICompilationUnit) JavaCore.create(file_pp); assertNotNull(cuPage); IType mainClass = cuPage.getTypes()[0]; assertNotNull(mainClass); assertEquals(2, mainClass.getFields().length); final IField p1field = mainClass.getField(p1.getName()); final IField p2field = mainClass.getField(p2.getName()); assertTrue(Flags.isPublic(p1field.getFlags())); assertTrue(Flags.isStatic(p1field.getFlags())); assertTrue(Flags.isPublic(p2field.getFlags())); assertTrue(Flags.isStatic(p2field.getFlags())); assertEquals('"' + p1.getKey() + '"', p1field.getConstant()); assertEquals('"' + p2.getKey() + '"', p2field.getConstant()); IMethod initMethod = mainClass.getMethod("initDefaults", new String[] { "Q" + IPreferenceStore.class.getSimpleName() + ";" }); assertNotNull(initMethod); String methodText = initMethod.getSource(); assertTrue(methodText.indexOf(p1.getName()) != -1); assertTrue(methodText.indexOf(p1.getDefaultValue()) != -1); assertTrue(methodText.indexOf(p2.getName()) == -1); }
From source file:org.eclipse.umlgen.reverse.java.AbstractJava2UMLConverter.java
License:Open Source License
/** * Creates and returns a property.//from w ww .j a v a 2 s . c om * * @param element * @param field * @return a Property * @throws JavaModelException */ protected Property createProperty(Element element, IField field) throws JavaModelException { boolean isCollection = false; boolean isSet = false; boolean isList = false; // no need for an isArray, see arraycount variable String fieldName = field.getElementName(); String fieldTypeSig = field.getTypeSignature(); String fieldTypeWithoutArray = Signature.getElementType(fieldTypeSig); Property propertyObject = null; int arrayCount = Signature.getArrayCount(fieldTypeSig); String fieldTypeName = Signature.toString(Signature.getTypeErasure(fieldTypeWithoutArray)); Type fieldType = findTemplateParameter(element, fieldTypeName); if (fieldType == null) { fieldTypeName = resolveTypeInContext(element, field.getDeclaringType(), fieldTypeName); fieldType = findOrCreateType(element.getNearestPackage(), fieldTypeName); } String[] typeArguments = Signature.getTypeArguments(fieldTypeSig); // X<Y> types - handle collections if (typeArguments != null && typeArguments.length == 1) { // Get the X class and see if it is a subclass of Set, List or Collection // TODO get datatype, crawl back up packages for full qualified name, // get actual class, compare to collections, List, Set java.lang.Class<?> mainClass = null; try { mainClass = java.lang.Class.forName(fieldTypeName); } catch (ClassNotFoundException e) { e.printStackTrace(); LogUtils.logThrowable(e); } if (mainClass != null && Collection.class.isAssignableFrom(mainClass)) { isCollection = true; fieldTypeWithoutArray = typeArguments[0]; String fieldTypeWithoutArrayName = Signature .toString(Signature.getTypeErasure(fieldTypeWithoutArray)); fieldType = findTemplateParameter(element, fieldTypeWithoutArrayName); if (fieldType == null) { fieldTypeWithoutArrayName = resolveTypeInContext(element, field.getDeclaringType(), fieldTypeWithoutArrayName); fieldType = findOrCreateType(element.getNearestPackage(), fieldTypeWithoutArrayName); } if (mainClass != null && Set.class.isAssignableFrom(mainClass)) { isSet = true; } else if (mainClass != null && List.class.isAssignableFrom(mainClass)) { isList = true; } } } // retrieve the affectation String affectation = retrieveFieldAffectation(field); // create the attribute propertyObject = null; String created = " created "; if (element instanceof Class) { propertyObject = ((Class) element).createOwnedAttribute(fieldName, fieldType); LogUtils.logCreation(element, null, propertyObject, created); } else if (element instanceof Enumeration) { propertyObject = ((Enumeration) element).createOwnedAttribute(fieldName, fieldType); LogUtils.logCreation(element, null, propertyObject, created); } else if (element instanceof Interface) { propertyObject = ((Interface) element).createOwnedAttribute(fieldName, fieldType); LogUtils.logCreation(element, null, propertyObject, created); } if (propertyObject == null) { ReversePlugin.log("The property can not be created.", Status.ERROR); return null; } attachJavadoc(propertyObject, field); update(propertyObject, field.getFlags()); // No need to check the null (done with instanceof which returns always false) if (field.getConstant() instanceof String) { LiteralString defaultValue = (LiteralString) propertyObject.createDefaultValue("", propertyObject.getType(), UMLFactory.eINSTANCE.createLiteralString().eClass()); defaultValue.setValue((String) field.getConstant()); } else if (field.getConstant() instanceof Integer) { LiteralInteger defaultValue = (LiteralInteger) propertyObject.createDefaultValue("", propertyObject.getType(), UMLFactory.eINSTANCE.createLiteralInteger().eClass()); defaultValue.setValue((Integer) field.getConstant()); } else if (field.getConstant() instanceof Boolean) { LiteralBoolean defaultValue = (LiteralBoolean) propertyObject.createDefaultValue("", propertyObject.getType(), UMLFactory.eINSTANCE.createLiteralBoolean().eClass()); defaultValue.setValue((Boolean) field.getConstant()); } else if (affectation != null && arrayCount == 0) { LiteralString defaultValue = (LiteralString) propertyObject.createDefaultValue("", propertyObject.getType(), UMLFactory.eINSTANCE.createLiteralString().eClass()); defaultValue.setValue(affectation); } // handle array case with ONE dimension if (arrayCount == 1) { propertyObject.setUpper(-1); if (affectation != null) { String size = retrieveInitDimSize(affectation, 1); if (size != null) { LiteralString defaultValue = (LiteralString) propertyObject.createDefaultValue("", propertyObject.getType(), UMLFactory.eINSTANCE.createLiteralString().eClass()); defaultValue.setValue(size); } } } else if (arrayCount > 1) { // handle array case with more than ONE dimension String stringTypeName = resolveTypeInContext(element, field.getDeclaringType(), "String"); Type stringType = findOrCreateType(element.getNearestPackage(), stringTypeName); for (int i = 1; i <= arrayCount; i++) { // create a qualifier property for each dimension String qualifierName = "dimension_" + i; Property prop = propertyObject.createQualifier(qualifierName, stringType); prop.setUpper(-1); if (affectation != null) { String size = retrieveInitDimSize(affectation, i); if (size != null) { LiteralString defaultValue = (LiteralString) prop.createDefaultValue("", prop.getType(), UMLFactory.eINSTANCE.createLiteralString().eClass()); defaultValue.setValue(size); } } } } // handle Collections if (isCollection) { if (propertyObject.getUpper() < 2) { propertyObject.setUpper(-1); } propertyObject.setIsOrdered(false); propertyObject.setIsUnique(false); } // handle Sets and Lists specifically if (isSet) { if (propertyObject.getUpper() < 2) { propertyObject.setUpper(-1); } propertyObject.setIsUnique(true); propertyObject.setIsOrdered(true); } else if (isList) { if (propertyObject.getUpper() < 2) { propertyObject.setUpper(-1); } propertyObject.setIsOrdered(true); propertyObject.setIsUnique(false); } // TODO handle Maps return propertyObject; }
From source file:org.eclipse.umlgen.reverse.java.Java2UMLConverter.java
License:Open Source License
/** * Creates the properties for an enumeration. * * @param type// w ww . j a v a 2 s. c o m * @param enumeration * @throws JavaModelException */ protected void createProperties(IType type, Enumeration enumeration) throws JavaModelException { // For an enum, always import all the fields for (IField field : type.getFields()) { LogUtils.logEntering(field, "creating property"); String typename = Signature .toString(Signature.getTypeErasure(Signature.getElementType(field.getTypeSignature()))); if (typename.equals(type.getElementName())) { EnumerationLiteral lit = enumeration.getOwnedLiteral(field.getElementName()); if (lit == null) { lit = enumeration.createOwnedLiteral(field.getElementName()); LiteralInteger value = UMLFactory.eINSTANCE.createLiteralInteger(); if (field.getConstant() instanceof Integer) { value.setValue((Integer) field.getConstant()); } lit.setSpecification(value); LogUtils.logCreation(null, field, lit, null); } attachJavadoc(lit, field); } else if (!type.isEnum()) { // old style enumeration translation EnumerationLiteral lit = enumeration.getOwnedLiteral(field.getElementName()); if (lit == null) { lit = enumeration.createOwnedLiteral(field.getElementName()); } LiteralInteger value = UMLFactory.eINSTANCE.createLiteralInteger(); if (field.getConstant() instanceof Integer) { value.setValue((Integer) field.getConstant()); } lit.setSpecification(value); LogUtils.logCreation(null, field, lit, null); attachJavadoc(lit, field); } else { // true properties for enumeration Property propertyObject = findProperty(enumeration, field.getElementName()); if (propertyObject == null) { propertyObject = createProperty(enumeration, field); enumeration.getOwnedAttributes().add(propertyObject); LogUtils.logCreation(null, field, propertyObject, null); } attachJavadoc(propertyObject, field); } LogUtils.logExiting(); } }
From source file:org.eclipse.xtend.shared.ui.core.metamodel.jdt.JdtTypeImpl.java
License:Open Source License
@Override public Feature[] getContributedFeatures() { if (features == null) { try {//from w ww. ja v a 2 s . co m final IMethod[] ms = type.getMethods(); final Set<Feature> features = new HashSet<Feature>(); for (int i = 0; i < ms.length; i++) { final IMethod method = ms[i]; if (strategy.isGetter(method)) { final String sig = strategy.getPropertiesInnerType(method); Type type = null; if (sig != null) { type = metamodel.getTypeSystem().getListType(getTypeForSignature(sig)); } else { type = getTypeForSignature(method.getReturnType()); } if (type != null && !type.equals(metamodel.getTypeSystem().getVoidType())) { features.add(new JdtPropertyImpl(this, strategy.propertyName(method), type)); } else if (type == null) { XtendLog.logInfo("Couldn't resolve return type of " + method.toString()); } } else if (strategy.isOperation(method)) { final String[] paramSigns = method.getParameterTypes(); final Type[] params = new Type[paramSigns.length]; boolean unkownType = false; final Type rType = getTypeForSignature(method.getReturnType()); if (rType == null) { unkownType = true; } for (int j = 0; !unkownType && j < paramSigns.length; j++) { params[j] = getTypeForSignature(paramSigns[j]); if (params[j] == null) { unkownType = true; } } if (!unkownType) { features.add(new JdtOperationImpl(this, method.getElementName(), rType, params)); } } } // Collect constants as StaticProperty for (IField field : type.getFields()) { if (strategy.isConstant(field)) { Type type = getTypeForField(field); if (field.isEnumConstant()) { features.add(new JdtStaticPropertyImpl(this, strategy.propertyName(field), type, field.getElementName())); } else { features.add(new JdtStaticPropertyImpl(this, strategy.propertyName(field), type, field.getConstant())); } } } return features.toArray(new Feature[features.size()]); } catch (final Exception e) { XtendLog.logError(e); return new Feature[0]; } } return features; }
From source file:org.eclipse.xtend.shared.ui.core.metamodel.jdt.JdtTypeImpl.java
License:Open Source License
/** * Returns the Xtend Type instance for an IField instance. * /*from www. j av a 2s. c om*/ * @param field * @return * @throws JavaModelException * @throws IllegalArgumentException */ private Type getTypeForField(IField field) throws JavaModelException, IllegalArgumentException { Type type = null; if (field.isEnumConstant()) { type = metamodel.getTypeSystem().getTypeForName( field.getDeclaringType().getFullyQualifiedName().replaceAll("\\.", SyntaxConstants.NS_DELIM)); } else { // it is possible to define a constant like this: // public static class MyClass { // public static final int MYCONST = '.'; // // unfortunately this returns null for field.getConstant() // see org.eclipse.jdt.core.Signature if (field.getConstant() != null) { type = metamodel.getTypeSystem().getTypeForName( field.getConstant().getClass().getName().replaceAll("\\.", SyntaxConstants.NS_DELIM)); } else if (Signature.getElementType(field.getTypeSignature()).matches("B|C|D|F|I|J|S|Z")) { XtendLog.logInfo("constant value for field " + field.getElementName() + " not resolvable"); } else { String typeName = Signature.getElementType(field.getTypeSignature()); type = metamodel.getTypeSystem() .getTypeForName(typeName.replaceAll("\\.", SyntaxConstants.NS_DELIM)); } } return type; }