[jboss-cvs] JBossAS SVN: r84049 - in projects/ejb3/trunk: plugin and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Feb 10 06:55:27 EST 2009
Author: jaikiran
Date: 2009-02-10 06:55:26 -0500 (Tue, 10 Feb 2009)
New Revision: 84049
Modified:
projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/registry/InterceptorRegistry.java
projects/ejb3/trunk/plugin/pom.xml
Log:
EJBTHREE-1709 Added the missing check for applicable interceptors
Modified: projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/registry/InterceptorRegistry.java
===================================================================
--- projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/registry/InterceptorRegistry.java 2009-02-10 11:30:48 UTC (rev 84048)
+++ projects/ejb3/trunk/interceptors/src/main/java/org/jboss/ejb3/interceptors/registry/InterceptorRegistry.java 2009-02-10 11:55:26 UTC (rev 84049)
@@ -41,53 +41,51 @@
/**
* The interceptor registry for a given EJB.
- *
+ *
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @version $Revision: $
*/
public class InterceptorRegistry
{
private static final Logger log = Logger.getLogger(InterceptorRegistry.class);
-
+
private Advisor advisor;
-
+
private List<Class<?>> interceptorClasses = new ArrayList<Class<?>>();
private List<Class<?>> readOnlyInterceptorClasses = Collections.unmodifiableList(interceptorClasses);
-
+
/**
* Interceptors who are interested in lifecycle callbacks.
*/
private List<Class<?>> lifecycleInterceptorClasses = new ArrayList<Class<?>>();
private List<Class<?>> readOnlyLifecycleInterceptorClasses = Collections.unmodifiableList(lifecycleInterceptorClasses);
-
+
private Map<Method, List<Class<?>>> applicableInterceptorClasses = new HashMap<Method, List<Class<?>>>();
-
+
public InterceptorRegistry(Advisor advisor)
{
assert advisor != null : "advisor is null";
-
+
this.advisor = advisor;
-
+
initialize();
}
-
+
public List<Class<?>> getApplicableInterceptorClasses(Method method)
{
List<Class<?>> methodApplicableInterceptorClasses = applicableInterceptorClasses.get(method);
- //TODO
- //FIXME: This assertion is valid, but EJB3 Core needs to declare virtual methods without interceptors
- // such that they make the Map of MethodHashes, and these then get improperly placed in the
- // Joinpoint Map, which ends up here...
- //assert methodApplicableInterceptorClasses != null : "applicable interceptors is non-existent for " + method;
- log.warn("applicable interceptors is non-existent for " + method);
+ if (methodApplicableInterceptorClasses == null)
+ {
+ log.warn("applicable interceptors is non-existent for " + method);
+ }
return methodApplicableInterceptorClasses;
}
-
+
public List<Class<?>> getInterceptorClasses()
{
return readOnlyInterceptorClasses;
}
-
+
/**
* All default and class interceptors (not method interceptors (12.7 footnote 57)
* @return
@@ -96,15 +94,15 @@
{
return readOnlyLifecycleInterceptorClasses;
}
-
+
private void initialize()
{
- // The lifecycle interceptor classes are:
+ // The lifecycle interceptor classes are:
// 1. the interceptors listed in an interceptor-order
// or
// 2. default interceptor + class interceptors
// where set 1 = set 2 + optionally extra interceptors
-
+
DefaultInterceptors defaultInterceptorsAnnotation = (DefaultInterceptors) advisor.resolveAnnotation(DefaultInterceptors.class);
List<Class<?>> defaultInterceptorClasses = new ArrayList<Class<?>>();
if(defaultInterceptorsAnnotation != null)
@@ -119,7 +117,7 @@
{
lifecycleInterceptorClasses.addAll(defaultInterceptorClasses);
}
-
+
Interceptors interceptorsAnnotation = (Interceptors) advisor.resolveAnnotation(Interceptors.class);
List<Class<?>> classInterceptorClasses = new ArrayList<Class<?>>();
if(interceptorsAnnotation != null)
@@ -134,7 +132,7 @@
}
}
log.debug("Found class interceptors " + classInterceptorClasses);
-
+
{
// Ordering of lifecycle interceptors
InterceptorOrder order = (InterceptorOrder) advisor.resolveAnnotation(InterceptorOrder.class);
@@ -152,7 +150,7 @@
if(!interceptorClasses.contains(interceptorClass))
interceptorClasses.add(interceptorClass);
}
-
+
Class<?> beanClass = advisor.getClazz();
for(Method beanMethod : ClassHelper.getAllMethods(beanClass))
{
@@ -163,7 +161,7 @@
for(Class<?> interceptorClass : interceptorsAnnotation.value())
methodInterceptorClasses.add(interceptorClass);
}
-
+
// Interceptors applicable for this bean method
List<Class<?>> methodApplicableInterceptorClasses = new ArrayList<Class<?>>();
if(!isExcludeDefaultInterceptors(advisor, beanMethod))
@@ -171,9 +169,9 @@
if(!isExcludeClassInterceptors(advisor, beanMethod))
methodApplicableInterceptorClasses.addAll(classInterceptorClasses);
methodApplicableInterceptorClasses.addAll(methodInterceptorClasses);
-
+
// TODO: remove duplicates?
-
+
// Total ordering (EJB 3 12.8.2.1)
// TODO: @Interceptors with all?
InterceptorOrder order = (InterceptorOrder) advisor.resolveAnnotation(beanMethod, InterceptorOrder.class);
@@ -194,7 +192,7 @@
methodApplicableInterceptorClasses = orderedInterceptorClasses;
}
applicableInterceptorClasses.put(beanMethod, methodApplicableInterceptorClasses);
-
+
for(Class<?> interceptorClass : methodApplicableInterceptorClasses)
{
if(!interceptorClasses.contains(interceptorClass))
@@ -202,17 +200,17 @@
}
}
}
-
+
private static final boolean isExcludeClassInterceptors(Advisor advisor, Method method)
{
return advisor.hasAnnotation(method, ExcludeClassInterceptors.class) || advisor.resolveAnnotation(ExcludeClassInterceptors.class) != null;
}
-
+
private static final boolean isExcludeDefaultInterceptors(Advisor advisor, Method method)
{
return advisor.hasAnnotation(method, ExcludeDefaultInterceptors.class) || isExcludedDefaultInterceptors(advisor);
- }
-
+ }
+
private static final boolean isExcludedDefaultInterceptors(Advisor advisor)
{
return advisor.resolveAnnotation(ExcludeDefaultInterceptors.class) != null;
Modified: projects/ejb3/trunk/plugin/pom.xml
===================================================================
--- projects/ejb3/trunk/plugin/pom.xml 2009-02-10 11:30:48 UTC (rev 84048)
+++ projects/ejb3/trunk/plugin/pom.xml 2009-02-10 11:55:26 UTC (rev 84049)
@@ -1,12 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+
<!-- Parent -->
<parent>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-build</artifactId>
<version>1.0.0</version>
</parent>
-
+
<!-- Artifact Configuration -->
<modelVersion>4.0.0</modelVersion>
<groupId>org.jboss.ejb3</groupId>
@@ -15,7 +15,7 @@
<name>JBoss EJB 3.0 Plugin Installer Assembly</name>
<description>JBoss EJB3 Plugin Installer Assembly</description>
<packaging>pom</packaging>
-
+
<!-- Build Configuration -->
<build>
@@ -48,7 +48,7 @@
</plugins>
</build>
-
+
<!-- Explicit versions, because here we define the installer product -->
<dependencies>
<!-- The installer program -->
@@ -66,7 +66,7 @@
<version>1.1.1-SNAPSHOT</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-common</artifactId>
@@ -82,7 +82,7 @@
<version>1.1.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-proxy</artifactId>
@@ -90,7 +90,7 @@
<version>1.0.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-proxy-clustered</artifactId>
@@ -98,7 +98,7 @@
<version>1.0.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-security</artifactId>
@@ -106,21 +106,21 @@
<version>1.0.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-timerservice-as5</artifactId>
<version>0.1.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.metadata</groupId>
<artifactId>jboss-metadata</artifactId>
<version>1.0.0</version>
<optional>true</optional>
</dependency>
-
+
<dependency>
<groupId>org.jboss.jpa</groupId>
<artifactId>jboss-jpa-deployers</artifactId>
@@ -134,6 +134,11 @@
<version>1.0.0.CR16</version>
<optional>true</optional>
</dependency>
-
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-interceptors</artifactId>
+ <version>1.0.1-SNAPSHOT</version>
+ </dependency>
</dependencies>
</project>
More information about the jboss-cvs-commits
mailing list