[jboss-cvs] JBossAS SVN: r59606 - in trunk/ejb3/src/main/org/jboss: ejb3/stateless and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jan 12 14:36:17 EST 2007


Author: wolfc
Date: 2007-01-12 14:36:05 -0500 (Fri, 12 Jan 2007)
New Revision: 59606

Modified:
   trunk/ejb3/src/main/org/jboss/ejb3/BaseSessionContext.java
   trunk/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java
   trunk/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java
   trunk/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java
Log:
EJBTHREE-757: setMessageContext on StatelessBeanContext

Modified: trunk/ejb3/src/main/org/jboss/ejb3/BaseSessionContext.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/BaseSessionContext.java	2007-01-12 16:13:31 UTC (rev 59605)
+++ trunk/ejb3/src/main/org/jboss/ejb3/BaseSessionContext.java	2007-01-12 19:36:05 UTC (rev 59606)
@@ -24,12 +24,13 @@
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
-import java.io.ObjectOutput; 
+import java.io.ObjectOutput;
 import java.security.Identity;
 import java.security.Principal;
-import java.util.HashSet; 
+import java.util.HashSet;
 import java.util.List;
 import java.util.Properties;
+
 import javax.ejb.EJBException;
 import javax.ejb.EJBHome;
 import javax.ejb.EJBLocalHome;
@@ -46,21 +47,19 @@
 import javax.transaction.TransactionManager;
 import javax.transaction.UserTransaction;
 import javax.xml.rpc.handler.MessageContext;
+
 import org.jboss.annotation.security.SecurityDomain;
-import org.jboss.aop.Advisor; 
+import org.jboss.aop.Advisor;
 import org.jboss.ejb3.security.SecurityDomainManager;
+import org.jboss.ejb3.stateless.StatelessBeanContext;
 import org.jboss.ejb3.tx.TxUtil;
 import org.jboss.ejb3.tx.UserTransactionImpl;
-import org.jboss.logging.Logger; 
+import org.jboss.logging.Logger;
 import org.jboss.metadata.SecurityRoleRefMetaData;
 import org.jboss.security.RealmMapping;
 import org.jboss.security.RunAsIdentity;
 import org.jboss.security.SecurityAssociation;
-import org.jboss.security.SimplePrincipal; 
-import org.jboss.ws.core.CommonMessageContext;
-import org.jboss.ws.core.jaxrpc.handler.SOAPMessageContextJAXRPC;
-import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
-import org.jboss.ws.core.soap.MessageContextAssociation;
+import org.jboss.security.SimplePrincipal;
 
 /**
  * Comment
@@ -70,6 +69,8 @@
  */
 public class BaseSessionContext implements SessionContext, MessageDrivenContext, Externalizable
 {
+   private static final long serialVersionUID = -2485139227124937217L;
+   
    private static final Logger log = Logger.getLogger(BaseSessionContext.class);
    protected transient Container container;
    protected transient RealmMapping rm;
@@ -351,13 +352,14 @@
    public MessageContext getMessageContext() throws IllegalStateException
    {
       // disallowed for stateful session beans (EJB3 FR 4.4.1 p 81)
-      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
-      if(msgContext == null)
-         throw new IllegalStateException("no message context found");
-      if(msgContext instanceof SOAPMessageContextJAXRPC)
-         return (SOAPMessageContextJAXRPC) msgContext;
-      else
-         return new SOAPMessageContextJAXRPC(msgContext);
+      if(baseContext instanceof StatelessBeanContext)
+      {
+         MessageContext ctx = ((StatelessBeanContext) baseContext).getMessageContextJAXRPC();
+         if(ctx == null)
+            throw new IllegalStateException("No message context found");
+         return ctx;
+      }
+      throw new UnsupportedOperationException("Only stateless beans can have a message context");
    }
 
 }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java	2007-01-12 16:13:31 UTC (rev 59605)
+++ trunk/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java	2007-01-12 19:36:05 UTC (rev 59606)
@@ -21,6 +21,8 @@
   */
 package org.jboss.ejb3.stateless;
 
