Example usage for org.aspectj.asm IRelationship hasRuntimeTest

List of usage examples for org.aspectj.asm IRelationship hasRuntimeTest

Introduction

In this page you can find the example usage for org.aspectj.asm IRelationship hasRuntimeTest.

Prototype

public boolean hasRuntimeTest();

Source Link

Usage

From source file:org.eclipse.ajdt.core.model.AJModel.java

License:Open Source License

/**
 * @param proj the project whose relationships we are looking for
 * @param relTypes the relationship types we are looking for
 * @return all DECLARED_ON relationships for the given java element
 * //  w w  w. ja v a 2  s.  c o m
 * @deprecated see bug 253245
 */
public List/*AJRelationship*/ getAllRelationships(IProject proj, AJRelationshipType[] relTypes) {
    AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(proj);
    if (model.hasModel()) { // returns false if project is not built
        List/*IRelationship*/ allRels = model.getRelationshipsForProject(relTypes);
        List/*AJRelationship*/ ajRels = new ArrayList(allRels.size());
        for (Iterator relIter = allRels.iterator(); relIter.hasNext();) {
            IRelationship rel = (IRelationship) relIter.next();
            IJavaElement source = model.programElementToJavaElement(rel.getSourceHandle());
            if (source instanceof IntertypeElement) {
                for (Iterator targetIter = rel.getTargets().iterator(); targetIter.hasNext();) {
                    String target = (String) targetIter.next();
                    // ensure a Java handle is used here.
                    // because the things being compared to are 
                    // Java handles.
                    // This is avoiding problems when Type is in a .aj file
                    IJavaElement elt = model.programElementToJavaElement(target);
                    elt = JavaCore.create(AspectJCore.convertToJavaCUHandle(elt.getHandleIdentifier(), elt));
                    if (elt != null) {
                        // will be null if type is an aspect type or contained in an aspect type
                        AJRelationship ajRel = new AJRelationship(source,
                                AJRelationshipManager.toRelationshipType(rel.getName()), elt,
                                rel.hasRuntimeTest());
                        ajRels.add(ajRel);
                    }
                }
            }
        }
        return ajRels;
    } else {
        return Collections.EMPTY_LIST;
    }
}

From source file:org.eclipse.ajdt.core.model.AJProjectModelFacade.java

License:Open Source License

public boolean hasRuntimeTest(IJavaElement je) {
    if (!isInitialized) {
        return false;
    }//  www . ja va 2 s .  com
    IProgramElement ipe = javaElementToProgramElement(je);
    List<IRelationship> relationships = relationshipMap.get(ipe);
    if (relationships != null) {
        for (IRelationship rel : relationships) {
            if (rel.hasRuntimeTest()) {
                return true;
            }
        }
    }
    return false;
}

From source file:org.eclipse.ajdt.core.tests.model.AJModelTest2.java

License:Open Source License

/**
 * Tests for the existence of a particular "advised by" relationship with a
 * runtime test, and one without.//from  ww w  .ja va  2s  .c om
 * 
 * @throws Exception
 */
public void testHasRuntimeTest() throws Exception {
    IProject project = createPredefinedProject("MarkersTest"); //$NON-NLS-1$
    AJRelationshipType[] rels = new AJRelationshipType[] { AJRelationshipManager.ADVISED_BY };
    AJProjectModelFacade model = AJProjectModelFactory.getInstance().getModelForProject(project);
    List<IRelationship> allRels = model.getRelationshipsForProject(rels);
    boolean gotBeforeAdviceWithoutRuntimeTest = false;
    boolean gotAroundAdviceWithRuntimeTest = false;
    for (IRelationship rel : allRels) {
        IJavaElement source = model.programElementToJavaElement(rel.getSourceHandle());
        if (source.getElementName().equals("bar")) { //$NON-NLS-1$
            for (String targetStr : rel.getTargets()) {
                IJavaElement target = model.programElementToJavaElement(targetStr);
                if (target.getElementName().equals("before") //$NON-NLS-1$
                        && !rel.hasRuntimeTest()) {
                    gotBeforeAdviceWithoutRuntimeTest = true;
                } else if (target.getElementName().equals("around") //$NON-NLS-1$
                        && rel.hasRuntimeTest()) {
                    gotAroundAdviceWithRuntimeTest = true;
                }
            }
        }
    }
    assertTrue("Didn't find \"bar\" element advised by before advice without a runtime test", //$NON-NLS-1$
            gotBeforeAdviceWithoutRuntimeTest);
    assertTrue("Didn't find \"bar\" element advised by around advice with a runtime test", //$NON-NLS-1$
            gotAroundAdviceWithRuntimeTest);
}

