Example usage for org.eclipse.jdt.internal.compiler.env IBinaryType getInterfaceNames

List of usage examples for org.eclipse.jdt.internal.compiler.env IBinaryType getInterfaceNames

Introduction

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

Prototype


char[][] getInterfaceNames();

Source Link

Document

Answer the resolved names of the receiver's interfaces in the class file format as specified in section 4.2 of the Java 2 VM spec or null if the array is empty.

Usage

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

License:Open Source License

public String[] getSuperInterfaceNames() throws JavaModelException {
    IBinaryType info = (IBinaryType) getElementInfo();
    char[][] names = info.getInterfaceNames();
    int length;/*from   w w w  .j  a  v a  2  s  .c om*/
    if (names == null || (length = names.length) == 0) {
        return CharOperation.NO_STRINGS;
    }
    names = ClassFile.translatedNames(names);
    String[] strings = new String[length];
    for (int i = 0; i < length; i++) {
        strings[i] = new String(names[i]);
    }
    return strings;
}

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

License:Open Source License

/**
 * @see org.eclipse.jdt.core.IType#getSuperInterfaceTypeSignatures()
 * @since 3.0/*from  w  w w  .  j a v  a 2 s  .c  om*/
 */
public String[] getSuperInterfaceTypeSignatures() throws JavaModelException {
    IBinaryType info = (IBinaryType) getElementInfo();
    char[] genericSignature = info.getGenericSignature();
    if (genericSignature != null) {
        ArrayList interfaces = new ArrayList();
        int signatureLength = genericSignature.length;
        // skip type parameters
        int index = 0;
        if (genericSignature[0] == '<') {
            int count = 1;
            while (count > 0 && ++index < signatureLength) {
                switch (genericSignature[index]) {
                case '<':
                    count++;
                    break;
                case '>':
                    count--;
                    break;
                }
            }
            index++;
        }
        // skip superclass
        index = org.eclipse.jdt.internal.compiler.util.Util.scanClassTypeSignature(genericSignature, index) + 1;
        while (index < signatureLength) {
            int start = index;
            index = org.eclipse.jdt.internal.compiler.util.Util.scanClassTypeSignature(genericSignature, start)
                    + 1;
            char[] interfaceSig = CharOperation.subarray(genericSignature, start, index);
            interfaces.add(new String(ClassFile.translatedName(interfaceSig)));
        }
        int size = interfaces.size();
        String[] result = new String[size];
        interfaces.toArray(result);
        return result;
    } else {
        char[][] names = info.getInterfaceNames();
        int length;
        if (names == null || (length = names.length) == 0) {
            return CharOperation.NO_STRINGS;
        }
        names = ClassFile.translatedNames(names);
        String[] strings = new String[length];
        for (int i = 0; i < length; i++) {
            strings[i] = new String(Signature.createTypeSignature(names[i], true));
        }
        return strings;
    }
}

From source file:com.codenvy.ide.ext.java.server.internal.core.search.matching.ClassFileMatchLocator.java

License:Open Source License

boolean matchSuperTypeReference(SuperTypeReferencePattern pattern, Object binaryInfo,
        IBinaryType enclosingBinaryType) {
    if (!(binaryInfo instanceof IBinaryType))
        return false;

    IBinaryType type = (IBinaryType) binaryInfo;
    if (pattern.superRefKind != SuperTypeReferencePattern.ONLY_SUPER_INTERFACES) {
        char[] vmName = type.getSuperclassName();
        if (vmName != null) {
            char[] superclassName = convertClassFileFormat(vmName);
            if (checkTypeName(pattern.superSimpleName, pattern.superQualification, superclassName,
                    pattern.isCaseSensitive(), pattern.isCamelCase()))
                return true;
        }/*w w  w.j  ava 2s  .c om*/
    }

    if (pattern.superRefKind != SuperTypeReferencePattern.ONLY_SUPER_CLASSES) {
        char[][] superInterfaces = type.getInterfaceNames();
        if (superInterfaces != null) {
            for (int i = 0, max = superInterfaces.length; i < max; i++) {
                char[] superInterfaceName = convertClassFileFormat(superInterfaces[i]);
                if (checkTypeName(pattern.superSimpleName, pattern.superQualification, superInterfaceName,
                        pattern.isCaseSensitive(), pattern.isCamelCase()))
                    return true;
            }
        }
    }
    return false;
}

