Example usage for org.eclipse.jdt.core.util IClassFileReader getInterfaceNames

List of usage examples for org.eclipse.jdt.core.util IClassFileReader getInterfaceNames

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.util IClassFileReader getInterfaceNames.

Prototype

char[][] getInterfaceNames();

Source Link

Document

Answer back the names of interfaces implemented by this .class file, an empty array if none.

Usage

From source file:com.siteview.mde.internal.ui.search.dependencies.PackageFinder.java

License:Open Source License

static void computeReferencedTypes(IClassFileReader cfr, Set packages) {

    char[][] interfaces = cfr.getInterfaceNames();
    if (interfaces != null) {
        for (int i = 0; i < interfaces.length; i++) {
            //note: have to convert names like Ljava/lang/Object; to java.lang.Object
            packages.add(getPackage(new String(interfaces[i]).replace('/', '.')));
        }//from   w  w  w  . j  a  v  a  2  s .co  m
    }

    char[] scn = cfr.getSuperclassName();
    if (scn != null) {
        packages.add(getPackage(new String(scn).replace('/', '.')));
    }

    IFieldInfo[] fieldInfo = cfr.getFieldInfos();
    for (int i = 0; i < fieldInfo.length; i++) {

        String fieldName = new String(fieldInfo[i].getDescriptor());
        if (!isPrimitiveTypeSignature(fieldName)) {
            String fieldDescriptor = extractFullyQualifiedTopLevelType(fieldName);
            packages.add(getPackage(new String(fieldDescriptor)));
        }
    }

    IMethodInfo[] methodInfo = cfr.getMethodInfos();
    for (int i = 0; i < methodInfo.length; i++) {
        IExceptionAttribute exceptionAttribute = methodInfo[i].getExceptionAttribute();
        if (exceptionAttribute != null) {
            char[][] exceptionNames = exceptionAttribute.getExceptionNames();
            for (int j = 0; j < exceptionNames.length; j++) {
                packages.add(getPackage(new String(exceptionNames[j]).replace('/', '.')));
            }
        }

        String descriptor = new String(methodInfo[i].getDescriptor());
        //add parameter types
        String[] parameterTypes = Signature.getParameterTypes(descriptor);
        for (int j = 0; j < parameterTypes.length; j++) {
            //have to parse to convert [Ljava/lang/String; to java.lang.String
            if (!isPrimitiveTypeSignature(parameterTypes[j])) {
                packages.add(getPackage(new String(extractFullyQualifiedTopLevelType(parameterTypes[j]))));
            }
        }
        //add return type
        String returnType = Signature.getReturnType(descriptor);
        if (!isPrimitiveTypeSignature(returnType)) {
            returnType = extractFullyQualifiedTopLevelType(returnType);
            packages.add(getPackage(returnType));
        }
    }

    // Is there more to extract from the constant pool??
    IConstantPoolEntry entry;
    IConstantPool pool = cfr.getConstantPool();
    int length = pool.getConstantPoolCount();
    for (int i = 1; i < length; i++) {
        switch (pool.getEntryKind(i)) {
        case IConstantPoolConstant.CONSTANT_Class:
            // add reference to the class
            entry = pool.decodeEntry(i);
            //note: may have to convert names like Ljava/lang/Object; to java.lang.Object
            String className = new String(entry.getClassInfoName()).replace('/', '.');
            className = className.indexOf(';') >= 0 ? extractFullyQualifiedTopLevelType(className) : className;
            packages.add(getPackage(className));
            break;

        case IConstantPoolConstant.CONSTANT_NameAndType:
            // add reference to the name and type
            entry = pool.decodeEntry(i);
            int descIndex = entry.getNameAndTypeInfoDescriptorIndex();
            if (pool.getEntryKind(descIndex) == IConstantPoolConstant.CONSTANT_Utf8) {
                entry = pool.decodeEntry(descIndex);
                char[] type = entry.getUtf8Value();
                if (type[0] == '(') {
                    // Method signature.

                    //add parameter types
                    String descriptor = new String(type);
                    String[] parameterTypes = Signature.getParameterTypes(descriptor);
                    for (int j = 0; j < parameterTypes.length; j++) {
                        if (!isPrimitiveTypeSignature(parameterTypes[j])) {
                            packages.add(getPackage(extractFullyQualifiedTopLevelType(parameterTypes[j])));
                        }
                    }
                    //add return type
                    String returnType = Signature.getReturnType(descriptor);
                    if (!isPrimitiveTypeSignature(returnType)) {
                        returnType = extractFullyQualifiedTopLevelType(returnType);
                        packages.add(getPackage(returnType));
                    }

                } else {
                    // Field type.
                    String typeString = new String(type);
                    if (!isPrimitiveTypeSignature(typeString)) {
                        packages.add(getPackage(extractFullyQualifiedTopLevelType(typeString)));
                    }
                }
            }
            break;
        }
    }
    packages.remove(""); // removes default package if it exists //$NON-NLS-1$
}

