Example usage for org.eclipse.jdt.core IField getConstant

List of usage examples for org.eclipse.jdt.core IField getConstant

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IField getConstant.

Prototype

public Object getConstant() throws JavaModelException;

Source Link

Document

Returns the constant value associated with this field or null if this field has none.

Usage

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;
}