Example usage for org.aspectj.weaver AdviceKind AfterReturning

List of usage examples for org.aspectj.weaver AdviceKind AfterReturning

Introduction

In this page you can find the example usage for org.aspectj.weaver AdviceKind AfterReturning.

Prototype

AdviceKind AfterReturning

To view the source code for org.aspectj.weaver AdviceKind AfterReturning.

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
 * /*ww w .j  a  va  2  s  .c  om*/
 * @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;
}