[jboss-cvs] JBossAS SVN: r111365 - in trunk/server: src/main/java/org/jboss/web/deployers and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri May 13 05:35:38 EDT 2011


Author: jaikiran
Date: 2011-05-13 05:35:38 -0400 (Fri, 13 May 2011)
New Revision: 111365

Modified:
   trunk/server/pom.xml
   trunk/server/src/main/java/org/jboss/web/deployers/SpecCompliantWarAnnotationDeployer.java
Log:
JBAS-8318 Include @ManagedBean interceptors for annotation scanning

Modified: trunk/server/pom.xml
===================================================================
--- trunk/server/pom.xml	2011-05-13 07:08:06 UTC (rev 111364)
+++ trunk/server/pom.xml	2011-05-13 09:35:38 UTC (rev 111365)
@@ -332,8 +332,13 @@
       <groupId>org.jboss</groupId>
       <artifactId>jboss-common-core</artifactId>
     </dependency>
-    
+
     <dependency>
+        <groupId>org.jboss.managed.beans</groupId>
+        <artifactId>managed-beans-metadata</artifactId>
+    </dependency>
+
+    <dependency>
       <groupId>org.jboss.metadata</groupId>
       <artifactId>jboss-metadata-common</artifactId>
       <exclusions>

Modified: trunk/server/src/main/java/org/jboss/web/deployers/SpecCompliantWarAnnotationDeployer.java
===================================================================
--- trunk/server/src/main/java/org/jboss/web/deployers/SpecCompliantWarAnnotationDeployer.java	2011-05-13 07:08:06 UTC (rev 111364)
+++ trunk/server/src/main/java/org/jboss/web/deployers/SpecCompliantWarAnnotationDeployer.java	2011-05-13 09:35:38 UTC (rev 111365)
@@ -40,6 +40,9 @@
 
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.deployment.JSFDeployment;
+import org.jboss.interceptor.spi.metadata.InterceptorMetadata;
+import org.jboss.managed.bean.metadata.ManagedBeanDeploymentMetaData;
+import org.jboss.managed.bean.metadata.ManagedBeanMetaData;
 import org.jboss.metadata.annotation.creator.AnnotationContext;
 import org.jboss.metadata.annotation.creator.web.Web30MetaDataCreator;
 import org.jboss.metadata.annotation.finder.AnnotationFinder;
@@ -88,6 +91,9 @@
    {
        // run after the JSFDeployment attaching deployer(s) have run, so that we can get hold of the jsf managed beans
        this.addInput(JSFDeployment.class);
+       // Java EE Managed bean annotation deployer should run before this, so that we can get hold of Java EE managed beans
+       // and associated interceptors info
+       this.addInput(ManagedBeanDeploymentMetaData.class);
    }
     
    @Override
@@ -112,7 +118,8 @@
 
       Collection<Class<?>> specEligibleResourceInjectionClasses = this.getResourceInjectionEligibleWebAppClasses(resourceIndex, classpath);
       boolean metaData = false;
-      JSFDeployment jsfDeployment = unit.getAttachment(JSFDeployment.class);
+      final JSFDeployment jsfDeployment = unit.getAttachment(JSFDeployment.class);
+      final ManagedBeanDeploymentMetaData managedBeanDeployment = unit.getAttachment(ManagedBeanDeploymentMetaData.class);
       for (VirtualFile path : classpath)
       {
          Collection<Class<?>> eligibleAnnotatedClasses = new HashSet<Class<?>>();
@@ -120,7 +127,7 @@
          {
             Collection<Class<?>> annotatedClasses = resourceIndex.getAnnotatedClasses(path, annotation);
             // include the jsf and Java EE6 managed beans as eligible for resource injection
-            specEligibleResourceInjectionClasses.addAll(this.getManagedBeans(jsfDeployment, annotatedClasses));
+            specEligibleResourceInjectionClasses.addAll(this.getManagedBeansRelatedClasses(jsfDeployment, managedBeanDeployment, annotatedClasses));
             // filter out any extra non-spec classes which shouldn't be picked up for resource injection processing
             eligibleAnnotatedClasses.addAll(this.retainResourceInjectionEligibleWebAppClasses(specEligibleResourceInjectionClasses, annotatedClasses));
          }
@@ -237,7 +244,7 @@
       return eligibleClasses;
    }
 
-    private Collection<Class<?>> getManagedBeans(final JSFDeployment jsfDeployment, Collection<Class<?>> classes)
+    private Collection<Class<?>> getManagedBeansRelatedClasses(final JSFDeployment jsfDeployment, final ManagedBeanDeploymentMetaData managedBeanDeployment, Collection<Class<?>> classes)
     {
         if (classes == null || classes.isEmpty())
         {
@@ -251,7 +258,7 @@
         Collection<Class<?>> managedBeans = new HashSet<Class<?>>();
         for (Class<?> klass : classes)
         {
-            if (this.isJavaEE6ManagedBean(klass))
+            if (this.isJavaEE6ManagedBean(klass) || this.isInterceptorToJavaEE6ManagedBean(klass, managedBeanDeployment))
             {
                 managedBeans.add(klass);
             }
@@ -276,4 +283,27 @@
     {
         return klass.isAnnotationPresent(ManagedBean.class);
     }
+
+    private boolean isInterceptorToJavaEE6ManagedBean(final Class<?> klass, final ManagedBeanDeploymentMetaData managedBeanDeploymentMetaData) {
+        if (managedBeanDeploymentMetaData == null) {
+            return false;
+        }
+        Collection<ManagedBeanMetaData> managedBeans = managedBeanDeploymentMetaData.getManagedBeans();
+        if (managedBeans == null || managedBeans.isEmpty()) {
+            return false;
+        }
+        for (ManagedBeanMetaData managedBean : managedBeans) {
+            Collection<InterceptorMetadata<?>> interceptors = managedBean.getAllInterceptors();
+            if (interceptors == null || interceptors.isEmpty()) {
+                continue;
+            }
+            for (InterceptorMetadata<?> interceptor : interceptors) {
+                final String interceptorClassName = interceptor.getInterceptorClass().getClassName();
+                if (klass.getName().equals(interceptorClassName)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
 }



More information about the jboss-cvs-commits mailing list