[jboss-cvs] JBossAS SVN: r65832 - in branches/Branch_4_2: ejb3/src/main/org/jboss/ejb3/stateless and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Oct 4 06:59:24 EDT 2007
Author: wolfc
Date: 2007-10-04 06:59:24 -0400 (Thu, 04 Oct 2007)
New Revision: 65832
Added:
branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/webservice/
branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/RemoteInterface.java
Modified:
branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java
branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java
branches/Branch_4_2/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java
branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/EndpointEJB.java
branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/unit/ContextEJBTestCase.java
branches/Branch_4_2/webservices/src/main/org/jboss/wsf/container/jboss42/InvocationHandlerEJB3.java
Log:
EJBTHREE-1055: injection of web service context at the right time
Modified: branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java
===================================================================
--- branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java 2007-10-04 08:45:15 UTC (rev 65831)
+++ branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/stateless/StatelessBeanContext.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -24,40 +24,45 @@
import javax.xml.ws.WebServiceContext;
import org.jboss.ejb3.BaseContext;
-import org.jboss.injection.lang.reflect.BeanProperty;
-
/**
- * Comment
+ * A stateless instance linked to its container with associated
+ * meta data.
*
* @author <a href="mailto:bill at jboss.org">Bill Burke</a>
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
* @version $Revision$
*/
public class StatelessBeanContext extends BaseContext
{
private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
- private BeanProperty webServiceContextProperty;
+ private WebServiceContext webServiceContext;
public javax.xml.rpc.handler.MessageContext getMessageContextJAXRPC()
{
return jaxrpcMessageContext;
}
-
+
+ /**
+ * Returns the web service context associated with this bean or null
+ * if no web service context is a associated.
+ * @return
+ */
+ public WebServiceContext getWebServiceContext()
+ {
+ return webServiceContext;
+ }
+
public void setMessageContextJAXRPC(javax.xml.rpc.handler.MessageContext rpcMessageContext)
{
this.jaxrpcMessageContext = rpcMessageContext;
}
- public BeanProperty getWebServiceContextProperty()
+ public void setWebServiceContext(WebServiceContext webServiceContext)
{
- return webServiceContextProperty;
+ this.webServiceContext = webServiceContext;
}
-
- public void setWebServiceContextProperty(BeanProperty webServiceContextProperty)
- {
- this.webServiceContextProperty = webServiceContextProperty;
- }
-
+
public void remove()
{
}
Copied: branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/webservice (from rev 59889, trunk/ejb3/src/main/org/jboss/ejb3/webservice)
Modified: branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java 2007-01-21 17:44:42 UTC (rev 59889)
+++ branches/Branch_4_2/ejb3/src/main/org/jboss/ejb3/webservice/WebServiceContextImpl.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -47,20 +47,28 @@
this.ctx = ctx;
}
+ protected WebServiceContext getDelegate()
+ {
+ WebServiceContext wsc = ctx.getWebServiceContext();
+ if(wsc == null)
+ throw new IllegalStateException("No web service context associated with this bean");
+ return wsc;
+ }
+
/* (non-Javadoc)
* @see javax.xml.ws.WebServiceContext#getEndpointReference(org.w3c.dom.Element[])
*/
- public EndpointReference getEndpointReference(Element... arg0)
+ public EndpointReference getEndpointReference(Element... referenceParameters)
{
- throw new UnsupportedOperationException();
+ return getDelegate().getEndpointReference(referenceParameters);
}
/* (non-Javadoc)
* @see javax.xml.ws.WebServiceContext#getEndpointReference(java.lang.Class, org.w3c.dom.Element[])
*/
- public <T extends EndpointReference> T getEndpointReference(Class<T> arg0, Element... arg1)
+ public <T extends EndpointReference> T getEndpointReference(Class<T> clazz, Element... referenceParameters)
{
- throw new UnsupportedOperationException();
+ return getDelegate().getEndpointReference(clazz, referenceParameters);
}
/* (non-Javadoc)
@@ -68,10 +76,7 @@
*/
public MessageContext getMessageContext()
{
- MessageContext messageContext = ctx.getMessageContextJAXWS();
- if(messageContext == null)
- throw new IllegalStateException("No message context found");
- return messageContext;
+ return getDelegate().getMessageContext();
}
/* (non-Javadoc)
@@ -79,15 +84,15 @@
*/
public Principal getUserPrincipal()
{
- throw new UnsupportedOperationException();
+ return getDelegate().getUserPrincipal();
}
/* (non-Javadoc)
* @see javax.xml.ws.WebServiceContext#isUserInRole(java.lang.String)
*/
- public boolean isUserInRole(String arg0)
+ public boolean isUserInRole(String role)
{
- throw new UnsupportedOperationException();
+ return getDelegate().isUserInRole(role);
}
}
Modified: branches/Branch_4_2/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java
===================================================================
--- branches/Branch_4_2/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java 2007-10-04 08:45:15 UTC (rev 65831)
+++ branches/Branch_4_2/ejb3/src/main/org/jboss/injection/WebServiceContextPropertyInjector.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -21,17 +21,15 @@
*/
package org.jboss.injection;
-import javax.ejb.EJBContext;
-
import org.jboss.ejb3.BeanContext;
import org.jboss.ejb3.stateless.StatelessBeanContext;
+import org.jboss.ejb3.webservice.WebServiceContextImpl;
import org.jboss.injection.lang.reflect.BeanProperty;
/**
* Injects a WebServiceContext into a bean.
*
* @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @author Thomas.Diesler at jboss.com
* @version $Revision: $
*/
public class WebServiceContextPropertyInjector implements Injector
@@ -53,9 +51,10 @@
public void inject(BeanContext ctx)
{
if(!(ctx instanceof StatelessBeanContext))
+ {
throw new RuntimeException("Can only inject on stateless bean context");
-
- ((StatelessBeanContext)ctx).setWebServiceContextProperty(property);
+ }
+ property.set(ctx.getInstance(), new WebServiceContextImpl((StatelessBeanContext) ctx));
}
public Class getInjectionClass()
Modified: branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/EndpointEJB.java
===================================================================
--- branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/EndpointEJB.java 2007-10-04 08:45:15 UTC (rev 65831)
+++ branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/EndpointEJB.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -38,7 +38,7 @@
@WebService(endpointInterface = "org.jboss.ejb3.test.jaxws.EndpointInterface", serviceName = "TestService", targetNamespace = "http://org.jboss.ws/jaxws/context")
@WebContext(contextRoot="jaxws-context", urlPattern="/testService")
@Stateless
-public class EndpointEJB
+public class EndpointEJB implements RemoteInterface
{
@Resource
WebServiceContext wsCtx;
@@ -93,4 +93,9 @@
soapElement = (SOAPElement)soapElement.getChildElements().next();
return soapElement.getValue();
}
+
+ public void someMethod()
+ {
+ wsCtx.getMessageContext();
+ }
}
Added: branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/RemoteInterface.java
===================================================================
--- branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/RemoteInterface.java (rev 0)
+++ branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/RemoteInterface.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -0,0 +1,34 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.test.jaxws;
+
+import javax.ejb.Remote;
+
+/**
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Remote
+public interface RemoteInterface
+{
+ void someMethod();
+}
Property changes on: branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/RemoteInterface.java
___________________________________________________________________
Name: svn:keywords
+ Author Date Id Revision
Name: svn:eol-style
+ native
Modified: branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/unit/ContextEJBTestCase.java
===================================================================
--- branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/unit/ContextEJBTestCase.java 2007-10-04 08:45:15 UTC (rev 65831)
+++ branches/Branch_4_2/ejb3/src/test/org/jboss/ejb3/test/jaxws/unit/ContextEJBTestCase.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -27,6 +27,9 @@
import org.jboss.ejb3.test.JBossWithKnownIssuesTestCase;
import org.jboss.ejb3.test.jaxws.EndpointInterface;
+import org.jboss.ejb3.test.jaxws.RemoteInterface;
+
+import javax.ejb.EJBException;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPFaultException;
@@ -95,6 +98,26 @@
}
}
+ public void testRemoteInterface() throws Exception
+ {
+ RemoteInterface bean = (RemoteInterface) getInitialContext().lookup("EndpointEJB/remote");
+ try
+ {
+ bean.someMethod();
+ fail("Accessing WebServiceContext outside a WS call is not valid");
+ }
+ catch(IllegalStateException e)
+ {
+ // perfect
+ }
+ catch(EJBException e)
+ {
+ assertNotNull(e.getCause());
+ assertTrue(e.getCause() instanceof IllegalStateException);
+ // less than perfect, but currently the case
+ }
+ }
+
public void testService2() throws Exception
{
log.info("In case of connection exception, there is a host name defined in the wsdl, which used to be '@jbosstest.host.name@'");
Modified: branches/Branch_4_2/webservices/src/main/org/jboss/wsf/container/jboss42/InvocationHandlerEJB3.java
===================================================================
--- branches/Branch_4_2/webservices/src/main/org/jboss/wsf/container/jboss42/InvocationHandlerEJB3.java 2007-10-04 08:45:15 UTC (rev 65831)
+++ branches/Branch_4_2/webservices/src/main/org/jboss/wsf/container/jboss42/InvocationHandlerEJB3.java 2007-10-04 10:59:24 UTC (rev 65832)
@@ -126,16 +126,12 @@
StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
sbc.setMessageContextJAXRPC(jaxrpcMessageContext);
- BeanProperty beanProp = sbc.getWebServiceContextProperty();
- if (beanProp != null)
- {
- EJBContext ejbCtx = beanCtx.getEJBContext();
- SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
- WebServiceContextFactory factory = spiProvider.getSPI(WebServiceContextFactory.class);
- ExtensibleWebServiceContext wsContext = factory.newWebServiceContext(InvocationType.JAXWS_EJB3, jaxwsMessageContext);
- wsContext.addAttachment(EJBContext.class, ejbCtx);
- beanProp.set(beanCtx.getInstance(), wsContext);
- }
+ EJBContext ejbCtx = beanCtx.getEJBContext();
+ SPIProvider spiProvider = SPIProviderResolver.getInstance().getProvider();
+ WebServiceContextFactory factory = spiProvider.getSPI(WebServiceContextFactory.class);
+ ExtensibleWebServiceContext wsContext = factory.newWebServiceContext(InvocationType.JAXWS_EJB3, jaxwsMessageContext);
+ wsContext.addAttachment(EJBContext.class, ejbCtx);
+ sbc.setWebServiceContext(wsContext);
}
public void released(BeanContext beanCtx)
@@ -143,9 +139,7 @@
StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
sbc.setMessageContextJAXRPC(null);
- BeanProperty beanProp = sbc.getWebServiceContextProperty();
- if (beanProp != null)
- beanProp.set(beanCtx.getInstance(), null);
+ sbc.setWebServiceContext(null);
}
}
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list