[jbossws-commits] JBossWS SVN: r12988 - in stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf: metadata and 1 other directories.
jbossws-commits at lists.jboss.org
jbossws-commits at lists.jboss.org
Thu Sep 16 14:04:50 EDT 2010
Author: alessio.soldano at jboss.com
Date: 2010-09-16 14:04:50 -0400 (Thu, 16 Sep 2010)
New Revision: 12988
Modified:
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/NonSpringBusHolder.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java
stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/services/DDEndpoint.java
Log:
[JBWS-3000] Add handlers provided through webservices.xml
Modified: stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/NonSpringBusHolder.java
===================================================================
--- stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/NonSpringBusHolder.java 2010-09-16 11:03:11 UTC (rev 12987)
+++ stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/configuration/NonSpringBusHolder.java 2010-09-16 18:04:50 UTC (rev 12988)
@@ -24,6 +24,7 @@
import java.util.LinkedList;
import java.util.List;
+import javax.xml.ws.handler.Handler;
import javax.xml.ws.soap.SOAPBinding;
import org.apache.cxf.binding.soap.SoapTransportFactory;
@@ -99,6 +100,7 @@
endpoint.setEndpointName(dde.getPortName());
endpoint.setServiceName(dde.getServiceName());
endpoint.setWsdlLocation(dde.getWsdlLocation());
+ setHandlers(endpoint, dde.getHandlers());
endpoint.publish();
endpoints.add(endpoint);
if (dde.isMtomEnabled())
@@ -110,6 +112,20 @@
configured = true;
}
+ @SuppressWarnings("rawtypes")
+ private static void setHandlers(EndpointImpl endpoint, List<String> handlers)
+ {
+ if (handlers != null && !handlers.isEmpty())
+ {
+ List<Handler> handlerInstances = new LinkedList<Handler>();
+ for (String handler : handlers)
+ {
+ handlerInstances.add((Handler)newInstance(handler));
+ }
+ endpoint.setHandlers(handlerInstances);
+ }
+ }
+
@Override
public void close()
{
Modified: stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java
===================================================================
--- stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java 2010-09-16 11:03:11 UTC (rev 12987)
+++ stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/MetadataBuilder.java 2010-09-16 18:04:50 UTC (rev 12988)
@@ -21,6 +21,8 @@
*/
package org.jboss.wsf.stack.cxf.metadata;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Stack;
import java.util.StringTokenizer;
@@ -35,8 +37,11 @@
import org.jboss.wsf.common.JavaUtils;
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.Endpoint;
-import org.jboss.wsf.spi.deployment.Deployment.DeploymentType;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerChainsMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedHandlerMetaData;
import org.jboss.wsf.spi.metadata.webservices.PortComponentMetaData;
import org.jboss.wsf.spi.metadata.webservices.WebserviceDescriptionMetaData;
import org.jboss.wsf.spi.metadata.webservices.WebservicesFactory;
@@ -136,7 +141,31 @@
endpoint.setServiceName(portComp.getWsdlService());
}
- //TODO implement handler chain override
+ //HandlerChain contributions
+ UnifiedHandlerChainsMetaData chainWrapper = portComp.getHandlerChains();
+ if (chainWrapper != null)
+ {
+ List<String> handlers = new LinkedList<String>();
+ for (UnifiedHandlerChainMetaData handlerChain : chainWrapper.getHandlerChains())
+ {
+ if (handlerChain.getPortNamePattern() != null || handlerChain.getProtocolBindings() != null
+ || handlerChain.getServiceNamePattern() != null)
+ {
+ log.warn("PortNamePattern, ServiceNamePattern and ProtocolBindings filters not supported; adding handlers anyway.");
+ }
+ for (UnifiedHandlerMetaData uhmd : handlerChain.getHandlers())
+ {
+ if (log.isDebugEnabled())
+ log.debug("Contribute handler from webservices.xml: " + uhmd.getHandlerName());
+ if (uhmd.getInitParams() != null && !uhmd.getInitParams().isEmpty())
+ {
+ log.warn("Init params not supported.");
+ }
+ handlers.add(uhmd.getHandlerClass());
+ }
+ }
+ endpoint.setHandlers(handlers);
+ }
// MTOM settings
if (portComp.isEnableMtom())
Modified: stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/services/DDEndpoint.java
===================================================================
--- stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/services/DDEndpoint.java 2010-09-16 11:03:11 UTC (rev 12987)
+++ stack/cxf/trunk/modules/server/src/main/java/org/jboss/wsf/stack/cxf/metadata/services/DDEndpoint.java 2010-09-16 18:04:50 UTC (rev 12988)
@@ -23,6 +23,7 @@
import java.io.IOException;
import java.io.Writer;
+import java.util.List;
import javax.xml.namespace.QName;
@@ -49,6 +50,8 @@
private QName portName;
private QName serviceName;
+ private List<String> handlers;
+
//additional fields
private Class<?> epClass;
@@ -128,6 +131,11 @@
{
return invoker;
}
+
+ public List<String> getHandlers()
+ {
+ return handlers;
+ }
public boolean isMtomEnabled()
{
@@ -138,6 +146,11 @@
{
this.invoker = invoker;
}
+
+ public void setHandlers(List<String> handlers)
+ {
+ this.handlers = handlers;
+ }
public void setMtomEnabled(boolean mtomEnabled)
{
@@ -174,6 +187,16 @@
{
writer.write("<jaxws:invoker><bean class='" + this.invoker + "'/></jaxws:invoker>");
}
+
+ if (this.handlers != null && !this.handlers.isEmpty())
+ {
+ writer.write("<jaxws:handlers>");
+ for (String handler : this.handlers)
+ {
+ writer.write("<bean class='" + handler + "'/>");
+ }
+ writer.write("</jaxws:handlers>");
+ }
writer.write("</jaxws:endpoint>");
}
More information about the jbossws-commits
mailing list