From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java

License:Open Source License

private void createMarker(IResource resource, int lineNumber, List<IRelationship> relationships) {
    String markerType = null;/*from w w w.  j a  va  2  s .c  o m*/
    boolean hasRuntime = false;
    for (IRelationship relationship : relationships) {
        hasRuntime |= relationship.hasRuntimeTest();
        String customMarkerType = getCustomMarker(relationship);
        if (customMarkerType != null) {
            // Create a marker of the saved type or don't create one.
            // user has configured a custom marker
            createCustomMarker(resource, customMarkerType, lineNumber, relationship);

        } else {
            // must repeat for each target since
            // each target may be of a different type
            List<String> targets = relationship.getTargets();
            for (String target : targets) {
                String markerTypeForRelationship = getMarkerTypeForRelationship(relationship, target);
                if (markerTypeForRelationship != null) {
                    if (markerType == null) {
                        markerType = markerTypeForRelationship;
                    } else if (!markerType.equals(markerTypeForRelationship)) {
                        markerType = getCombinedMarkerType(markerType, markerTypeForRelationship, hasRuntime);
                    }
                }
            }
        }
    } // end for

    // Create the marker
    if (markerType != null) {
        try {
            IMarker marker = resource.createMarker(markerType);
            marker.setAttribute(IMarker.LINE_NUMBER, lineNumber);
            String label;
            int numTargets = getNumTargets(relationships);
            if (numTargets == 1) {
                label = getMarkerLabel(relationships);
            } else {
                label = getMultipleMarkersLabel(numTargets);
            }
            marker.setAttribute(IMarker.MESSAGE, label);
            marker.setAttribute(IMarker.PRIORITY, IMarker.PRIORITY_HIGH);
        } catch (CoreException e) {
        }
    }

}

From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java

License:Open Source License

/**
 * Get the marker type that should be used for the given relationship
 * /*w w  w .  j a v a  2 s  . co  m*/
 * @param relationship
 * @param target
 * @return
 */
