Example usage for org.aspectj.asm IProgramElement getParent

List of usage examples for org.aspectj.asm IProgramElement getParent

Introduction

In this page you can find the example usage for org.aspectj.asm IProgramElement getParent.

Prototype

public IProgramElement getParent();

Source Link

Usage

From source file:edu.utdallas.fdaf.aspectj.reverse.AspectJ2UMLConverter.java

License:Open Source License

private String printInfoOn(IProgramElement element) {
    String info = printNameTypeOf(element);
    IProgramElement parent = element.getParent();
    if (parent != null) {
        info += ": child of " + printInfoOn(parent);
    } else {/*from   w  w  w  .j  av a 2  s.  c  o  m*/
        info += ": childless";
    }
    return info;
}

From source file:org.caesarj.ui.marker.AdviceMarkerGenerator.java

License:Open Source License

/**
 * Used to add Markers to the editor./*  w  w w.  jav  a  2 s. co m*/
 * @param node - CaesarProgramElement representing the Position where to add the Marker
 * @param relation - defines the Marker
 */
private void setMarkers(IProgramElement parent) {
    Logger.getLogger(this.getClass()).info("setMarkers() for relation node");

    String messageLocal = "";
    HashMap args = new HashMap();
    List lElems = new ArrayList();

    Iterator i = parent.getChildren().iterator();
    while (i.hasNext()) {

        IProgramElement elem = (IProgramElement) i.next();
        if (elem instanceof LinkNode) {
            // Add if it is a link node
            LinkNode node = (LinkNode) elem;

            Iterator i2 = node.getChildren().iterator();
            while (i2.hasNext()) {

                IProgramElement elem2 = (IProgramElement) i2.next();
                if (elem2 instanceof LinkNode) {
                    // Add if it is a link node
                    IProgramElement target = ((LinkNode) elem2).getTargetElement();

                    //if (!lElems.contains(target)) {
                    if (target.getKind().equals(IProgramElement.Kind.ADVICE)) {
                        args.put(AdviceMarker.ID, "AdviceLink");
                    } else {
                        args.put(AdviceMarker.ID, "MethodeLink");
                    }

                    if (!messageLocal.equals("")) {
                        messageLocal += ", ";
                    }

                    if (target.getParent() != null) {
                        String parentName = target.getParent().getName();
                        parentName = parentName.replaceAll("_Impl.*", "");
                        messageLocal += parentName + "." + target.getName();
                    } else {
                        messageLocal += target.getName();
                    }
                    lElems.add(target);
                    //}
                }
            }
        }
    }

    if (!lElems.isEmpty()) {
        IResource resource = ProjectProperties
                .findResource(parent.getSourceLocation().getSourceFile().getAbsolutePath(), project);
        args.put(IMarker.LINE_NUMBER, new Integer(parent.getSourceLocation().getLine()));
        args.put(IMarker.MESSAGE, messageLocal);
        args.put(AdviceMarker.LINKS, lElems.toArray(new IProgramElement[0]));
        try {
            IMarker marker = resource.createMarker(AdviceMarker.ADVICEMARKER);
            marker.setAttributes(args);
        } catch (CoreException e) {
            Logger.getLogger(this.getClass()).error("FEHLER BEIM MARKER ERZEUGEN", e); //$NON-NLS-1$
        }
    }
}

From source file:org.eclipse.ajdt.core.codeconversion.AspectsConvertingParser.java

License:Open Source License

/**
 * returns reasonable text for all ITDs and ITITs
 * @param currentTypeName/* ww  w .  j  a  va 2  s  .  co m*/
 * @return
 */
