Example usage for org.eclipse.jdt.internal.compiler.env IBinaryField getAnnotations

List of usage examples for org.eclipse.jdt.internal.compiler.env IBinaryField getAnnotations

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.compiler.env IBinaryField getAnnotations.

Prototype

IBinaryAnnotation[] getAnnotations();

Source Link

Document

Answer the runtime visible and invisible annotations for this field or null if none.

Usage

From source file:com.codenvy.ide.ext.java.server.internal.core.BinaryField.java

License:Open Source License

public IAnnotation[] getAnnotations() throws JavaModelException {
    IBinaryField info = (IBinaryField) getElementInfo();
    IBinaryAnnotation[] binaryAnnotations = info.getAnnotations();
    return getAnnotations(binaryAnnotations, info.getTagBits());
}

From source file:com.codenvy.ide.ext.java.server.internal.core.ClassFileInfo.java

License:Open Source License

/**
 * Creates the handles and infos for the fields of the given binary type.
 * Adds new handles to the given vector.
 *//*from  w  w  w.j  a v  a  2 s .c  o  m*/
private void generateFieldInfos(IType type, IBinaryType typeInfo, HashMap newElements,
        ArrayList childrenHandles) {
    // Make the fields
    IBinaryField[] fields = typeInfo.getFields();
    if (fields == null) {
        return;
    }
    JavaModelManager manager = ((JavaElement) type).manager;
    for (int i = 0, fieldCount = fields.length; i < fieldCount; i++) {
        IBinaryField fieldInfo = fields[i];
        BinaryField field = new BinaryField((JavaElement) type, manager,
                manager.intern(new String(fieldInfo.getName())));
        newElements.put(field, fieldInfo);
        childrenHandles.add(field);
        generateAnnotationsInfos(field, fieldInfo.getAnnotations(), fieldInfo.getTagBits(), newElements);
    }
}

From source file:org.eclipse.che.jdt.BinaryTypeConvector.java

License:Open Source License

private static JsonElement toJsonField(IBinaryField field) {
    JsonObject object = new JsonObject();
    object.addProperty("modifiers", field.getModifiers());
    object.add("constant", toJsonConstant(field.getConstant()));
    object.add("genericSignature", field.getGenericSignature() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(field.getGenericSignature())));
    object.add("name",
            field.getName() == null ? JsonNull.INSTANCE : new JsonPrimitive(new String(field.getName())));
    object.addProperty("tagBits", String.valueOf(field.getTagBits()));
    object.add("typeName", field.getTypeName() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(field.getTypeName())));
    object.add("annotations", toJsonAnnotations(field.getAnnotations()));
    return object;
}

From source file:org.eclipse.wst.xml.core.internal.contentmodel.tapestry.travelpackage.TapestryClassLoader.java

License:Open Source License

public TapestryCoreComponents loadComponentAttributesFromClassFile(IPackageFragmentRoot fragmentRoot,
        String prefix, ClassFile packi) throws JavaModelException, ClassFormatException {
    ClassFileReader reader = new ClassFileReader(packi.getBytes(), null);
    TapestryCoreComponents component = new TapestryCoreComponents();
    component.setName(String.valueOf(reader.getSourceName()));
    component.setElementLabel(prefix + ":" + component.getName().toLowerCase());
    if (reader.getFields() != null)
        for (IBinaryField field : reader.getFields()) {
            boolean parameter = false;
            if (field.getAnnotations() == null)
                continue;
            for (IBinaryAnnotation anno : field.getAnnotations()) {
                if (String.valueOf(anno.getTypeName()).endsWith("/Parameter;")) {
                    parameter = true;//w w  w.  jav a2s . c  o  m
                    break;
                }
            }
            if (parameter) {
                component.addParameter(String.valueOf(field.getName()));
            }
        }

    String parentClassName = String.valueOf(reader.getSuperclassName());
    if (parentClassName != null && !parentClassName.isEmpty() && !parentClassName.equals("java/lang/Object")) {
        List<String> parameters = loadParametersFromParentClass(fragmentRoot, parentClassName);
        for (String parameter : parameters) {
            component.addParameter(parameter);
        }
    }

    return component;
}

From source file:org.eclipse.wst.xml.core.internal.contentmodel.tapestry.travelpackage.TapestryClassLoader.java

License:Open Source License

