[jboss-cvs] JBossAS SVN: r76652 - trunk/webservices/src/main/org/jboss/wsf/container/jboss50/deployer.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Aug 5 06:41:50 EDT 2008


Author: alessio.soldano at jboss.com
Date: 2008-08-05 06:41:48 -0400 (Tue, 05 Aug 2008)
New Revision: 76652

Modified:
   trunk/webservices/src/main/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
Log:
[JBWS-2194] Using EJB container to get annotations


Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java	2008-08-05 10:16:09 UTC (rev 76651)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java	2008-08-05 10:41:48 UTC (rev 76652)
@@ -25,6 +25,9 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb.deployers.EjbDeployment;
 import org.jboss.ejb.deployers.MergedJBossMetaDataDeployer;
+import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.ejb3.annotation.SecurityDomain;
 import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
 import org.jboss.metadata.ejb.jboss.JBossMetaData;
 import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
@@ -41,6 +44,8 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.management.ObjectName;
+
 /**
  * This web service deployer for EJB. Adopts EJB deployments to
  * {@link org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration} an passes it to a chain of
@@ -60,6 +65,8 @@
       addInput(MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME);   
    
       addInput(EjbDeployment.class);
+      
+      addInput(Ejb3Deployment.class);
 
       // Input for the TomcatDeployer
       addOutput(JBossWebMetaData.class);
@@ -74,16 +81,29 @@
       JBossMetaData beans = (JBossMetaData)unit.getAttachment(
         MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME
       );
-
+      Ejb3Deployment ejb3Deployment = unit.getAttachment(Ejb3Deployment.class);
+      
       if(beans!=null)
       {
-         WebServiceDeploymentAdapter wsDeployment = new WebServiceDeploymentAdapter();         
+         WebServiceDeploymentAdapter wsDeployment = new WebServiceDeploymentAdapter();   
+         
          Iterator<JBossEnterpriseBeanMetaData> iterator = beans.getEnterpriseBeans().iterator();
          while(iterator.hasNext())
          {
             JBossEnterpriseBeanMetaData ejb = iterator.next();
+            ObjectName objName = null;
+            try
+            {
+               objName = new ObjectName(ejb.determineContainerName());
+            }
+            catch (Exception e)
+            {
+               throw new DeploymentException(e);
+            }
+            EJBContainer ejbContainer = ejb3Deployment != null ? (EJBContainer)ejb3Deployment.getContainer(objName) : null;
+            
             if(ejb.getEjbClass()!=null)
-            	wsDeployment.getEndpoints().add( new WebServiceDeclarationAdapter(ejb, unit.getClassLoader()) );
+            	wsDeployment.getEndpoints().add( new WebServiceDeclarationAdapter(ejb, ejbContainer, unit.getClassLoader()) );
             else
                log.warn("Ingore ejb deployment with null classname: " + ejb);
          }
@@ -107,11 +127,13 @@
    {
 
       private JBossEnterpriseBeanMetaData ejbMetaData;
+      private EJBContainer ejbContainer;
       private ClassLoader loader;      
 
-      public WebServiceDeclarationAdapter(JBossEnterpriseBeanMetaData  ejbMetaData, ClassLoader loader)
+      public WebServiceDeclarationAdapter(JBossEnterpriseBeanMetaData ejbMetaData, EJBContainer ejbContainer, ClassLoader loader)
       {
          this.ejbMetaData = ejbMetaData;
+         this.ejbContainer = ejbContainer;
          this.loader = loader;
       }
 
@@ -132,30 +154,32 @@
 
       public <T extends Annotation> T getAnnotation(Class<T> annotation)
       {
-         Class bean = getComponentClass();
-         T result = null;
-         if(bean.isAnnotationPresent(annotation))
+         T result = ejbContainer != null ? ejbContainer.getAnnotation(annotation) : null;
+         if (result == null)
          {
-            result = (T)bean.getAnnotation(annotation);
-         }
-
-         //[JBWS-2240] Workaround to have the port-component data available;
-         //TODO: info coming from the descriptor still need to be handled properly
-         if (PortComponentSpec.class.equals(annotation) && ejbMetaData instanceof JBossSessionBeanMetaData)
-         {
-            PortComponent pc = ((JBossSessionBeanMetaData)ejbMetaData).getPortComponent();
-            if (pc != null)
+            Class bean = getComponentClass();
+            if(bean.isAnnotationPresent(annotation))
             {
-               PortComponentMD pcMetaData = new PortComponentMD();
-               pcMetaData.setAuthMethod(pc.getAuthMethod());
-               pcMetaData.setPortComponentName(pc.getPortComponentName());
-               pcMetaData.setPortComponentURI(pc.getPortComponentURI());
-               pcMetaData.setSecureWSDLAccess(pc.getSecureWSDLAccess());
-               pcMetaData.setTransportGuarantee(pc.getTransportGuarantee());
-               result = (T)pcMetaData;
+               result = (T)bean.getAnnotation(annotation);
             }
+   
+            //[JBWS-2240] Workaround to have the port-component data available;
+            //TODO: info coming from the descriptor still need to be handled properly
+            if (PortComponentSpec.class.equals(annotation) && ejbMetaData instanceof JBossSessionBeanMetaData)
+            {
+               PortComponent pc = ((JBossSessionBeanMetaData)ejbMetaData).getPortComponent();
+               if (pc != null)
+               {
+                  PortComponentMD pcMetaData = new PortComponentMD();
+                  pcMetaData.setAuthMethod(pc.getAuthMethod());
+                  pcMetaData.setPortComponentName(pc.getPortComponentName());
+                  pcMetaData.setPortComponentURI(pc.getPortComponentURI());
+                  pcMetaData.setSecureWSDLAccess(pc.getSecureWSDLAccess());
+                  pcMetaData.setTransportGuarantee(pc.getTransportGuarantee());
+                  result = (T)pcMetaData;
+               }
+            }
          }
-
          return result;
       }
 




More information about the jboss-cvs-commits mailing list