protected char[] getInterTypeDecls(char[] currentTypeName) {
    if (unit != null && currentTypeName != null && currentTypeName.length > 0) {
        AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForJavaElement(unit);
        if (model.hasModel()) {
            IType type = getHandle(new String(currentTypeName));
            if (type.exists()) {
                List<IJavaElement> rels = model.getRelationshipsForElement(type,
                        AJRelationshipManager.ASPECT_DECLARATIONS);
                StringBuffer sb = new StringBuffer("\n\t");
                for (IJavaElement je : rels) {
                    IProgramElement declareElt = model.javaElementToProgramElement(je);
                    if (declareElt != null && declareElt.getParent() != null
                            && declareElt.getKind().isInterTypeMember()) { // checks to see if this element is valid
                        // should be fully qualified type and simple name

                        int lastDot = declareElt.getName().lastIndexOf('.');
                        String name = declareElt.getName().substring(lastDot + 1);

                        if (declareElt.getKind() == IProgramElement.Kind.INTER_TYPE_FIELD) {
                            createITDFieldText(sb, declareElt, name);
                        } else if (declareElt.getKind() == IProgramElement.Kind.INTER_TYPE_METHOD
                                || declareElt.getKind() == IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR) {
                            createITDMethodText(currentTypeName, sb, declareElt, name);
                        }
                    } else if (declareElt.getKind() == IProgramElement.Kind.CLASS) {
                        // Intertype Inner type
                        // add the declaration and all fields/methhods
                        createITITText(sb, declareElt);
                    }
                }
                return sb.toString().toCharArray();
            }
        }
    }
    return new char[0];
}

From source file:org.eclipse.ajdt.core.parserbridge.ITDInserter.java

License:Open Source License

private MethodDeclaration createMethod(IProgramElement method, TypeDeclaration type, IType handle) {
    MethodDeclaration decl = new MethodDeclaration(type.compilationResult);
    decl.scope = new MethodScope(type.scope, decl, true);

    String[] split = method.getName().split("\\.");
    decl.selector = split[split.length - 1].toCharArray();
    decl.modifiers = method.getRawModifiers();

    decl.returnType = createTypeReference(method.getCorrespondingType(true));
    decl.modifiers = method.getRawModifiers();
    Argument[] args = method.getParameterTypes() != null ? new Argument[method.getParameterTypes().size()]
            : new Argument[0];
    try {//from w  w w.j  av a 2s. co  m
        ErasedTypeSignature sig = null;
        if (handle != null) {
            AJWorldFacade world = new AJWorldFacade(handle.getJavaProject().getProject());
            sig = world.getMethodTypeSignatures(
                    Signature.createTypeSignature(handle.getFullyQualifiedName(), true), method);
        }
        if (sig == null) {
            String[] params = new String[method.getParameterTypes().size()];
            for (int i = 0; i < params.length; i++) {
                params[i] = new String(Signature.getTypeErasure((char[]) method.getParameterTypes().get(i)));
            }
            sig = new ErasedTypeSignature(method.getCorrespondingTypeSignature(), params);
        }

        List<String> pNames = method.getParameterNames();
        // bug 270123... no parameter names if coming in from a jar and
        // not build with debug info...mock it up.
        if (pNames == null || pNames.size() != args.length) {
            pNames = new ArrayList<String>(args.length);
            for (int i = 0; i < args.length; i++) {
                pNames.add("args" + i);
            }
        }
        for (int i = 0; i < args.length; i++) {
            args[i] = new Argument(((String) pNames.get(i)).toCharArray(), 0,
                    createTypeReference(Signature.getElementType(sig.paramTypes[i])), 0);
        }

        decl.returnType = createTypeReferenceFromSignature(sig.returnTypeSig);
        decl.typeParameters = createTypeParameters(sig.typeParameters);
    } catch (Exception e) {
        AJLog.log("Exception occurred in ITDInserter.createMethod().  (Ignoring)");
        AJLog.log("Relevant method: " + method.getParent().getName() + "." + method.getName());
        List<String> pNames = method.getParameterNames();
        // bug 270123... no parameter names if coming in from a jar and
        // not build with debug info...mock it up.
        if (pNames == null || pNames.size() != args.length) {
            pNames = new ArrayList<String>(args.length);
            for (int i = 0; i < args.length; i++) {
                pNames.add("args" + i);
            }
        }
        for (int i = 0; i < args.length; i++) {
            args[i] = new Argument(((String) pNames.get(i)).toCharArray(), 0,
                    createTypeReference(new String((char[]) method.getParameterTypes().get(i))), 0);
        }
    }
    decl.arguments = args;
    return decl;
}