Example usage for org.aspectj.weaver.model AsmRelationshipProvider MATCHED_BY

List of usage examples for org.aspectj.weaver.model AsmRelationshipProvider MATCHED_BY

Introduction

In this page you can find the example usage for org.aspectj.weaver.model AsmRelationshipProvider MATCHED_BY.

Prototype

String MATCHED_BY

To view the source code for org.aspectj.weaver.model AsmRelationshipProvider MATCHED_BY.

Click Source Link

Usage

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  .  jav  a 2 s. c  o 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;
}