From source file:org.eclipse.ajdt.internal.ui.editor.quickfix.AJSerialVersionHashOperation.java

License:Open Source License

private static char[][] getSortedInterfacesNames(IClassFileReader cfReader) {
    char[][] interfaceNames = cfReader.getInterfaceNames();
    Arrays.sort(interfaceNames, new Comparator() {
        public int compare(Object o1, Object o2) {
            return CharOperation.compareTo(((char[]) o1), ((char[]) o2));
        }/*from  ww w .  j av a 2  s.co m*/
    });
    return interfaceNames;
}

From source file:org.eclipse.pde.internal.ui.search.dependencies.PackageFinder.java

License:Open Source License

static void computeReferencedTypes(IClassFileReader cfr, Set<String> packages) {

    char[][] interfaces = cfr.getInterfaceNames();
    if (interfaces != null) {
        for (int i = 0; i < interfaces.length; i++) {
            //note: have to convert names like Ljava/lang/Object; to java.lang.Object
            packages.add(getPackage(new String(interfaces[i]).replace('/', '.')));
        }/* www .ja v a  2 s  . c  om*/
    }

    char[] scn = cfr.getSuperclassName();
    if (scn != null) {
        packages.add(getPackage(new String(scn).replace('/', '.')));
    }

    IFieldInfo[] fieldInfo = cfr.getFieldInfos();
    for (int i = 0; i < fieldInfo.length; i++) {

        String fieldName = new String(fieldInfo[i].getDescriptor());
        if (!isPrimitiveTypeSignature(fieldName)) {
            String fieldDescriptor = extractFullyQualifiedTopLevelType(fieldName);
            packages.add(getPackage(new String(fieldDescriptor)));
        }
    }

    IMethodInfo[] methodInfo = cfr.getMethodInfos();
    for (int i = 0; i < methodInfo.length; i++) {
        IExceptionAttribute exceptionAttribute = methodInfo[i].getExceptionAttribute();
        if (exceptionAttribute != null) {
            char[][] exceptionNames = exceptionAttribute.getExceptionNames();
            for (int j = 0; j < exceptionNames.length; j++) {
                packages.add(getPackage(new String(exceptionNames[j]).replace('/', '.')));
            }
        }

        String descriptor = new String(methodInfo[i].getDescriptor());
        //add parameter types
        String[] parameterTypes = Signature.getParameterTypes(descriptor);
        for (int j = 0; j < parameterTypes.length; j++) {
            //have to parse to convert [Ljava/lang/String; to java.lang.String
            if (!isPrimitiveTypeSignature(parameterTypes[j])) {
                packages.add(getPackage(new String(extractFullyQualifiedTopLevelType(parameterTypes[j]))));
            }
        }
        //add return type
        String returnType = Signature.getReturnType(descriptor);
        if (!isPrimitiveTypeSignature(returnType)) {
            returnType = extractFullyQualifiedTopLevelType(returnType);
            packages.add(getPackage(returnType));
        }
    }

    // Is there more to extract from the constant pool??
    IConstantPoolEntry entry;
    IConstantPool pool = cfr.getConstantPool();
    int length = pool.getConstantPoolCount();
    for (int i = 1; i < length; i++) {
        switch (pool.getEntryKind(i)) {
        case IConstantPoolConstant.CONSTANT_Class:
            // add reference to the class
            entry = pool.decodeEntry(i);
            //note: may have to convert names like Ljava/lang/Object; to java.lang.Object
            String className = new String(entry.getClassInfoName()).replace('/', '.');
            className = className.indexOf(';') >= 0 ? extractFullyQualifiedTopLevelType(className) : className;
            packages.add(getPackage(className));
            break;

        case IConstantPoolConstant.CONSTANT_NameAndType:
            // add reference to the name and type
            entry = pool.decodeEntry(i);
            int descIndex = entry.getNameAndTypeInfoDescriptorIndex();
            if (pool.getEntryKind(descIndex) == IConstantPoolConstant.CONSTANT_Utf8) {
                entry = pool.decodeEntry(descIndex);
                char[] type = entry.getUtf8Value();
                if (type[0] == '(') {
                    // Method signature.

                    //add parameter types
                    String descriptor = new String(type);
                    String[] parameterTypes = Signature.getParameterTypes(descriptor);
                    for (int j = 0; j < parameterTypes.length; j++) {
                        if (!isPrimitiveTypeSignature(parameterTypes[j])) {
                            packages.add(getPackage(extractFullyQualifiedTopLevelType(parameterTypes[j])));
                        }
                    }
                    //add return type
                    String returnType = Signature.getReturnType(descriptor);
                    if (!isPrimitiveTypeSignature(returnType)) {
                        returnType = extractFullyQualifiedTopLevelType(returnType);
                        packages.add(getPackage(returnType));
                    }

                } else {
                    // Field type.
                    String typeString = new String(type);
                    if (!isPrimitiveTypeSignature(typeString)) {
                        packages.add(getPackage(extractFullyQualifiedTopLevelType(typeString)));
                    }
                }
            }
            break;
        }
    }
    packages.remove(""); // removes default package if it exists //$NON-NLS-1$
}

