[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