]> source.dussan.org Git - aspectj.git/commitdiff
Fixed bug#91912 added softens / softened by relationship to ASM
authormkersten <mkersten>
Thu, 21 Apr 2005 17:00:18 +0000 (17:00 +0000)
committermkersten <mkersten>
Thu, 21 Apr 2005 17:00:18 +0000 (17:00 +0000)
asm/src/org/aspectj/asm/IRelationship.java
weaver/src/org/aspectj/weaver/AsmRelationshipProvider.java

index 4a33d4fb0175a72cb3d6d78ed805e10b8dc12a6f..41c25ba748e870a20958e5b21edf88b95d865e9c 100644 (file)
@@ -38,8 +38,6 @@ public interface IRelationship extends Serializable {
         */
        public static class Kind implements Serializable {
                
-               public static final Kind DECLARE_WARNING       = new Kind("declare warning");
-               public static final Kind DECLARE_ERROR         = new Kind("declare error");
                public static final Kind ADVICE_AROUND         = new Kind("around advice");
                public static final Kind ADVICE_AFTERRETURNING = new Kind("after returning advice");
                public static final Kind ADVICE_AFTERTHROWING  = new Kind("after throwing advice");
@@ -47,11 +45,14 @@ public interface IRelationship extends Serializable {
                public static final Kind ADVICE_BEFORE         = new Kind("before advice");
                public static final Kind ADVICE                = new Kind("advice");
                public static final Kind DECLARE               = new Kind("declare");
-               public static final Kind DECLARE_INTER_TYPE    = new Kind("inter-type declaration");
-               public static final Kind USES_POINTCUT                  = new Kind("uses pointcut");
+        public static final Kind DECLARE_WARNING       = new Kind("declare warning");
+        public static final Kind DECLARE_ERROR         = new Kind("declare error");
+        public static final Kind DECLARE_SOFT          = new Kind("declare soft");
+        public static final Kind DECLARE_INTER_TYPE    = new Kind("inter-type declaration");
+               public static final Kind USES_POINTCUT             = new Kind("uses pointcut");
                
                public static final Kind[] ALL = { 
-                       DECLARE_WARNING, DECLARE_ERROR,
+                       DECLARE_WARNING, DECLARE_ERROR, DECLARE_SOFT,
                        ADVICE_AROUND,ADVICE_AFTERRETURNING,ADVICE_AFTERTHROWING,ADVICE_AFTER,ADVICE_BEFORE,
                        ADVICE, DECLARE, DECLARE_INTER_TYPE, USES_POINTCUT };
                        
index 7a1bbba438ca0d79140e610e73a9c2c716d7a495..8d3f381699db27d7af4c8869810282dff4d76c3c 100644 (file)
@@ -40,7 +40,9 @@ public class AsmRelationshipProvider {
        public static final String ADVISED_BY = "advised by";
        public static final String DECLARES_ON = "declares on";
        public static final String DECLAREDY_BY = "declared by";
-       public static final String MATCHED_BY = "matched by";
+    public static final String SOFTENS = "softens";
+    public static final String SOFTENED_BY = "softened by"; 
+    public static final String MATCHED_BY = "matched by";
        public static final String MATCHES_DECLARE = "matches declare";
        public static final String INTER_TYPE_DECLARES = "declared on";
        public static final String INTER_TYPE_DECLARED_BY = "aspect declarations";
@@ -205,14 +207,21 @@ public class AsmRelationshipProvider {
                        if (adviceHandle != null && targetNode != null) {
                
                                if (targetNode != null) {
-                                       String targetHandle = targetNode.getHandleIdentifier(); 
-                               
-                                       IRelationship foreward = mapper.get(adviceHandle, IRelationship.Kind.ADVICE, ADVISES,runtimeTest,true);
-                                       if (foreward != null) foreward.addTarget(targetHandle);//foreward.getTargets().add(targetHandle);
-                                       
-                                       IRelationship back = mapper.get(targetHandle, IRelationship.Kind.ADVICE, ADVISED_BY,runtimeTest,true);
-                                       if (back != null)     back.addTarget(adviceHandle);//back.getTargets().add(adviceHandle);
-                               }
+                    String targetHandle = targetNode.getHandleIdentifier(); 
+                    if (advice.getKind().equals(AdviceKind.Softener)) {
+                        IRelationship foreward = mapper.get(adviceHandle, IRelationship.Kind.DECLARE_SOFT, SOFTENS,runtimeTest,true);
+                        if (foreward != null) foreward.addTarget(targetHandle);//foreward.getTargets().add(targetHandle);
+                        
+                        IRelationship back = mapper.get(targetHandle, IRelationship.Kind.DECLARE, SOFTENED_BY,runtimeTest,true);
+                        if (back != null)     back.addTarget(adviceHandle);//back.getTargets().add(adviceHandle);
+                    } else {
+                                       IRelationship foreward = mapper.get(adviceHandle, IRelationship.Kind.ADVICE, ADVISES,runtimeTest,true);
+                                       if (foreward != null) foreward.addTarget(targetHandle);//foreward.getTargets().add(targetHandle);
+                                       
+                                       IRelationship back = mapper.get(targetHandle, IRelationship.Kind.ADVICE, ADVISED_BY,runtimeTest,true);
+                                       if (back != null)     back.addTarget(adviceHandle);//back.getTargets().add(adviceHandle);
+                    }
+                }
                        }
 
                }