public List<String> loadParametersFromParentClass(IPackageFragmentRoot root, String classFileName) {
    List<String> list = new ArrayList<String>();
    if (classFileName.indexOf('/') < 0)
        return list;
    String packageName = classFileName.substring(0, classFileName.lastIndexOf('/')).replace('/', '.');
    String className = classFileName.substring(classFileName.lastIndexOf('/') + 1) + ".class";
    try {//from  w  w w  . jav  a2  s  .c  om
        PackageFragment packInstance = (PackageFragment) root.getPackageFragment(packageName);
        for (Object packo : packInstance.getChildrenOfType(IJavaElement.CLASS_FILE)) {
            ClassFile packi = (ClassFile) packo;
            if (packi.getElementName().equals(className)) {
                ClassFileReader reader = null;
                try {
                    reader = new ClassFileReader(packi.getBytes(), null);
                } catch (ClassFormatException e) {
                    e.printStackTrace();
                }

                if (reader.getFields() != null)
                    for (IBinaryField field : reader.getFields()) {
                        boolean parameter = false;
                        if (field.getAnnotations() == null)
                            continue;
                        for (IBinaryAnnotation anno : field.getAnnotations()) {
                            if (String.valueOf(anno.getTypeName()).endsWith("/Parameter;")) {
                                parameter = true;
                                break;
                            }
                        }
                        if (parameter) {
                            list.add(String.valueOf(field.getName()));
                        }
                    }
                String parentClassName = String.valueOf(reader.getSuperclassName());
                if (parentClassName != null && !parentClassName.isEmpty()
                        && !parentClassName.equals("java/lang/Object")) {
                    list.addAll(loadParametersFromParentClass(root, parentClassName));
                }
                return list;
            }
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }

    return list;
}

From source file:org.springframework.ide.eclipse.core.java.TypeStructureCache.java

License:Open Source License

private boolean hasStructuralChanges(ClassFileReader reader, TypeStructure existingType, int flags) {
    if (existingType == null) {
        return true;
    }//w  w  w  . ja v a 2 s  . c  o  m

    // modifiers
    if (!modifiersEqual(reader.getModifiers(), existingType.modifiers)) {
        return true;
    }

    // generic signature
    if (!CharOperation.equals(reader.getGenericSignature(), existingType.genericSignature)) {
        return true;
    }

    // superclass name
    if (!CharOperation.equals(reader.getSuperclassName(), existingType.superclassName)) {
        return true;
    }

    // class level annotations
    if ((flags & FLAG_ANNOTATION) != 0) {
        IBinaryAnnotation[] existingAnnotations = existingType.getAnnotations();
        IBinaryAnnotation[] newAnnotations = reader.getAnnotations();
        if (!annotationsEqual(existingAnnotations, newAnnotations, flags)) {
            return true;
        }
    }

    // tag bits; standard annotations like @Deprecated
    if (reader.getTagBits() != existingType.getTagBits()) {
        return true;
    }

    // interfaces
    char[][] existingIfs = existingType.interfaces;
    char[][] newIfsAsChars = reader.getInterfaceNames();
    if (newIfsAsChars == null) {
        newIfsAsChars = EMPTY_CHAR_ARRAY;
    } // damn I'm lazy...
    if (existingIfs == null) {
        existingIfs = EMPTY_CHAR_ARRAY;
    }
    if (existingIfs.length != newIfsAsChars.length)
        return true;
    new_interface_loop: for (int i = 0; i < newIfsAsChars.length; i++) {
        for (int j = 0; j < existingIfs.length; j++) {
            if (CharOperation.equals(existingIfs[j], newIfsAsChars[i])) {
                continue new_interface_loop;
            }
        }
        return true;
    }

    // fields
    IBinaryField[] newFields = reader.getFields();
    if (newFields == null) {
        newFields = TypeStructure.NoField;
    }

    IBinaryField[] existingFs = existingType.binFields;
    if (newFields.length != existingFs.length)
        return true;
    new_field_loop: for (int i = 0; i < newFields.length; i++) {
        IBinaryField field = newFields[i];
        char[] fieldName = field.getName();
        for (int j = 0; j < existingFs.length; j++) {
            if (CharOperation.equals(existingFs[j].getName(), fieldName)) {
                if (!modifiersEqual(field.getModifiers(), existingFs[j].getModifiers())) {
                    return true;
                }
                if (!CharOperation.equals(existingFs[j].getTypeName(), field.getTypeName())) {
                    return true;
                }
                if ((flags & FLAG_ANNOTATION) != 0) {
                    if (!annotationsEqual(field.getAnnotations(), existingFs[j].getAnnotations(), flags)) {
                        return true;
                    }
                }
                continue new_field_loop;
            }
        }
        return true;
    }

    // methods
    IBinaryMethod[] newMethods = reader.getMethods();
    if (newMethods == null) {
        newMethods = TypeStructure.NoMethod;
    }

    IBinaryMethod[] existingMs = existingType.binMethods;
    if (newMethods.length != existingMs.length)
        return true;
    new_method_loop: for (int i = 0; i < newMethods.length; i++) {
        IBinaryMethod method = newMethods[i];
        char[] methodName = method.getSelector();
        for (int j = 0; j < existingMs.length; j++) {
            if (CharOperation.equals(existingMs[j].getSelector(), methodName)) {
                // candidate match
                if (!CharOperation.equals(method.getMethodDescriptor(), existingMs[j].getMethodDescriptor())) {
                    continue; // might be overloading
                } else {
                    // matching sigs
                    if (!modifiersEqual(method.getModifiers(), existingMs[j].getModifiers())) {
                        return true;
                    }
                    if ((flags & FLAG_ANNOTATION) != 0) {
                        if (!annotationsEqual(method.getAnnotations(), existingMs[j].getAnnotations(), flags)) {
                            return true;
                        }

                        if (!parameterAnnotationsEquals(method, existingMs[j], flags)) {
                            return true;
                        }

                    }
                    continue new_method_loop;
                }
            }
        }
        return true; // (no match found)
    }

    return false;
}