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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Oct 1 15:31:33 EDT 2008


Author: flavia.rainone at jboss.com
Date: 2008-10-01 15:31:33 -0400 (Wed, 01 Oct 2008)
New Revision: 79001

Modified:
   projects/aop/trunk/aop/src/main/org/jboss/aop/advice/ClassifiedBindingAndPointcutCollection.java
Log:
[JBAOP-655] Bug fixed. Now the pointcutInfo objects are created with the binding when add(Binding, AspectManager)
is called on the Classified collection.

Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/advice/ClassifiedBindingAndPointcutCollection.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/advice/ClassifiedBindingAndPointcutCollection.java	2008-10-01 19:16:13 UTC (rev 79000)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/advice/ClassifiedBindingAndPointcutCollection.java	2008-10-01 19:31:33 UTC (rev 79001)
@@ -480,14 +480,22 @@
     */
    public void add(AdviceBinding binding, AspectManager manager)
    {
-      addBinding(binding);
-      addGet(binding);
-      addSet(binding);
-      addConstruction(binding);
-      addConstructorExecution(binding);
-      addMethodExecution(binding);
-      addConstructorCall(binding);
-      addMethodCall(binding);
+      if (bindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
+      {
+         bindings = new LinkedHashMap<String, AdviceBinding>();
+      }
+      bindings.put(binding.getName(), binding);
+      // create the pointcutinfo outside of methods to avoid duplicate creation
+      // of pointcut infos
+      PointcutInfo pointcutInfo = new PointcutInfo(binding.getPointcut(), binding,
+            AspectManager.hasTransformationStarted());
+      addGet(binding, pointcutInfo);
+      addSet(binding, pointcutInfo);
+      addConstruction(binding, pointcutInfo);
+      addConstructorExecution(binding, pointcutInfo);
+      addMethodExecution(binding, pointcutInfo);
+      addConstructorCall(binding, pointcutInfo);
+      addMethodCall(binding, pointcutInfo);
       updatePointcutStats(binding.getPointcut(), manager);
    }
 
@@ -623,19 +631,8 @@
       return set;
    }
    
-   private void addBinding(AdviceBinding binding)
+   private void addGet(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
-      if (bindings == UnmodifiableEmptyCollections.EMPTY_LINKED_HASHMAP)
-      {
-         bindings = new LinkedHashMap<String, AdviceBinding>();
-      }
-      bindings.put(binding.getName(), binding);
-      
-      addPointcut(binding.getPointcut());
-   }
-   
-   private void addGet(AdviceBinding binding)
-   {
       if (BindingClassifier.isGet(binding))
       {
          if (fieldReadBindings == UnmodifiableEmptyCollections.EMPTY_ARRAYLIST)
@@ -643,10 +640,11 @@
             fieldReadBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.fieldReadBindings.add(binding);
+         this.addFieldReadPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addSet(AdviceBinding binding)
+   private void addSet(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isSet(binding))
       {
@@ -655,10 +653,11 @@
             fieldWriteBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.fieldWriteBindings.add(binding);
+         this.addFieldWritePointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addConstruction(AdviceBinding binding)
+   private void addConstruction(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isConstruction(binding))
       {
@@ -667,10 +666,11 @@
             constructionBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.constructionBindings.add(binding);
+         this.addConstructionPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addConstructorExecution(AdviceBinding binding)
+   private void addConstructorExecution(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isConstructorExecution(binding))
       {
@@ -679,10 +679,11 @@
             constructorExecutionBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.constructorExecutionBindings.add(binding);
+         this.addConstructorExecutionPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addMethodExecution(AdviceBinding binding)
+   private void addMethodExecution(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isMethodExecution(binding))
       {
@@ -691,10 +692,11 @@
             methodExecutionBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.methodExecutionBindings.add(binding);
+         this.addMethodExecutionPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addMethodCall(AdviceBinding binding)
+   private void addMethodCall(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isMethodCall(binding))
       {
@@ -703,10 +705,11 @@
             methodCallBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.methodCallBindings.add(binding);
+         this.addMethodCallPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    
-   private void addConstructorCall(AdviceBinding binding)
+   private void addConstructorCall(AdviceBinding binding, PointcutInfo pointcutInfo)
    {
       if (BindingClassifier.isConstructorCall(binding))
       {
@@ -715,6 +718,7 @@
             constructorCallBindings = new CopyOnWriteArraySet<AdviceBinding>();
          }
          this.constructorCallBindings.add(binding);
+         this.addConstructorCallPointcut(pointcutInfo.getPointcut(), pointcutInfo);
       }
    }
    




More information about the jboss-cvs-commits mailing list