+import javax.xml.rpc.handler.MessageContext;
+
 import org.jboss.ejb3.BaseContext;
 
 /**
@@ -31,9 +33,30 @@
  */
 public class StatelessBeanContext extends BaseContext
 {
+   private MessageContext rpcMessageContext;
+   private javax.xml.ws.handler.MessageContext wsMessageContext;
+   
+   public MessageContext getMessageContextJAXRPC()
+   {
+      return rpcMessageContext;
+   }
+
+   public javax.xml.ws.handler.MessageContext getMessageContextJAXWS()
+   {
+      return wsMessageContext;
+   }
+   
    public void remove()
    {
    }
    
-
+   public void setMessageContextJAXRPC(MessageContext rpcMessageContext)
+   {
+      this.rpcMessageContext = rpcMessageContext;
+   }
+   
+   public void setMessageContextJAXWS(javax.xml.ws.handler.MessageContext wsMessageContext)
+   {
+      this.wsMessageContext = wsMessageContext;
+   }
 }

Modified: trunk/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java	2007-01-12 16:13:31 UTC (rev 59605)
+++ trunk/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java	2007-01-12 19:36:05 UTC (rev 59606)
@@ -27,9 +27,7 @@
 import javax.xml.ws.WebServiceContext;
 import javax.xml.ws.handler.MessageContext;
 
-import org.jboss.ws.core.CommonMessageContext;
-import org.jboss.ws.core.jaxws.handler.SOAPMessageContextJAXWS;
-import org.jboss.ws.core.soap.MessageContextAssociation;
+import org.jboss.ejb3.stateless.StatelessBeanContext;
 import org.w3c.dom.Element;
 
 /**
@@ -40,8 +38,13 @@
  */
 public class WebServiceContextImpl implements WebServiceContext
 {
-   public WebServiceContextImpl()
+   private StatelessBeanContext ctx;
+   
+   public WebServiceContextImpl(StatelessBeanContext ctx)
    {
+      assert ctx != null : "ctx must be set";
+      
+      this.ctx = ctx;
    }
    
    /* (non-Javadoc)
@@ -65,11 +68,10 @@
     */
    public MessageContext getMessageContext()
    {
-      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
-      if(msgContext instanceof SOAPMessageContextJAXWS)
-         return (SOAPMessageContextJAXWS) msgContext;
-      else
-         return new SOAPMessageContextJAXWS(msgContext);
+      MessageContext messageContext = ctx.getMessageContextJAXWS();
+      if(messageContext == null)
+         throw new IllegalStateException("No message context found");
+      return messageContext;
    }
 
    /* (non-Javadoc)

Modified: trunk/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java	2007-01-12 16:13:31 UTC (rev 59605)
+++ trunk/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java	2007-01-12 19:36:05 UTC (rev 59606)
@@ -21,25 +21,44 @@
  */
 package org.jboss.injection;
 
+import org.jboss.ejb3.BeanContext;
+import org.jboss.ejb3.stateless.StatelessBeanContext;
 import org.jboss.ejb3.webservice.WebServiceContextImpl;
 import org.jboss.injection.lang.reflect.BeanProperty;
 
 /**
- * Comment
+ * Injects a WebServiceContext into a bean.
  *
  * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
  * @version $Revision: $
  */
-public class WebServiceContextPropertyInjector extends AbstractPropertyInjector
+public class WebServiceContextPropertyInjector implements Injector
 {
-
+   private BeanProperty property;
+   
    protected WebServiceContextPropertyInjector(BeanProperty property)
    {
-      super(property);
+      assert property != null : "property must be set";
+      
+      this.property = property;
    }
 
    public void inject(Object instance)
    {
-      property.set(instance, new WebServiceContextImpl());
+      throw new RuntimeException("Illegal operation");
    }
+
+   public void inject(BeanContext ctx)
+   {
+      if(!(ctx instanceof StatelessBeanContext))
+      {
+         throw new RuntimeException("Can only inject on stateless bean context");
+      }
+      property.set(ctx.getInstance(), new WebServiceContextImpl((StatelessBeanContext) ctx));
+   }
+   
+   public Class getInjectionClass()
+   {
+      return property.getType();
+   }
 }




More information about the jboss-cvs-commits mailing list