Example usage for org.eclipse.jdt.internal.core ClassFile getBytes

List of usage examples for org.eclipse.jdt.internal.core ClassFile getBytes

Introduction

In this page you can find the example usage for org.eclipse.jdt.internal.core ClassFile getBytes.

Prototype

@Override
    public byte[] getBytes() throws JavaModelException 

Source Link

Usage

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  ww .j  a  v  a 2s .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.j a  v a 2  s  .  c o  m
        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;
}