[jboss-cvs] JBossAS SVN: r62506 - projects/aop/trunk/aop/src/main/org/jboss/aop.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Apr 24 06:21:40 EDT 2007


Author: kabir.khan at jboss.com
Date: 2007-04-24 06:21:39 -0400 (Tue, 24 Apr 2007)
New Revision: 62506

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
   projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceAdvisorDelegate.java
Log:
Fix failing tests

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java	2007-04-24 10:13:03 UTC (rev 62505)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/Advisor.java	2007-04-24 10:21:39 UTC (rev 62506)
@@ -701,6 +701,19 @@
       joinpoints.add(joinpoint);
    }
 
+   void addPerInstanceJoinpointAspect(Set joinpoints, AspectDefinition def)
+   {
+      initPerInstanceJoinpointAspectDefinitionsMap();
+      Set setJoinpoints = (Set) perInstanceJoinpointAspectDefinitions.get(def);
+      if (setJoinpoints == null)
+      {
+         setJoinpoints = new CopyOnWriteArraySet();
+         perInstanceJoinpointAspectDefinitions.put(def, setJoinpoints);
+         def.registerAdvisor(this);
+      }
+      setJoinpoints.addAll(joinpoints);
+   }
+   
    public void removePerInstanceJoinpointAspect(AspectDefinition def)
    {
       perInstanceJoinpointAspectDefinitions.remove(def);

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceAdvisorDelegate.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceAdvisorDelegate.java	2007-04-24 10:13:03 UTC (rev 62505)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/InstanceAdvisorDelegate.java	2007-04-24 10:21:39 UTC (rev 62506)
@@ -82,13 +82,19 @@
       if (getClassAdvisor() == null) return;
       if (aspects != null) return; // doublecheck I know, but I don't want to do synchronization if not needed
       //ClassAdvisor cadvisor = (ClassAdvisor) classAdvisor;
-      Set defs = getClassAdvisor().getPerInstanceAspectDefinitions();
       if (instanceAdvisor instanceof Advisor)
       {
          Advisor ia = (Advisor)instanceAdvisor;
          Set instanceDefs = ia.getPerInstanceAspectDefinitions();
-         defs.addAll(instanceDefs);
+         if (instanceDefs.size() > 0)
+         {
+            for (Iterator it = instanceDefs.iterator() ; it.hasNext() ; )
+            {
+               ia.addPerInstanceAspect((AspectDefinition)it.next());
+            }
+         }
       }
+      Set defs = getClassAdvisor().getPerInstanceAspectDefinitions();
       if (defs.size() > 0)
       {
          aspects = new WeakHashMap();
@@ -106,14 +112,23 @@
    {
       if (getClassAdvisor() == null) return;
       if (joinpointAspects != null) return; // doublecheck I know, but I don't want to do synchronization if not needed
-      Map jpAspects = getClassAdvisor().getPerInstanceJoinpointAspectDefinitions();
       if (instanceAdvisor instanceof Advisor)
       {
          Advisor ia = (Advisor)instanceAdvisor;
          Map instanceJpAspects = ia.getPerInstanceJoinpointAspectDefinitions();
-         jpAspects.putAll(instanceJpAspects);
+         
+         if (instanceJpAspects.size() > 0)
+         {
+            for (Iterator it = instanceJpAspects.keySet().iterator() ; it.hasNext() ; )
+            {
+               AspectDefinition def = (AspectDefinition) it.next();
+               Set joinpoints = (Set)instanceJpAspects.get(def);
+               ia.addPerInstanceJoinpointAspect(joinpoints, def);
+            }
+         }
       }
       
+      Map jpAspects = getClassAdvisor().getPerInstanceJoinpointAspectDefinitions();
       if (jpAspects.size() > 0)
       {
          joinpointAspects = new WeakHashMap();




More information about the jboss-cvs-commits mailing list