[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