[jboss-cvs] JBossAS SVN: r73036 - trunk/webservices/src/main/org/jboss/wsf/container/jboss50.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun May 4 14:17:33 EDT 2008
Author: heiko.braun at jboss.com
Date: 2008-05-04 14:17:33 -0400 (Sun, 04 May 2008)
New Revision: 73036
Modified:
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractWebServiceDeployer.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ContainerMetaDataAdapter.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/EJBArchiveMetaDataAdapterEJB3.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/InvocationHandlerEJB3.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookEJB3.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/RuntimeLoaderDeploymentAspect.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/SecurityHandlerEJB3.java
trunk/webservices/src/main/org/jboss/wsf/container/jboss50/WebServiceDeployerEJB.java
Log:
EJBTHREE-1281: Update container integration to use SPI 1.0.2
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractWebServiceDeployer.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractWebServiceDeployer.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/AbstractWebServiceDeployer.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -42,7 +42,7 @@
// provide logging
private static final Logger log = Logger.getLogger(AbstractWebServiceDeployer.class);
- private List<DeployerHook> deployerHooks = new LinkedList<DeployerHook>();
+ protected List<DeployerHook> deployerHooks = new LinkedList<DeployerHook>();
public void addDeployerHook(DeployerHook deployer)
{
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ContainerMetaDataAdapter.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ContainerMetaDataAdapter.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/ContainerMetaDataAdapter.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -23,18 +23,18 @@
//$Id: ContainerMetaDataAdapter.java 4022 2007-07-27 13:54:43Z heiko.braun at jboss.com $
-import java.net.URL;
-
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.ejb3.Ejb3Deployment;
import org.jboss.logging.Logger;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData;
import org.jboss.wsf.spi.metadata.j2ee.JSEArchiveMetaData;
+import java.net.URL;
+
/**
* Build container independent deployment info.
*
@@ -86,7 +86,7 @@
}
// EJB3 endpoints
- else if (unit.getAttachment(Ejb3Deployment.class) != null)
+ else if (unit.getAttachment(WebServiceDeployment.class) != null)
{
EJBArchiveMetaData ejbMetaData = ejbMetaDataAdapterEJB3.buildMetaData(dep, unit);
if (ejbMetaData != null)
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/EJBArchiveMetaDataAdapterEJB3.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/EJBArchiveMetaDataAdapterEJB3.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/EJBArchiveMetaDataAdapterEJB3.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -23,35 +23,24 @@
// $Id: EJBArchiveMetaDataAdapterEJB3.java 4239 2007-08-07 19:13:42Z heiko.braun at jboss.com $
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.ejb3.Container;
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.Ejb3Deployment;
-import org.jboss.ejb3.mdb.MessagingContainer;
-import org.jboss.ejb3.stateless.StatelessContainer;
import org.jboss.logging.Logger;
import org.jboss.metadata.common.jboss.WebserviceDescriptionMetaData;
import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossGenericBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.jboss.WebservicesMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
-import org.jboss.metadata.javaee.spec.PortComponent;
import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.EJBMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.EJBSecurityMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.MDBMetaData;
-import org.jboss.wsf.spi.metadata.j2ee.SLSBMetaData;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.metadata.j2ee.*;
import org.jboss.wsf.spi.metadata.j2ee.EJBArchiveMetaData.PublishLocationAdapter;
+import javax.ejb.ActivationConfigProperty;
+import javax.ejb.MessageDriven;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
/**
* Build container independent application meta data
*
@@ -65,12 +54,11 @@
public EJBArchiveMetaData buildMetaData(Deployment dep, DeploymentUnit unit)
{
- Ejb3Deployment ejb3Deployment = unit.getAttachment(Ejb3Deployment.class);
- dep.addAttachment(Ejb3Deployment.class, ejb3Deployment);
-
EJBArchiveMetaData umd = new EJBArchiveMetaData();
- buildEnterpriseBeansMetaData(umd, ejb3Deployment);
+ WebServiceDeployment webServiceDeployment = dep.getAttachment(WebServiceDeployment.class);
+ buildEnterpriseBeansMetaData(umd, webServiceDeployment);
+
JBossMetaData jbMetaData = unit.getAttachment(JBossMetaData.class);
if (jbMetaData != null)
buildWebservicesMetaData(umd, jbMetaData);
@@ -104,68 +92,77 @@
}
}
- private void buildEnterpriseBeansMetaData(EJBArchiveMetaData jarMetaData, Ejb3Deployment ejb3Deployment)
+ private void buildEnterpriseBeansMetaData(EJBArchiveMetaData jarMetaData, WebServiceDeployment ejb3Deployment)
{
List<EJBMetaData> ejbMetaDataList = new ArrayList<EJBMetaData>();
- Iterator<Container> it = ejb3Deployment.getEjbContainers().values().iterator();
+ Iterator<WebServiceDeclaration> it = ejb3Deployment.getServiceEndpoints().iterator();
while (it.hasNext())
{
- EJBContainer container = (EJBContainer)it.next();
-
+ WebServiceDeclaration container = it.next();
+
+ // TODO: Add PortComponent parsing to EJBDescriptorHandler
+ PortComponentSpec pcMetaData = container.getAnnotation(PortComponentSpec.class);
+ MessageDriven mdbMetaData = container.getAnnotation(MessageDriven.class);
+
EJBMetaData ejbMetaData = null;
- PortComponent pcMetaData = null;
- if (container instanceof StatelessContainer)
+
+ if(mdbMetaData!=null)
{
- ejbMetaData = new SLSBMetaData();
- JBossEnterpriseBeanMetaData beanMetaData = container.getXml();
- if (beanMetaData instanceof JBossGenericBeanMetaData)
- {
- pcMetaData = ((JBossGenericBeanMetaData)beanMetaData).getPortComponent();
- }
- else if (beanMetaData instanceof JBossSessionBeanMetaData)
- {
- pcMetaData = ((JBossSessionBeanMetaData)beanMetaData).getPortComponent();
- }
- }
- else if (container instanceof MessagingContainer)
- {
ejbMetaData = new MDBMetaData();
- MessagingContainer mdb = (MessagingContainer)container;
- Map props = mdb.getActivationConfigProperties();
+
+ ActivationConfigProperty[] props = mdbMetaData.activationConfig();
if (props != null)
{
- ActivationConfigPropertyMetaData destProp = (ActivationConfigPropertyMetaData)props.get("destination");
- if (destProp != null)
+ String destination = getActivationProperty("destination", props);
+ if (destination != null)
{
- String destination = destProp.getValue();
((MDBMetaData)ejbMetaData).setDestinationJndiName(destination);
}
}
}
+ else
+ {
+ ejbMetaData = new SLSBMetaData();
+ }
if (ejbMetaData != null)
{
- ejbMetaData.setEjbName(container.getEjbName());
- ejbMetaData.setEjbClass(container.getBeanClassName());
+ ejbMetaData.setEjbName(container.getComponentName());
+ ejbMetaData.setEjbClass(container.getComponentClassName());
if (pcMetaData != null)
{
- ejbMetaData.setPortComponentName(pcMetaData.getPortComponentName());
- ejbMetaData.setPortComponentURI(pcMetaData.getPortComponentURI());
+ ejbMetaData.setPortComponentName(pcMetaData.portComponentName());
+ ejbMetaData.setPortComponentURI(pcMetaData.portComponentURI());
EJBSecurityMetaData smd = new EJBSecurityMetaData();
- smd.setAuthMethod(pcMetaData.getAuthMethod());
- smd.setTransportGuarantee(pcMetaData.getTransportGuarantee());
- smd.setSecureWSDLAccess(pcMetaData.getSecureWSDLAccess());
+ smd.setAuthMethod(pcMetaData.authMethod());
+ smd.setTransportGuarantee(pcMetaData.transportGuarantee());
+ smd.setSecureWSDLAccess(pcMetaData.secureWSDLAccess());
ejbMetaData.setSecurityMetaData(smd);
}
-
+
ejbMetaDataList.add(ejbMetaData);
}
}
-
+
jarMetaData.setEnterpriseBeans(ejbMetaDataList);
}
+ private String getActivationProperty(String name, ActivationConfigProperty[] props)
+ {
+ String result = null;
+ for(ActivationConfigProperty p : props)
+ {
+ if(p.propertyName().equals(name))
+ {
+ result = p.propertyValue();
+ break;
+ }
+ }
+
+ return result;
+ }
+
private PublishLocationAdapter getPublishLocationAdpater(final WebservicesMetaData wsMetaData)
{
return new PublishLocationAdapter() {
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/InvocationHandlerEJB3.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/InvocationHandlerEJB3.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/InvocationHandlerEJB3.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -24,24 +24,15 @@
// $Id: InvocationHandlerEJB3.java 4099 2007-08-02 13:36:49Z thomas.diesler at jboss.com $
import org.jboss.dependency.spi.ControllerContext;
-import org.jboss.ejb3.BeanContext;
-import org.jboss.ejb3.BeanContextLifecycleCallback;
-import org.jboss.ejb3.stateless.StatelessBeanContext;
-import org.jboss.ejb3.stateless.StatelessContainer;
-import org.jboss.injection.lang.reflect.BeanProperty;
import org.jboss.kernel.spi.dependency.KernelController;
import org.jboss.wsf.common.ObjectNameFactory;
-import org.jboss.wsf.spi.SPIProvider;
-import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.spi.invocation.ExtensibleWebServiceContext;
import org.jboss.wsf.spi.invocation.Invocation;
-import org.jboss.wsf.spi.invocation.InvocationType;
-import org.jboss.wsf.spi.invocation.WebServiceContextFactory;
+import org.jboss.wsf.spi.invocation.integration.InvocationContextCallback;
+import org.jboss.wsf.spi.invocation.integration.ServiceEndpointContainer;
import org.jboss.wsf.spi.util.KernelLocator;
-import javax.ejb.EJBContext;
import javax.management.ObjectName;
import javax.xml.ws.WebServiceException;
import java.lang.reflect.Method;
@@ -86,21 +77,18 @@
public void invoke(Endpoint ep, Invocation wsInv) throws Exception
{
try
- {
+ {
ControllerContext context = houston.getInstalledContext(objectName.getCanonicalName());
+ assert (context.getTarget() instanceof ServiceEndpointContainer) : "Invocation target mismatch";
- Object target = context.getTarget();
- if(! (target instanceof StatelessContainer) )
- throw new IllegalArgumentException("Unexpected invocation target: " + target);
-
- StatelessContainer container = (StatelessContainer) target;
- Class beanClass = container.getBeanClass();
+ ServiceEndpointContainer endpointContainer = (ServiceEndpointContainer) context.getTarget();
+ Class beanClass = endpointContainer.getServiceImplementationClass();
Method method = getImplMethod(beanClass, wsInv.getJavaMethod());
Object[] args = wsInv.getArgs();
- CallbackImpl callback = new CallbackImpl(wsInv);
+ InvocationContextCallback invProps = new EJB3InvocationContextCallback(wsInv);
- Object retObj = container.localInvoke(method, args, null, callback);
+ Object retObj = endpointContainer.invokeEndpoint(method, args, invProps);
wsInv.setReturnValue(retObj);
}
@@ -110,41 +98,18 @@
}
}
- static class CallbackImpl implements BeanContextLifecycleCallback
+ static class EJB3InvocationContextCallback implements InvocationContextCallback
{
- private javax.xml.ws.handler.MessageContext jaxwsMessageContext;
- private javax.xml.rpc.handler.MessageContext jaxrpcMessageContext;
+ private Invocation wsInv;
- public CallbackImpl(Invocation epInv)
+ public EJB3InvocationContextCallback(Invocation wsInv)
{
- jaxrpcMessageContext = epInv.getInvocationContext().getAttachment(javax.xml.rpc.handler.MessageContext.class);
- jaxwsMessageContext = epInv.getInvocationContext().getAttachment(javax.xml.ws.handler.MessageContext.class);
+ this.wsInv = wsInv;
}
- public void attached(BeanContext beanCtx)
+ public <T> T get(Class<T> propertyType)
{
- 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);
- }
+ return wsInv.getInvocationContext().getAttachment(propertyType);
}
-
- public void released(BeanContext beanCtx)
- {
- StatelessBeanContext sbc = (StatelessBeanContext)beanCtx;
- sbc.setMessageContextJAXRPC(null);
-
- BeanProperty beanProp = sbc.getWebServiceContextProperty();
- if (beanProp != null)
- beanProp.set(beanCtx.getInstance(), null);
- }
}
}
\ No newline at end of file
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookEJB3.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookEJB3.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/JAXWSDeployerHookEJB3.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -25,16 +25,14 @@
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.Ejb3Deployment;
-import org.jboss.ejb3.mdb.MessagingContainer;
-import org.jboss.ejb3.stateless.StatelessContainer;
import org.jboss.metadata.serviceref.VirtualFileAdaptor;
+import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
-import org.jboss.wsf.spi.deployment.ArchiveDeployment;
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.deployment.Service;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
import javax.jws.WebService;
import javax.xml.ws.WebServiceProvider;
@@ -48,7 +46,7 @@
*/
public class JAXWSDeployerHookEJB3 extends AbstractDeployerHookEJB
{
- /** Get the deployemnt type this deployer can handle
+ /** Get the deployment type this deployer can handle
*/
public DeploymentType getDeploymentType()
{
@@ -65,21 +63,21 @@
Service service = dep.getService();
- Ejb3Deployment ejb3Deployment = unit.getAttachment(Ejb3Deployment.class);
- if (ejb3Deployment == null)
- throw new IllegalStateException("Deployment unit does not contain ejb3 deployment");
+ WebServiceDeployment webServiceDeployment = unit.getAttachment(WebServiceDeployment.class);
+ if (webServiceDeployment == null)
+ throw new IllegalStateException("Deployment unit does not contain webServiceDeployment");
// Copy the attachments
- dep.addAttachment(Ejb3Deployment.class, ejb3Deployment);
+ dep.addAttachment(WebServiceDeployment.class, webServiceDeployment);
- Iterator it = ejb3Deployment.getEjbContainers().values().iterator();
+ Iterator<WebServiceDeclaration> it = webServiceDeployment.getServiceEndpoints().iterator();
while (it.hasNext())
{
- EJBContainer container = (EJBContainer)it.next();
+ WebServiceDeclaration container = it.next();
if (isWebServiceBean(container))
{
- String ejbName = container.getEjbName();
- String epBean = container.getBeanClassName();
+ String ejbName = container.getComponentName();
+ String epBean = container.getComponentClassName();
// Create the endpoint
Endpoint ep = newEndpoint(epBean);
@@ -94,16 +92,16 @@
@Override
public boolean isWebServiceDeployment(DeploymentUnit unit)
{
- Ejb3Deployment ejb3Deployment = unit.getAttachment(Ejb3Deployment.class);
- if (ejb3Deployment == null)
+ WebServiceDeployment webServiceDeployment = unit.getAttachment(WebServiceDeployment.class);
+ if (null == webServiceDeployment )
return false;
boolean isWebServiceDeployment = false;
- Iterator it = ejb3Deployment.getEjbContainers().values().iterator();
+ Iterator<WebServiceDeclaration> it = webServiceDeployment.getServiceEndpoints().iterator();
while (it.hasNext())
{
- EJBContainer container = (EJBContainer)it.next();
+ WebServiceDeclaration container = it.next();
if (isWebServiceBean(container))
{
isWebServiceDeployment = true;
@@ -114,15 +112,13 @@
return isWebServiceDeployment;
}
- private boolean isWebServiceBean(EJBContainer container)
+ private boolean isWebServiceBean(WebServiceDeclaration container)
{
boolean isWebServiceBean = false;
- if (container instanceof StatelessContainer || container instanceof MessagingContainer)
- {
- boolean isWebService = container.resolveAnnotation(WebService.class) != null;
- boolean isWebServiceProvider = container.resolveAnnotation(WebServiceProvider.class) != null;
- isWebServiceBean = isWebService || isWebServiceProvider;
- }
+ boolean isWebService = container.getAnnotation(WebService.class) != null;
+ boolean isWebServiceProvider = container.getAnnotation(WebServiceProvider.class) != null;
+ isWebServiceBean = isWebService || isWebServiceProvider;
+
return isWebServiceBean;
}
}
\ No newline at end of file
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/RuntimeLoaderDeploymentAspect.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/RuntimeLoaderDeploymentAspect.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/RuntimeLoaderDeploymentAspect.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -27,7 +27,7 @@
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.DeploymentAspect;
-import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
/**
* Determines the correct runtime loader for per deployment type
@@ -41,7 +41,7 @@
public void create(Deployment dep)
{
// EJB3 endpoints
- if (dep.getAttachment(Ejb3Deployment.class) != null)
+ if (dep.getAttachment(WebServiceDeployment.class) != null)
{
dep.setRuntimeClassLoader(dep.getInitialClassLoader());
}
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/SecurityHandlerEJB3.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/SecurityHandlerEJB3.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/SecurityHandlerEJB3.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -23,21 +23,20 @@
//$Id$
-import java.util.Iterator;
-
-import javax.annotation.security.RolesAllowed;
-
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.Ejb3Deployment;
import org.jboss.ejb3.annotation.SecurityDomain;
import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.wsf.spi.deployment.Deployment;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import javax.annotation.security.RolesAllowed;
+import java.util.Iterator;
+
/**
- * Handle web app security meta data for EJB3
- *
+ * Handle web app security meta data for EJB3
+ *
* @author Thomas.Diesler at jboss.org
* @since 12-May-2006
*/
@@ -47,14 +46,14 @@
{
String securityDomain = null;
- Ejb3Deployment ejb3Deployment = dep.getAttachment(Ejb3Deployment.class);
- if (ejb3Deployment != null)
+ WebServiceDeployment webServiceDeployment = dep.getAttachment(WebServiceDeployment.class);
+ if (webServiceDeployment != null)
{
- Iterator it = ejb3Deployment.getEjbContainers().values().iterator();
+ Iterator<WebServiceDeclaration> it = webServiceDeployment.getServiceEndpoints().iterator();
while (it.hasNext())
{
- EJBContainer container = (EJBContainer)it.next();
- SecurityDomain anSecurityDomain = (SecurityDomain)container.resolveAnnotation(SecurityDomain.class);
+ WebServiceDeclaration container = it.next();
+ SecurityDomain anSecurityDomain = container.getAnnotation(SecurityDomain.class);
if (anSecurityDomain != null)
{
if (securityDomain != null && !securityDomain.equals(anSecurityDomain.value()))
@@ -76,14 +75,14 @@
public void addSecurityRoles(JBossWebMetaData webApp, Deployment dep)
{
- Ejb3Deployment ejb3Deployment = dep.getAttachment(Ejb3Deployment.class);
- if (ejb3Deployment != null)
+ WebServiceDeployment webServiceDeployment = dep.getAttachment(WebServiceDeployment.class);
+ if (webServiceDeployment != null)
{
- Iterator it = ejb3Deployment.getEjbContainers().values().iterator();
+ Iterator<WebServiceDeclaration> it = webServiceDeployment.getServiceEndpoints().iterator();
while (it.hasNext())
{
- EJBContainer container = (EJBContainer)it.next();
- RolesAllowed anRolesAllowed = (RolesAllowed)container.resolveAnnotation(RolesAllowed.class);
+ WebServiceDeclaration container = it.next();
+ RolesAllowed anRolesAllowed = container.getAnnotation(RolesAllowed.class);
if (anRolesAllowed != null)
{
SecurityRolesMetaData securityRoles = webApp.getSecurityRoles();
@@ -97,4 +96,4 @@
}
}
}
-}
+}
\ No newline at end of file
Modified: trunk/webservices/src/main/org/jboss/wsf/container/jboss50/WebServiceDeployerEJB.java
===================================================================
--- trunk/webservices/src/main/org/jboss/wsf/container/jboss50/WebServiceDeployerEJB.java 2008-05-04 04:39:42 UTC (rev 73035)
+++ trunk/webservices/src/main/org/jboss/wsf/container/jboss50/WebServiceDeployerEJB.java 2008-05-04 18:17:33 UTC (rev 73036)
@@ -21,27 +21,150 @@
*/
package org.jboss.wsf.container.jboss50;
-import org.jboss.ejb.deployers.EjbDeployment;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb.deployers.MergedJBossMetaDataDeployer;
import org.jboss.ejb3.Ejb3Deployment;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
//$Id: WebServiceDeployerEJB.java 3146 2007-05-18 22:55:26Z thomas.diesler at jboss.com $
/**
* This web service deployer for EJB
- *
+ *
* @author Thomas.Diesler at jboss.org
* @since 24-Apr-2007
*/
public class WebServiceDeployerEJB extends AbstractWebServiceDeployer
{
+ private static final Logger log = Logger.getLogger(WebServiceDeployerEJB.class);
+
public WebServiceDeployerEJB()
{
- // Output of the EJBDeployer
- addInput(EjbDeployment.class);
- // Output of the EJB3Deployer
+ addInput(MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME);
+
addInput(Ejb3Deployment.class);
+
// Input for the TomcatDeployer
addOutput(JBossWebMetaData.class);
+
+ addOutput(WebServiceDeployment.class);
+
}
+
+ @Override
+ public void internalDeploy(DeploymentUnit unit) throws DeploymentException
+ {
+ JBossMetaData beans = (JBossMetaData)unit.getAttachment(
+ MergedJBossMetaDataDeployer.EJB_MERGED_ATTACHMENT_NAME
+ );
+
+ Ejb3Deployment ejb3Deployment = unit.getAttachment(Ejb3Deployment.class);
+
+ if(beans!=null)
+ {
+ WebServiceDeploymentAdapter wsDeployment = new WebServiceDeploymentAdapter();
+ Iterator<JBossEnterpriseBeanMetaData> iterator = beans.getEnterpriseBeans().iterator();
+ while(iterator.hasNext())
+ {
+ JBossEnterpriseBeanMetaData ejb = iterator.next();
+ if(ejb.getEjbClass()!=null)
+ wsDeployment.getEndpoints().add( new WebServiceDeclarationAdapter(ejb, unit.getClassLoader()) );
+ else
+ log.warn("Ingore ejb deployment with null classname: " + ejb);
+ }
+
+ unit.addAttachment(WebServiceDeployment.class, wsDeployment);
+
+ super.internalDeploy(unit);
+ }
+ }
+
+ @Override
+ public void internalUndeploy(DeploymentUnit unit)
+ {
+ super.internalUndeploy(unit);
+ }
+
+ /**
+ * Adopts EJB3 bean meta data to a {@link org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration}
+ */
+ private class WebServiceDeclarationAdapter implements WebServiceDeclaration
+ {
+
+ private JBossEnterpriseBeanMetaData ejbMetaData;
+ private ClassLoader loader;
+
+ public WebServiceDeclarationAdapter(JBossEnterpriseBeanMetaData ejbMetaData, ClassLoader loader)
+ {
+ this.ejbMetaData = ejbMetaData;
+ this.loader = loader;
+ }
+
+ public String getContainerName()
+ {
+ throw new RuntimeException("Not implemented");
+ }
+
+ public String getComponentName()
+ {
+ return ejbMetaData.getName();
+ }
+
+ public String getComponentClassName()
+ {
+ return ejbMetaData.getEjbClass();
+ }
+
+ public <T extends Annotation> T getAnnotation(Class<T> annotation)
+ {
+ Class bean = getComponentClass();
+ T result = null;
+ if(bean.isAnnotationPresent(annotation))
+ {
+ result = (T)bean.getAnnotation(annotation);
+ }
+
+ return result;
+ }
+
+ private Class getComponentClass()
+ {
+ try
+ {
+ return loader.loadClass(getComponentClassName());
+ } catch (ClassNotFoundException e)
+ {
+ throw new RuntimeException("Failed to load component class "+ getComponentClassName()+". Loader:" + this.loader);
+ }
+ }
+ }
+
+ /**
+ * Adopts an EJB deployment to a {@link org.jboss.wsf.spi.deployment.integration.WebServiceDeployment}
+ */
+ private class WebServiceDeploymentAdapter implements WebServiceDeployment
+ {
+ private List<WebServiceDeclaration> endpoints = new ArrayList<WebServiceDeclaration>();
+
+ public List<WebServiceDeclaration> getServiceEndpoints()
+ {
+ return endpoints;
+ }
+
+ public List<WebServiceDeclaration> getEndpoints()
+ {
+ return endpoints;
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list