Author: richard.opalka(a)jboss.com
Date: 2009-06-26 05:38:02 -0400 (Fri, 26 Jun 2009)
New Revision: 10239
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerUtils.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeploymentTypeDeployer.java
Removed:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookEJB.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerHookPostJSE.java
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookEJB21.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPostJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookEJB3.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPostJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
Log:
[JBWS-2332][JBWS-2382] another refactoring (WIP)
Deleted:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookEJB.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookEJB.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookEJB.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -1,32 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.wsf.container.jboss50.deployer;
-
-/**
- * An abstract deployer for EJB Endpoints
- *
- * @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
- */
-public abstract class AbstractDeployerHookEJB extends ArchiveDeployerHook
-{
-}
Deleted:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/AbstractDeployerHookJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -1,126 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.wsf.container.jboss50.deployer;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.jws.WebService;
-import javax.servlet.Servlet;
-import javax.xml.ws.WebServiceProvider;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.metadata.javaee.spec.ParamValueMetaData;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.metadata.web.spec.ServletMetaData;
-import org.jboss.wsf.spi.deployment.Endpoint;
-import org.jboss.wsf.container.jboss50.deployment.tomcat.WebMetaDataModifier;
-
-/**
- * An abstract deployer for JSE Endpoints
- *
- * @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
- */
-public abstract class AbstractDeployerHookJSE extends ArchiveDeployerHook
-{
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
- boolean isGenerated =
Boolean.TRUE.equals(unit.getAttachment(WebMetaDataModifier.PROPERTY_GENERATED_WEBAPP));
- return webMetaData != null && isGenerated == false;
- }
-
- protected String getTargetBean(ServletMetaData servlet)
- {
- String endpointClass = servlet.getServletClass();
- List<ParamValueMetaData> initParams = servlet.getInitParam();
- if (initParams != null)
- {
- for (ParamValueMetaData param : initParams)
- {
- if (Endpoint.SEPID_DOMAIN_ENDPOINT.equals(param.getParamName()))
- {
- endpointClass = param.getParamValue();
- break;
- }
- }
- }
- return endpointClass;
- }
-
- protected final List<ServletMetaData> getRelevantJAXWSServlets(JBossWebMetaData
webMetaData, ClassLoader loader)
- {
- return getRelevantServlets( webMetaData, loader, true );
- }
-
- protected final List<ServletMetaData> getRelevantJAXRPCServlets(JBossWebMetaData
webMetaData, ClassLoader loader)
- {
- return getRelevantServlets( webMetaData, loader, false );
- }
-
- private final List<ServletMetaData> getRelevantServlets(JBossWebMetaData
webMetaData, ClassLoader loader, boolean jaxws)
- {
- List<ServletMetaData> endpoints = new ArrayList<ServletMetaData>();
- for (ServletMetaData servlet : webMetaData.getServlets())
- {
- String servletClassName = getTargetBean(servlet);
-
- // Skip JSPs
- if (servletClassName == null || servletClassName.length() == 0)
- continue;
-
- try
- {
- Class<?> servletClass = loader.loadClass(servletClassName.trim());
- boolean isServlet = servletClass.isAssignableFrom(Servlet.class);
- if (false == isServlet)
- {
- boolean isWebService =
servletClass.isAnnotationPresent(WebService.class);
- boolean isWebServiceProvider =
servletClass.isAnnotationPresent(WebServiceProvider.class);
- if ( jaxws )
- {
- if (isWebService || isWebServiceProvider)
- {
- endpoints.add(servlet); // jaxws endpoint
- }
- }
- else
- {
- if (!isWebService && !isWebServiceProvider)
- {
- endpoints.add(servlet); // jaxrpc endpoint
- }
- }
- }
- }
- catch (ClassNotFoundException ex)
- {
- log.warn("Cannot load servlet class: " + servletClassName);
- continue;
- }
- }
-
- return endpoints;
- }
-
-}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/ArchiveDeployerHook.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -32,6 +32,7 @@
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.UnifiedVirtualFile;
import org.jboss.wsf.spi.deployment.WSFDeploymentException;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
import org.jboss.wsf.spi.metadata.webservices.WebservicesFactory;
import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
import org.jboss.xb.binding.ObjectModelFactory;
@@ -93,11 +94,18 @@
/** Depending on the type of deployment, this method should return true
* if the deployment contains web service endpoints.
*/
- public abstract boolean isWebServiceDeployment(DeploymentUnit unit);
+ public boolean isWebServiceDeployment(DeploymentUnit unit)
+ {
+ final DeploymentType deploymentType = unit.getAttachment( DeploymentType.class );
+ return this.getDeploymentType().equals( deploymentType );
+ }
/** Create the Deployment for a given DeploymentUnit
*/
- public abstract Deployment createDeployment(DeploymentUnit unit);
+ public Deployment createDeployment(DeploymentUnit unit)
+ {
+ return unit.getAttachment(Deployment.class);
+ }
/** Get the Deployment for a given DeploymentUnit
*/
Deleted:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerHookPostJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerHookPostJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerHookPostJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -1,59 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.wsf.container.jboss50.deployer;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.wsf.spi.deployment.Deployment;
-
-/**
- * @author Heiko.Braun(a)jboss.com
- * @author Thomas.Diesler(a)jboss.com
- */
-public abstract class DeployerHookPostJSE extends AbstractDeployerHookJSE
-{
- /**
- * The deployment should be created in phase 1.
- */
- public Deployment createDeployment(DeploymentUnit unit)
- {
- Deployment dep = unit.getAttachment(Deployment.class);
- if (null == dep)
- throw new IllegalStateException("spi.Deployment missing. It should be
created in Phase 1");
-
- return dep;
- }
-
- /**
- * A phase 2 deployer hook needs to reject first-place
- * JSE deployments and wait for those that are re-written.
- * We rely on the fact that spi.Deployment is created in phase 1.
- */
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- if (super.isWebServiceDeployment(unit) == false)
- return false;
-
- Deployment deployment = unit.getAttachment(Deployment.class);
- return deployment != null;
- }
-}
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerUtils.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerUtils.java
(rev 0)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/DeployerUtils.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.wsf.container.jboss50.deployer;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.jws.WebService;
+import javax.servlet.Servlet;
+import javax.xml.ws.WebServiceProvider;
+
+import org.jboss.logging.Logger;
+import org.jboss.metadata.javaee.spec.ParamValueMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.wsf.spi.deployment.Endpoint;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+
+/**
+ * TODO: javadoc
+ *
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
+ */
+final class DeployerUtils
+{
+
+ /** Logger. */
+ private static final Logger log = Logger.getLogger( DeployerUtils.class );
+
+ /**
+ * Forbidden constructor.
+ */
+ private DeployerUtils()
+ {
+ super();
+ }
+
+ static final boolean isWebServiceBean( final WebServiceDeclaration ejbContainerAdapter
)
+ {
+ boolean isWebServiceBean = false;
+ boolean isWebService = ejbContainerAdapter.getAnnotation(WebService.class) !=
null;
+ boolean isWebServiceProvider =
ejbContainerAdapter.getAnnotation(WebServiceProvider.class) != null;
+ isWebServiceBean = isWebService || isWebServiceProvider;
+
+ return isWebServiceBean;
+ }
+
+ static final List<ServletMetaData> getRelevantJAXWSServlets( final
JBossWebMetaData webMD, final ClassLoader loader)
+ {
+ return DeployerUtils.getRelevantServlets( webMD, loader, true );
+ }
+
+ static List<ServletMetaData> getRelevantJAXRPCServlets( final JBossWebMetaData
webMD, final ClassLoader loader)
+ {
+ return DeployerUtils.getRelevantServlets( webMD, loader, false );
+ }
+
+ private static final List< ServletMetaData > getRelevantServlets
+ (
+ final JBossWebMetaData webMD, final ClassLoader loader, final boolean jaxws
+ )
+ {
+ List<ServletMetaData> endpoints = new ArrayList<ServletMetaData>();
+ for (ServletMetaData servlet : webMD.getServlets())
+ {
+ String servletClassName = getTargetBean(servlet);
+
+ // Skip JSPs
+ if (servletClassName == null || servletClassName.length() == 0)
+ continue;
+
+ try
+ {
+ Class<?> servletClass = loader.loadClass(servletClassName.trim());
+ boolean isServlet = servletClass.isAssignableFrom(Servlet.class);
+ if (false == isServlet)
+ {
+ boolean isWebService =
servletClass.isAnnotationPresent(WebService.class);
+ boolean isWebServiceProvider =
servletClass.isAnnotationPresent(WebServiceProvider.class);
+ if ( jaxws )
+ {
+ if (isWebService || isWebServiceProvider)
+ {
+ endpoints.add(servlet); // jaxws endpoint
+ }
+ }
+ else
+ {
+ if (!isWebService && !isWebServiceProvider)
+ {
+ endpoints.add(servlet); // jaxrpc endpoint
+ }
+ }
+ }
+ }
+ catch (ClassNotFoundException ex)
+ {
+ log.warn("Cannot load servlet class: " + servletClassName);
+ continue;
+ }
+ }
+
+ return endpoints;
+ }
+
+ static String getTargetBean(ServletMetaData servlet)
+ {
+ String endpointClass = servlet.getServletClass();
+ List<ParamValueMetaData> initParams = servlet.getInitParam();
+ if (initParams != null)
+ {
+ for (ParamValueMetaData param : initParams)
+ {
+ if (Endpoint.SEPID_DOMAIN_ENDPOINT.equals(param.getParamName()))
+ {
+ endpointClass = param.getParamValue();
+ break;
+ }
+ }
+ }
+ return endpointClass;
+ }
+}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookEJB21.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookEJB21.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookEJB21.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -37,14 +37,16 @@
import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
- * A deployer JAXRPC EJB21 Endpoints
+ * A deployer hook for JAXRPC EJB21 Endpoints.
*
* @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXRPCDeployerHookEJB21 extends AbstractDeployerHookEJB
+public class JAXRPCDeployerHookEJB21 extends ArchiveDeployerHook
{
- /** Get the deployemnt type this deployer can handle
+
+ /**
+ * Get the deployment type this deployer hook can handle.
*/
public DeploymentType getDeploymentType()
{
@@ -101,10 +103,4 @@
return dep;
}
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- WebservicesMetaData wsMetaData = getWebservicesMetaData(unit);
- return wsMetaData != null &&
unit.getAllMetaData(JBossMetaData.class).size() > 0;
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPostJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPostJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPostJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -21,32 +21,23 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
- * A deployer JAXRPC JSE Endpoints
+ * A phase two deployer hook for JAXRPC JSE Endpoints.
*
* @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXRPCDeployerHookPostJSE extends DeployerHookPostJSE
+public class JAXRPCDeployerHookPostJSE extends ArchiveDeployerHook
{
/**
- * Get the deployment type this deployer can handle
+ * Get the deployment type this deployer hook can handle.
*/
public Deployment.DeploymentType getDeploymentType()
{
return Deployment.DeploymentType.JAXRPC_JSE;
}
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- WebservicesMetaData wsMetaData = getWebservicesMetaData(unit);
- return (wsMetaData!=null && super.isWebServiceDeployment(unit));
- }
-
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXRPCDeployerHookPreJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -21,8 +21,6 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
-import java.util.List;
-
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.serviceref.VirtualFileAdaptor;
@@ -39,15 +37,16 @@
import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
- * A deployer JAXRPC JSE Endpoints
+ * A phase one deployer hook for JAXRPC JSE Endpoints.
*
* @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXRPCDeployerHookPreJSE extends AbstractDeployerHookJSE
+public class JAXRPCDeployerHookPreJSE extends ArchiveDeployerHook
{
- /** Get the deployemnt type this deployer can handle
+ /**
+ * Get the deployment type this deployer hook can handle.
*/
public DeploymentType getDeploymentType()
{
@@ -88,7 +87,7 @@
throw new IllegalStateException("servlet-link cannot be null");
ServletMetaData servlet = getServletForName(webMetaData, servletLink);
- String targetBean = getTargetBean(servlet);
+ String targetBean = DeployerUtils.getTargetBean(servlet);
// Create the endpoint
Endpoint ep = newEndpoint(targetBean);
@@ -112,30 +111,4 @@
throw new IllegalStateException("Cannot find servlet for link: " +
servletLink);
}
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- if (super.isWebServiceDeployment(unit) == false)
- return false;
-
- WebservicesMetaData wsMetaData = getWebservicesMetaData(unit);
- if ( wsMetaData == null )
- {
- return false;
- }
-
- boolean isWebServiceDeployment = false;
- try
- {
- JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
- List<ServletMetaData> servlets = getRelevantJAXRPCServlets(webMetaData,
unit.getClassLoader());
- isWebServiceDeployment = servlets.size() > 0;
- }
- catch (Exception ex)
- {
- log.error("Cannot process web deployment", ex);
- }
-
- return isWebServiceDeployment;
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookEJB3.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookEJB3.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookEJB3.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -21,6 +21,8 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
+import java.util.Iterator;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.serviceref.VirtualFileAdaptor;
@@ -33,19 +35,17 @@
import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
import org.jboss.wsf.container.jboss50.invocation.InvocationHandlerEJB3;
-import javax.jws.WebService;
-import javax.xml.ws.WebServiceProvider;
-import java.util.Iterator;
-
/**
- * A deployer JAXWS EJB3 Endpoints
+ * A deployer hook for JAXWS EJB3 Endpoints.
*
* @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXWSDeployerHookEJB3 extends AbstractDeployerHookEJB
+public class JAXWSDeployerHookEJB3 extends ArchiveDeployerHook
{
- /** Get the deployemnt type this deployer can handle
+
+ /**
+ * Get the deployment type this deployer hook can handle.
*/
public DeploymentType getDeploymentType()
{
@@ -73,7 +73,7 @@
while (it.hasNext())
{
WebServiceDeclaration container = it.next();
- if (isWebServiceBean(container))
+ if (DeployerUtils.isWebServiceBean(container))
{
String ejbName = container.getComponentName();
String epBean = container.getComponentClassName();
@@ -94,36 +94,4 @@
return dep;
}
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- WebServiceDeployment webServiceDeployment =
unit.getAttachment(WebServiceDeployment.class);
- if (null == webServiceDeployment )
- return false;
-
- boolean isWebServiceDeployment = false;
-
- Iterator<WebServiceDeclaration> it =
webServiceDeployment.getServiceEndpoints().iterator();
- while (it.hasNext())
- {
- WebServiceDeclaration container = it.next();
- if (isWebServiceBean(container))
- {
- isWebServiceDeployment = true;
- break;
- }
- }
-
- return isWebServiceDeployment;
- }
-
- private boolean isWebServiceBean(WebServiceDeclaration container)
- {
- boolean isWebServiceBean = false;
- boolean isWebService = container.getAnnotation(WebService.class) != null;
- boolean isWebServiceProvider = container.getAnnotation(WebServiceProvider.class) !=
null;
- isWebServiceBean = isWebService || isWebServiceProvider;
-
- return isWebServiceBean;
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPostJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPostJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPostJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -21,33 +21,23 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.wsf.spi.deployment.Deployment;
-import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
/**
+ * A phase two deployer hook for JAXWS JSE Endpoints.
+ *
* @author Heiko.Braun(a)jboss.com
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXWSDeployerHookPostJSE extends DeployerHookPostJSE
+public class JAXWSDeployerHookPostJSE extends ArchiveDeployerHook
{
/**
- * Get the deployment type this deployer can handle
+ * Get the deployment type this deployer hook can handle.
*/
public Deployment.DeploymentType getDeploymentType()
{
return Deployment.DeploymentType.JAXWS_JSE;
}
- /**
- * Reject JAX-RPC deployments.
- *
- * @param unit
- * @return
- */
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- WebservicesMetaData wsMetaData = getWebservicesMetaData(unit);// JAX-RPC artefact
- return (wsMetaData == null && super.isWebServiceDeployment(unit));
- }
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/JAXWSDeployerHookPreJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -21,6 +21,8 @@
*/
package org.jboss.wsf.container.jboss50.deployer;
+import java.util.List;
+
import org.jboss.deployers.structure.spi.DeploymentUnit;
import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
@@ -32,21 +34,17 @@
import org.jboss.wsf.spi.deployment.Endpoint;
import org.jboss.wsf.spi.deployment.Service;
-import javax.jws.WebService;
-import javax.xml.ws.WebServiceProvider;
-import java.util.ArrayList;
-import java.util.List;
-
/**
- * A deployer JAXWS JSE Endpoints
+ * A phase one deployer hook for JAXWS JSE Endpoints.
*
* @author Thomas.Diesler(a)jboss.org
- * @since 25-Apr-2007
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
*/
-public class JAXWSDeployerHookPreJSE extends AbstractDeployerHookJSE
+public class JAXWSDeployerHookPreJSE extends ArchiveDeployerHook
{
- /** Get the deployment type this deployer can handle
+ /**
+ * Get the deployment type this deployer hook can handle.
*/
public DeploymentType getDeploymentType()
{
@@ -69,11 +67,11 @@
// Copy the attachments
dep.addAttachment(JBossWebMetaData.class, webMetaData);
- List<ServletMetaData> servlets = getRelevantJAXWSServlets(webMetaData,
unit.getClassLoader());
+ List<ServletMetaData> servlets =
DeployerUtils.getRelevantJAXWSServlets(webMetaData, unit.getClassLoader());
for (ServletMetaData servlet : servlets)
{
String servletName = servlet.getName();
- String targetBean = getTargetBean(servlet);
+ String targetBean = DeployerUtils.getTargetBean(servlet);
// Create the endpoint
Endpoint ep = newEndpoint(targetBean);
@@ -84,25 +82,4 @@
return dep;
}
- @Override
- public boolean isWebServiceDeployment(DeploymentUnit unit)
- {
- if (super.isWebServiceDeployment(unit) == false)
- return false;
-
- boolean isWebServiceDeployment = false;
- try
- {
- JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
- List<ServletMetaData> servlets = getRelevantJAXWSServlets(webMetaData,
unit.getClassLoader());
- isWebServiceDeployment = servlets.size() > 0;
- }
- catch (Exception ex)
- {
- log.error("Cannot process web deployment", ex);
- }
-
- return isWebServiceDeployment;
- }
-
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerEJB.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -22,7 +22,7 @@
package org.jboss.wsf.container.jboss50.deployer;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
/**
* This it the web service deployer for EJB. It gets
@@ -46,10 +46,13 @@
// inputs
this.addInput( JBossWebMetaData.class );
- this.addInput( WebServiceDeployment.class );
-
+ this.addInput( DeploymentType.class );
+
// outputs
this.addOutput( JBossWebMetaData.class );
+
+ // [JBDEPLOY-201] workaround
+ this.setRelativeOrder( 2 );
}
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPostJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -22,7 +22,7 @@
package org.jboss.wsf.container.jboss50.deployer;
import org.jboss.web.deployers.WarDeployment;
-import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
/**
* The phase two web service deployer for JSE.
@@ -42,8 +42,8 @@
super();
// inputs
+ this.addInput( DeploymentType.class );
this.addInput( WarDeployment.class );
- this.addInput( WebservicesMetaData.class );
}
}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeployerPreJSE.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -22,7 +22,7 @@
package org.jboss.wsf.container.jboss50.deployer;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
-import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
/**
* The phase one web service deployer for JSE.
@@ -43,10 +43,13 @@
// inputs
this.addInput( JBossWebMetaData.class );
- this.addInput( WebservicesMetaData.class );
+ this.addInput( DeploymentType.class );
// outputs
this.addOutput( JBossWebMetaData.class );
+
+ // [JBDEPLOY-201] workaround
+ this.setRelativeOrder( 3 ); // [JBDEPLOY-201] workaround
}
}
Added:
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeploymentTypeDeployer.java
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeploymentTypeDeployer.java
(rev 0)
+++
container/jboss50/branches/ropalka-jboss510/src/main/java/org/jboss/wsf/container/jboss50/deployer/WebServiceDeploymentTypeDeployer.java 2009-06-26
09:38:02 UTC (rev 10239)
@@ -0,0 +1,171 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.wsf.container.jboss50.deployer;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMetaData;
+import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeclaration;
+import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
+import org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData;
+
+/**
+ * Detects webservice deployment type.
+ * TODO: move all isWebServiceDeployment staff here, use DeploymentVisitor?
+ *
+ * @author <a href="ropalka(a)redhat.com">Richard Opalka</a>
+ */
+public final class WebServiceDeploymentTypeDeployer extends AbstractRealDeployer
+{
+
+ /**
+ * Constructor.
+ */
+ public WebServiceDeploymentTypeDeployer()
+ {
+ super();
+
+ // inputs
+ this.addInput( JBossWebMetaData.class );
+ this.addInput( WebservicesMetaData.class );
+ this.addInput( WebServiceDeployment.class );
+
+ // outputs
+ this.addOutput( DeploymentType.class );
+ this.addOutput( JBossWebMetaData.class );
+
+ // [JBDEPLOY-201] workaround
+ this.setRelativeOrder( 1 );
+ }
+
+ /**
+ * Detects deployment type and puts it to the deployment unit attachment.
+ */
+ @Override
+ protected void internalDeploy( final DeploymentUnit unit ) throws DeploymentException
+ {
+ if ( isJAXRPCEJB21DeploymentType( unit ) )
+ {
+ unit.addAttachment( DeploymentType.class, DeploymentType.JAXRPC_EJB21 );
+ }
+ else if ( isJAXWSEJB3DeploymentType( unit ) )
+ {
+ unit.addAttachment( DeploymentType.class, DeploymentType.JAXWS_EJB3 );
+ }
+ else if ( isJAXRPCJSEDeploymentType( unit ) )
+ {
+ unit.addAttachment( DeploymentType.class, DeploymentType.JAXRPC_JSE );
+ }
+ else if ( isJAXWSJSEDeploymentType( unit ) )
+ {
+ unit.addAttachment( DeploymentType.class, DeploymentType.JAXWS_JSE );
+ }
+ }
+
+ private boolean isJAXRPCEJB21DeploymentType( final DeploymentUnit unit )
+ {
+ WebservicesMetaData wsMetaData = unit.getAttachment( WebservicesMetaData.class );
+ return ( wsMetaData != null ) && ( unit.getAllMetaData( JBossMetaData.class
).size() > 0 );
+ }
+
+ private boolean isJAXRPCJSEDeploymentType( final DeploymentUnit unit )
+ {
+ JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+
+ if (webMetaData == null)
+ {
+ return false;
+ }
+
+ WebservicesMetaData wsMetaData = unit.getAttachment( WebservicesMetaData.class );
+ if ( wsMetaData == null )
+ {
+ return false;
+ }
+
+ boolean isWebServiceDeployment = false;
+ try
+ {
+ List<ServletMetaData> servlets =
DeployerUtils.getRelevantJAXRPCServlets(webMetaData, unit.getClassLoader());
+ isWebServiceDeployment = servlets.size() > 0;
+ }
+ catch (Exception ex)
+ {
+ log.error("Cannot process web deployment", ex);
+ }
+
+ return isWebServiceDeployment;
+ }
+
+ private boolean isJAXWSEJB3DeploymentType( final DeploymentUnit unit )
+ {
+ WebServiceDeployment webServiceDeployment =
unit.getAttachment(WebServiceDeployment.class);
+ if (null == webServiceDeployment )
+ return false;
+
+ boolean isWebServiceDeployment = false;
+
+ Iterator<WebServiceDeclaration> it =
webServiceDeployment.getServiceEndpoints().iterator();
+ while (it.hasNext())
+ {
+ WebServiceDeclaration container = it.next();
+ if (DeployerUtils.isWebServiceBean(container))
+ {
+ isWebServiceDeployment = true;
+ break;
+ }
+ }
+
+ return isWebServiceDeployment;
+ }
+
+ public boolean isJAXWSJSEDeploymentType( final DeploymentUnit unit )
+ {
+ JBossWebMetaData webMetaData = unit.getAttachment(JBossWebMetaData.class);
+
+ if (webMetaData == null)
+ {
+ return false;
+ }
+
+ boolean isWebServiceDeployment = false;
+ try
+ {
+ List<ServletMetaData> servlets =
DeployerUtils.getRelevantJAXWSServlets(webMetaData, unit.getClassLoader());
+ isWebServiceDeployment = servlets.size() > 0;
+ }
+ catch (Exception ex)
+ {
+ log.error("Cannot process web deployment", ex);
+ }
+
+ return isWebServiceDeployment;
+ }
+
+}
Modified:
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
===================================================================
---
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-06-24
17:22:33 UTC (rev 10238)
+++
container/jboss50/branches/ropalka-jboss510/src/main/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-06-26
09:38:02 UTC (rev 10239)
@@ -76,9 +76,6 @@
*********************************************************************************************************************
-->
- <!--
- A deployer that processes webservices.xml file
- -->
<bean name="WebServicesMetaDataDeployer"
class="org.jboss.wsf.container.jboss50.deployer.WebServicesMetaDataDeployer">
<property name="name">webservices.xml</property>
<property name="useSchemaValidation">true</property>
@@ -86,19 +83,12 @@
<bean name="WebServiceDeploymentDeployer"
class="org.jboss.wsf.container.jboss50.deployer.WebServiceDeploymentDeployer"/>
- <!--
- A web service deployer that hooks in after the EJB deployers
- -->
+ <bean name="WebServiceDeploymentTypeDeployer"
class="org.jboss.wsf.container.jboss50.deployer.WebServiceDeploymentTypeDeployer"/>
+
<bean name="WebServiceDeployerEJB"
class="org.jboss.wsf.container.jboss50.deployer.WebServiceDeployerEJB"/>
- <!--
- A web service deployer that hooks in before the WAR deployer
- -->
<bean name="WebServiceDeployerPreJSE"
class="org.jboss.wsf.container.jboss50.deployer.WebServiceDeployerPreJSE"/>
- <!--
- A web service deployer that hooks in after the WAR deployer
- -->
<bean name="WebServiceDeployerPostJSE"
class="org.jboss.wsf.container.jboss50.deployer.WebServiceDeployerPostJSE"/>
<!--