From source file:org.eclipse.pde.tools.internal.versioning.JavaClassVersionCompare.java

License:Open Source License

/**
 * compares two java classes denoted by <code>classFileReader1</code> and <code>classFileReader2</code>,
 * and check if there is any change from <code>classFileReader2</code> to <code>classFileReader1</code>.
 * /*from   ww w.j  a v a2s .c o m*/
 * @param classFileReader1
 * @param classFileReader2
 * @param monitor IProgressMonitor instance
 * @return compare result IStatus instance
 */
private IStatus compareJavaClasses(IClassFileReader classFileReader1, IClassFileReader classFileReader2,
        IProgressMonitor monitor) {
    try {
        monitor.beginTask("", 100); //$NON-NLS-1$
        // compare class names
        String name1 = charsToString(classFileReader1.getClassName());
        String name2 = charsToString(classFileReader2.getClassName());
        if (!name1.equals(name2)) {
            finalResult.merge(resultStatusHandler(IStatus.WARNING, IVersionCompare.PROCESS_ERROR_STATUS,
                    NLS.bind(Messages.JavaClassVersionCompare_differentClassNameMsg, name1, name2), null));
            return finalResult;
        }
        // worked 5%
        monitor.worked(5);
        // compare super classes
        checkSuperClasses(name1, classFileReader1.getSuperclassName(), classFileReader2.getSuperclassName());
        // worked 5%
        monitor.worked(5);
        // compare interfaces
        checkInterfaces(name1, generateList(classFileReader1.getInterfaceNames()),
                generateList(classFileReader2.getInterfaceNames()));
        // worked 5%
        monitor.worked(5);
        // compare modifier of classes
        checkClassModifiers(name1, classFileReader1.getAccessFlags(), classFileReader2.getAccessFlags());
        // worked 5%
        monitor.worked(5);
        // compare fields
        checkElements(name1, generateTable(classFileReader1.getFieldInfos()),
                generateTable(classFileReader2.getFieldInfos()));
        // worked 40%
        monitor.worked(40);
        // compare methods (40%)
        checkElements(name1, generateTable(classFileReader1.getMethodInfos()),
                generateTable(classFileReader2.getMethodInfos()));
        return finalResult;
    } finally {
        monitor.done();
    }
}