[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