[jboss-cvs] JBossAS SVN: r70809 - in projects/ejb3/branches/hbraun: core and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Mar 13 07:15:05 EDT 2008


Author: heiko.braun at jboss.com
Date: 2008-03-13 07:15:05 -0400 (Thu, 13 Mar 2008)
New Revision: 70809

Modified:
   projects/ejb3/branches/hbraun/build/pom.xml
   projects/ejb3/branches/hbraun/core/pom.xml
   projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
   projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
Log:
WS SPI update, first cut

Modified: projects/ejb3/branches/hbraun/build/pom.xml
===================================================================
--- projects/ejb3/branches/hbraun/build/pom.xml	2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/build/pom.xml	2008-03-13 11:15:05 UTC (rev 70809)
@@ -138,6 +138,7 @@
     <version.org.jboss.microcontainer_jboss-kernel>2.0.0.Beta9</version.org.jboss.microcontainer_jboss-kernel>
     <version.org.jboss.security_jboss-security-spi-bare>2.0.2.Beta5</version.org.jboss.security_jboss-security-spi-bare>
     <version.org.jboss.security_jbosssx-client>2.0.2.Beta5</version.org.jboss.security_jbosssx-client>
+    <version.org.jboss.ws_jbossws-spi>snapshot</version.org.jboss.ws_jbossws-spi>
     <version.trove_trove>1.0.2</version.trove_trove>
     <version.quartz_quartz>1.6.0</version.quartz_quartz>
    
@@ -550,6 +551,13 @@
         <version>${version.org.jboss_jboss-transaction-spi}</version>
       </dependency>
 
+      <!-- JBoss WS SPI -->
+      <dependency>
+        <groupId>org.jboss.ws</groupId>
+        <artifactId>jbossws-spi</artifactId>
+        <version>${version.org.jboss.ws_jbossws-spi}</version>
+      </dependency>
+
       <!-- JUnit -->
       <dependency>
         <groupId>junit</groupId>

Modified: projects/ejb3/branches/hbraun/core/pom.xml
===================================================================
--- projects/ejb3/branches/hbraun/core/pom.xml	2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/pom.xml	2008-03-13 11:15:05 UTC (rev 70809)
@@ -181,7 +181,7 @@
                 <artifactItem>
                   <groupId>org.jboss</groupId>
                   <artifactId>jboss-test</artifactId>
-                </artifactItem>
+                </artifactItem>                 
                 <artifactItem>
                   <groupId>hibernate</groupId>
                   <artifactId>hibernate3</artifactId>
@@ -395,6 +395,10 @@
        <version>5.0.0-SNAPSHOT</version> <!-- Only used here -->
        <classifier>client</classifier>
     </dependency>
+     <dependency>
+       <groupId>org.jboss.ws</groupId>
+       <artifactId>jbossws-spi</artifactId>       
+    </dependency>
     <dependency>
       <groupId>org.jboss.microcontainer</groupId>
       <artifactId>jboss-container</artifactId>

Modified: projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java
===================================================================
--- projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/Ejb3Deployment.java	2008-03-13 11:15:05 UTC (rev 70809)
@@ -67,6 +67,8 @@
 import org.jboss.metadata.javaee.spec.MessageDestinationsMetaData;
 import org.jboss.system.ServiceMBeanSupport;
 import org.jboss.virtual.VirtualFile;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
 
 /**
  * An EjbModule represents a collection of beans that are deployed as a unit.
@@ -75,7 +77,8 @@
  * @author adrian at jboss.org
  * @version $Revision$
  */
-public abstract class Ejb3Deployment extends ServiceMBeanSupport implements JavaEEModule, Ejb3DeploymentMBean
+public abstract class Ejb3Deployment extends ServiceMBeanSupport
+  implements JavaEEModule, Ejb3DeploymentMBean, WebServiceDeployment
 {
    private static final Logger log = Logger.getLogger(Ejb3Deployment.class);
 
@@ -847,4 +850,37 @@
    {
       return unit.getShortName();
    }
+
+
+   public List<WebServiceDeclaration> getServiceEndpoints()
+   {
+      List<WebServiceDeclaration> webServiceDeclarations = new ArrayList<WebServiceDeclaration>();
+
+      Iterator<Container> it = this.getEjbContainers().values().iterator();
+      while(it.hasNext())
+      {
+         final EJBContainer ejbContainer = (EJBContainer)it.next();
+         webServiceDeclarations.add(
+           new WebServiceDeclaration()
+           {
+              public <T extends java.lang.annotation.Annotation> T getAnnotation(Class<T> t)
+              {
+                 return ejbContainer.getAnnotation(t);
+              }
+
+              public String getComponentName()
+              {
+                 return ejbContainer.getEjbName();
+              }
+
+              public String getComponentClassName()
+              {
+                 return ejbContainer.getBeanClassName();
+              }
+           }
+
+         );
+      }
+      return webServiceDeclarations;
+   }
 }