From source file:io.takari.maven.plugins.compile.jdt.ClassfileDigester.java

License:Open Source License

public byte[] digest(IBinaryType classFile) {

    // type level comparison
    // modifiers//www  .jav a2  s.  co m
    updateInt(classFile.getModifiers());

    // only consider a portion of the tagbits which indicate a structural change for dependents
    // e.g. @Override change has no influence outside
    long OnlyStructuralTagBits = TagBits.AnnotationTargetMASK // different @Target status ?
            | TagBits.AnnotationDeprecated // different @Deprecated status ?
            | TagBits.AnnotationRetentionMASK // different @Retention status ?
            | TagBits.HierarchyHasProblems; // different hierarchy status ?

    // meta-annotations
    updateLong(classFile.getTagBits() & OnlyStructuralTagBits);
    // annotations
    updateAnnotations(classFile.getAnnotations());

    // generic signature
    updateChars(classFile.getGenericSignature());
    // superclass
    updateChars(classFile.getSuperclassName());
    // interfaces
    char[][] interfacesNames = classFile.getInterfaceNames();
    if (interfacesNames != null) {
        for (int i = 0; i < interfacesNames.length; i++) {
            updateChars(interfacesNames[i]);
        }
    }

    // member types
    IBinaryNestedType[] memberTypes = classFile.getMemberTypes();
    if (memberTypes != null) {
        for (int i = 0; i < memberTypes.length; i++) {
            updateChars(memberTypes[i].getName());
            updateInt(memberTypes[i].getModifiers());
        }
    }

    // fields
    FieldInfo[] fieldInfos = (FieldInfo[]) classFile.getFields();
    if (fieldInfos != null) {
        for (int i = 0; i < fieldInfos.length; i++) {
            updateField(fieldInfos[i]);
        }
    }

    // methods
    MethodInfo[] methodInfos = (MethodInfo[]) classFile.getMethods();
    if (methodInfos != null) {
        for (int i = 0; i < methodInfos.length; i++) {
            updateMethod(methodInfos[i]);
        }
    }

    // missing types
    char[][][] missingTypes = classFile.getMissingTypeNames();
    if (missingTypes != null) {
        for (int i = 0; i < missingTypes.length; i++) {
            for (int j = 0; j < missingTypes[i].length; j++) {
                if (j > 0) {
                    updateChar('.'); // don't ask why
                }
                updateChars(missingTypes[i][j]);
            }
        }
    }

    return digester.digest();
}

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

License:Open Source License

public static String toJsonBinaryType(IBinaryType type) {
    JsonObject object = new JsonObject();
    object.add("annotations", toJsonAnnotations(type.getAnnotations()));
    object.add("enclosingMethod", type.getEnclosingMethod() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.getEnclosingMethod())));
    object.add("enclosingTypeName", type.getEnclosingTypeName() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.getEnclosingTypeName())));
    object.add("fields", toJsonFields(type.getFields()));
    object.add("genericSignature", type.getGenericSignature() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.getGenericSignature())));
    object.add("interfaceNames", toJsonArrayString(type.getInterfaceNames()));
    object.add("memberTypes", toJsonMemberTypes(type.getMemberTypes()));
    object.add("methods", toJsonMethods(type.getMethods()));
    object.add("missingTypeNames", toJsonMissingTypeNames(type.getMissingTypeNames()));
    object.add("name",
            type.getName() == null ? JsonNull.INSTANCE : new JsonPrimitive(new String(type.getName())));
    object.add("sourceName", type.getSourceName() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.getSourceName())));
    object.add("superclassName", type.getSuperclassName() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.getSuperclassName())));
    object.add("tagBits", new JsonPrimitive(String.valueOf(type.getTagBits())));
    object.add("anonymous", new JsonPrimitive(type.isAnonymous()));
    object.add("local", new JsonPrimitive(type.isLocal()));
    object.add("member", new JsonPrimitive(type.isMember()));
    object.add("sourceFileName", type.sourceFileName() == null ? JsonNull.INSTANCE
            : new JsonPrimitive(new String(type.sourceFileName())));
    object.add("modifiers", new JsonPrimitive(type.getModifiers()));
    object.add("binaryType", new JsonPrimitive(type.isBinaryType()));
    object.add("fileName",
            type.getFileName() == null ? JsonNull.INSTANCE : new JsonPrimitive(new String(type.getFileName())));
    return gson.toJson(object);
}