private String getMarkerTypeForRelationship(IRelationship relationship, String target) {
    String name = relationship.getName();
    boolean runtimeTest = relationship.hasRuntimeTest();
    String markerType;
    if (name.equals(AsmRelationshipProvider.ADVISED_BY)) {
        IProgramElement advice = model.getProgramElement(target);
        AdviceKind ak;
        if (advice.getExtraInfo() != null) {
            ak = AdviceKind.stringToKind(advice.getExtraInfo().getExtraAdviceInformation());
        } else {
            ak = null;
        }
        if (runtimeTest) {
            if (ak == null) {
                markerType = IAJModelMarker.DYNAMIC_ADVICE_MARKER;
            } else if (ak == AdviceKind.Before) {
                markerType = IAJModelMarker.DYNAMIC_BEFORE_ADVICE_MARKER;
            } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning
                    || ak == AdviceKind.AfterThrowing) {
                markerType = IAJModelMarker.DYNAMIC_AFTER_ADVICE_MARKER;
            } else if (ak == AdviceKind.Around) {
                markerType = IAJModelMarker.DYNAMIC_AROUND_ADVICE_MARKER;
            } else {
                markerType = IAJModelMarker.DYNAMIC_ADVICE_MARKER;
            }
        } else { // no runtime test
            if (ak == null) {
                markerType = IAJModelMarker.ADVICE_MARKER;
            } else if (ak == AdviceKind.Before) {
                markerType = IAJModelMarker.BEFORE_ADVICE_MARKER;
            } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning
                    || ak == AdviceKind.AfterThrowing) {
                markerType = IAJModelMarker.AFTER_ADVICE_MARKER;
            } else if (ak == AdviceKind.Around) {
                markerType = IAJModelMarker.AROUND_ADVICE_MARKER;
            } else {
                markerType = IAJModelMarker.ADVICE_MARKER;
            }
        }
    } else if (name.equals(AsmRelationshipProvider.ADVISES)) {
        IProgramElement advice = model.getProgramElement(relationship.getSourceHandle());
        AdviceKind ak;
        if (advice.getExtraInfo() != null) {
            ak = AdviceKind.stringToKind(advice.getExtraInfo().getExtraAdviceInformation());
        } else {
            ak = null;
            // hmmm...sometmes ExtradviceInformtion is null.  
            // try to get the advice kind by the name
            if (advice.getName().startsWith("before")) {
                ak = AdviceKind.Before;
            } else if (advice.getName().startsWith("after")) {
                ak = AdviceKind.After;
            } else if (advice.getName().startsWith("around")) {
                ak = AdviceKind.Around;
            }
        }
        if (runtimeTest) {
            if (ak == null) {
                markerType = IAJModelMarker.SOURCE_DYNAMIC_ADVICE_MARKER;
            } else if (ak == AdviceKind.Before) {
                markerType = IAJModelMarker.SOURCE_DYNAMIC_BEFORE_ADVICE_MARKER;
            } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning
                    || ak == AdviceKind.AfterThrowing) {
                markerType = IAJModelMarker.SOURCE_DYNAMIC_AFTER_ADVICE_MARKER;
            } else if (ak == AdviceKind.Around) {
                markerType = IAJModelMarker.SOURCE_DYNAMIC_AROUND_ADVICE_MARKER;
            } else {
                markerType = IAJModelMarker.SOURCE_DYNAMIC_ADVICE_MARKER;
            }

        } else { // no runtime test 
            if (ak == null) {
                markerType = IAJModelMarker.SOURCE_ADVICE_MARKER;
            } else if (ak == AdviceKind.Before) {
                markerType = IAJModelMarker.SOURCE_BEFORE_ADVICE_MARKER;
            } else if (ak == AdviceKind.After || ak == AdviceKind.AfterReturning
                    || ak == AdviceKind.AfterThrowing) {
                markerType = IAJModelMarker.SOURCE_AFTER_ADVICE_MARKER;
            } else if (ak == AdviceKind.Around) {
                markerType = IAJModelMarker.SOURCE_AROUND_ADVICE_MARKER;
            } else {
                markerType = IAJModelMarker.SOURCE_ADVICE_MARKER;
            }
        }
    } else if (name.equals(AsmRelationshipProvider.ANNOTATED_BY)
            || name.equals(AsmRelationshipProvider.SOFTENED_BY)
            || name.equals(AsmRelationshipProvider.INTER_TYPE_DECLARED_BY)) {
        // note that we ignore MATCHES_DECLARE because that is taken care of
        // by error and warning markers
        markerType = IAJModelMarker.ITD_MARKER;
    } else if (name.equals(AsmRelationshipProvider.ANNOTATES)
            || name.equals(AsmRelationshipProvider.INTER_TYPE_DECLARES)
            || name.equals(AsmRelationshipProvider.SOFTENS)
            || name.equals(AsmRelationshipProvider.MATCHED_BY)) {
        markerType = IAJModelMarker.SOURCE_ITD_MARKER;

    } else {
        markerType = null;
    }
    return markerType;
}

From source file:org.eclipse.ajdt.internal.ui.markers.UpdateAJMarkers.java

License:Open Source License

/**
 * Get a label for the given relationship
 * //from  w  ww .  java  2s . co  m
 * @param relationship
 * @return
 */
private String getMarkerLabel(IRelationship relationship) {
    IProgramElement target = model.getProgramElement((String) relationship.getTargets().get(0));
    return relationship.getName() + " " //$NON-NLS-1$
            + (target != null ? target.toLinkLabelString(false) : "null")
            + (relationship.hasRuntimeTest() ? " " + //$NON-NLS-1$
                    UIMessages.AspectJEditor_runtimetest : ""); //$NON-NLS-1$
}