Modified: projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java
===================================================================
--- projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-03-13 11:07:42 UTC (rev 70808)
+++ projects/ejb3/branches/hbraun/core/src/main/java/org/jboss/ejb3/stateless/StatelessContainer.java	2008-03-13 11:15:05 UTC (rev 70809)
@@ -44,6 +44,7 @@
 import org.jboss.ejb3.BeanContextLifecycleCallback;
 import org.jboss.ejb3.EJBContainerInvocation;
 import org.jboss.ejb3.Ejb3Deployment;
+
 import org.jboss.ejb3.ProxyFactory;
 import org.jboss.ejb3.ProxyFactoryHelper;
 import org.jboss.ejb3.ProxyUtils;
@@ -60,7 +61,16 @@
 import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
 import org.jboss.proxy.ejb.handle.HomeHandleImpl;
 import org.jboss.proxy.ejb.handle.StatelessHandleImpl;
+import org.jboss.wsf.spi.invocation.integration.ServiceEndpointContainer;
+import org.jboss.wsf.spi.invocation.integration.InvocationContextCallback;
+import org.jboss.wsf.spi.invocation.ExtensibleWebServiceContext;
+import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
+import org.jboss.wsf.spi.invocation.InvocationType;
+import org.jboss.wsf.spi.SPIProvider;
+import org.jboss.wsf.spi.SPIProviderResolver;
+import org.jboss.injection.lang.reflect.BeanProperty;
 
+import javax.ejb.EJBContext;
 
 /**
  * Comment
@@ -68,7 +78,8 @@
  * @author <a href="mailto:bill at jboss.org">Bill Burke</a>
  * @version $Revision$
  */
-public class StatelessContainer extends SessionContainer implements TimedObjectInvoker
+public class StatelessContainer extends SessionContainer
+  implements TimedObjectInvoker, ServiceEndpointContainer
 {
    private static final Logger log = Logger.getLogger(StatelessContainer.class);
 
@@ -489,4 +500,54 @@
    {
       throw new RuntimeException("NYI");
    }
+
+
+   public Class getServiceImplementationClass()
+   {
+      return this.getBeanClass();
+   }
+
+   public Object invokeEndpoint(Method method, Object[] args, InvocationContextCallback callback) throws Throwable
+   {
+      WebServiceCallbackImpl lifecyleCallback = new WebServiceCallbackImpl(callback);
+      return this.localInvoke(method, args, null, lifecyleCallback);
+   }
+
+   static class WebServiceCallbackImpl implements BeanContextLifecycleCallback
+   {
+      private javax.xml.ws.handler.MessageContext jaxwsMessageContext;
+      private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
+
+      public WebServiceCallbackImpl(InvocationContextCallback epInv)
+      {
+         jaxrpcMessageContext = epInv.get( javax.xml.rpc.handler.MessageContext.class );
+         jaxwsMessageContext = epInv.get( javax.xml.ws.handler.MessageContext.class );
+      }
+
+      public void attached(BeanContext beanCtx)
+      {
+         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
+         sbc.setMessageContextJAXRPC(jaxrpcMessageContext);
+
+         BeanProperty beanProp = sbc.getWebServiceContextProperty();
+         if (beanProp != null)
+         {
+            EJBContext ejbCtx = beanCtx.getEJBContext();
+            SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+            ExtensibleWebServiceContext wsContext = spiProvider.getSPI(WebServiceContextFactory.class).newWebServiceContext(InvocationType.JAXWS_EJB3, jaxwsMessageContext);
+            wsContext.addAttachment(EJBContext.class, ejbCtx);
+            beanProp.set(beanCtx.getInstance(), wsContext);
+         }
+      }
+
+      public void released(BeanContext beanCtx)
+      {
+         StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
+         sbc.setMessageContextJAXRPC(null);
+
+         BeanProperty beanProp = sbc.getWebServiceContextProperty();
+         if (beanProp != null)
+            beanProp.set(beanCtx.getInstance(), null);
+      }
+   }
 }




More information about the jboss-cvs-commits mailing list