[jboss-cvs] JBossAS SVN: r67901 - in trunk/ejb3/src/main/org/jboss: ejb3 and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Dec 4 12:22:03 EST 2007


Author: wolfc
Date: 2007-12-04 12:22:03 -0500 (Tue, 04 Dec 2007)
New Revision: 67901

Modified:
   trunk/ejb3/src/main/org/jboss/ejb/InterceptorsImpl.java
   trunk/ejb3/src/main/org/jboss/ejb3/Ejb3DescriptorHandler.java
Log:
EJBTHREE-1067: using correct classes from interceptor binding

Modified: trunk/ejb3/src/main/org/jboss/ejb/InterceptorsImpl.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb/InterceptorsImpl.java	2007-12-04 17:18:11 UTC (rev 67900)
+++ trunk/ejb3/src/main/org/jboss/ejb/InterceptorsImpl.java	2007-12-04 17:22:03 UTC (rev 67901)
@@ -21,8 +21,8 @@
  */ 
 package org.jboss.ejb;
 
-import java.util.ArrayList;
-import java.util.List;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
 import javax.interceptor.Interceptors;
 
@@ -34,20 +34,20 @@
  */
 public class InterceptorsImpl implements Interceptors
 {
-   private List values = new ArrayList();
+   private Set<Class<?>> values = new LinkedHashSet<Class<?>>();
 
    public InterceptorsImpl()
    {
    }
 
-   public Class[] value()
+   public Class<?>[] value()
    {
-      Class[] result = new Class[values.size()];
+      Class<?>[] result = new Class[values.size()];
       values.toArray(result);
       return result;
    }
 
-   public void addValue(Class value)
+   public void addValue(Class<?> value)
    {
       values.add(value);
    }
@@ -66,7 +66,7 @@
       
       InterceptorsImpl impl = new InterceptorsImpl();
       
-      for (Class clazz : interceptors.value())
+      for (Class<?> clazz : interceptors.value())
       {
          impl.addValue(clazz);
       }
@@ -77,4 +77,10 @@
    {
       return Interceptors.class;
    }
+   
+   @Override
+   public String toString()
+   {
+      return super.toString() + "{value=" + values + "}";
+   }
 }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/Ejb3DescriptorHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/Ejb3DescriptorHandler.java	2007-12-04 17:18:11 UTC (rev 67900)
+++ trunk/ejb3/src/main/org/jboss/ejb3/Ejb3DescriptorHandler.java	2007-12-04 17:22:03 UTC (rev 67901)
@@ -226,6 +226,38 @@
    }
 
    /**
+    * @param original
+    * @param binding
+    * @return
+    */
+   private Interceptors createInterceptorsFromInterceptorBinding(Interceptors original, InterceptorBindingMetaData binding) throws ClassNotFoundException
+   {
+      assert binding != null : "binding is null";
+      
+      InterceptorsImpl impl;
+      InterceptorClassesMetaData classes;
+      if (binding.isTotalOrdering())
+      {
+         impl = new InterceptorsImpl();
+         classes = binding.getInterceptorOrder();
+      }
+      else
+      {
+         impl = InterceptorsImpl.getImpl(original);
+         classes = binding.getInterceptorClasses();
+      }
+      if (classes != null)
+      {
+         for (String name : classes)
+         {
+            Class<?> clazz = di.getClassLoader().loadClass(name);
+            impl.addValue(clazz);
+         }
+      }
+      return impl;
+   }
+   
+   /**
     * Find all enterprise beans using the given ejb class.
     * 
     * @param dd         the dd to search in
@@ -1203,22 +1235,13 @@
    {
       Interceptors interceptors = (Interceptors) container
             .resolveAnnotation(Interceptors.class);
-      InterceptorsImpl impl = InterceptorsImpl.getImpl(interceptors);
       if (binding != null)
       {
-         InterceptorClassesMetaData classes = binding.getInterceptorClasses();
-         if (classes != null)
-         {
-            for (String name : classes)
-            {
-               Class<?> clazz = di.getClassLoader().loadClass(name);
-               impl.addValue(clazz);
-            }
-         }
+         Interceptors impl = createInterceptorsFromInterceptorBinding(interceptors, binding);
+
+         addClassAnnotation(container, impl.annotationType(), impl);
       }
 
-      addClassAnnotation(container, impl.annotationType(), impl);
-
       boolean exclude = false;
       if (binding != null)
          exclude = binding.isExcludeDefaultInterceptors();
@@ -1276,23 +1299,14 @@
          {
             Interceptors interceptors = (Interceptors) container
                   .resolveAnnotation(method, Interceptors.class);
-            InterceptorsImpl impl = InterceptorsImpl.getImpl(interceptors);
             if (binding != null)
             {
-               InterceptorClassesMetaData interceptorClasses = binding.getInterceptorClasses();
-               if (interceptorClasses != null)
-               {
-                  for (String name : interceptorClasses)
-                  {
-                     Class<?> clazz = di.getClassLoader().loadClass(name);
-                     impl.addValue(clazz);
-                  }
-               }
+               Interceptors impl = createInterceptorsFromInterceptorBinding(interceptors, binding);
+               log.debug("adding " + Interceptors.class.getName()
+                     + " method annotation to " + method);
+               container.getAnnotations().addAnnotation(method,
+                     Interceptors.class, impl);
             }
-            log.debug("adding " + Interceptors.class.getName()
-                  + " method annotation to " + method);
-            container.getAnnotations().addAnnotation(method,
-                  Interceptors.class, impl);
 
             boolean excludeDefault = false;
             if (binding != null) 




More information about the jboss-cvs-commits mailing list