[jboss-svn-commits] JBossWS SVN: r737 - in branches/tdiesler/trunk/src: main/java/org/jboss/ws/deployment main/java/org/jboss/ws/integration/jboss main/java/org/jboss/ws/jaxrpc main/java/org/jboss/ws/jaxrpc/handler main/java/org/jboss/ws/jaxws/handler main/java/org/jboss/ws/metadata main/java/org/jboss/ws/metadata/config/jaxrpc main/java/org/jboss/ws/metadata/config/jaxws main/java/org/jboss/ws/metadata/j2ee main/java/org/jboss/ws/metadata/jsr109 main/java/org/jboss/ws/metadata/jsr181 test/java/org/jboss/test/ws/config test/java/org/jboss/test/ws/jaxws/handlerscope test/resources/jaxws/handlerscope/WEB-INF

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 13 13:40:58 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-08-13 13:40:21 -0400 (Sun, 13 Aug 2006)
New Revision: 737

Added:
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java
Removed:
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java
Modified:
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java
   branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml
Log:
handler scoping

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -39,6 +39,7 @@
 import org.jboss.ws.metadata.UnifiedMetaData;
 import org.jboss.ws.metadata.EndpointMetaData.Type;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
 import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
 import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMappingFactory;
@@ -219,7 +220,7 @@
       // Setup the endpoint handlers
       if (serviceRefMetaData != null)
       {
-         for (UnifiedHandlerMetaData handlerMetaData : serviceRefMetaData.getHandlers())
+         for (UnifiedHandlerMetaDataJAXRPC handlerMetaData : serviceRefMetaData.getHandlers())
          {
             List portNames = Arrays.asList(handlerMetaData.getPortNames());
             if (portNames.size() == 0 || portNames.contains(portName.getLocalPart()))

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR109ServerMetaDataBuilder.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -46,6 +46,7 @@
 import org.jboss.ws.metadata.j2ee.UnifiedBeanMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedEjbPortComponentMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedWebMetaData;
 import org.jboss.ws.metadata.jaxrpcmapping.JavaWsdlMapping;
 import org.jboss.ws.metadata.jaxrpcmapping.ServiceEndpointInterfaceMapping;
@@ -224,7 +225,7 @@
                setupOperationsFromWSDL(sepMetaData, wsdlEndpoint, seiMapping);
 
                // Setup the endpoint handlers
-               for (UnifiedHandlerMetaData handlerMetaData : pcMetaData.getHandlers())
+               for (UnifiedHandlerMetaDataJAXRPC handlerMetaData : pcMetaData.getHandlers())
                {
                   List portNames = Arrays.asList(handlerMetaData.getPortNames());
                   if (portNames.size() == 0 || portNames.contains(portName.getLocalPart()))

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/deployment/JSR181MetaDataBuilder.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -56,7 +56,6 @@
 import org.jboss.ws.WSException;
 import org.jboss.ws.addressing.AddressingPropertiesImpl;
 import org.jboss.ws.addressing.metadata.AddressingOpMetaExt;
-import org.jboss.ws.annotation.PortComponent;
 import org.jboss.ws.jaxrpc.ParameterStyle;
 import org.jboss.ws.jaxrpc.ParameterWrapping;
 import org.jboss.ws.jaxrpc.Style;
@@ -74,9 +73,9 @@
 import org.jboss.ws.metadata.UnifiedMetaData;
 import org.jboss.ws.metadata.EndpointMetaData.Type;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.jsr181.HandlerChainFactory;
 import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 import org.jboss.ws.metadata.jsr181.HandlerChainsMetaData;
-import org.jboss.ws.metadata.jsr181.HandlerConfigFactory;
 import org.jboss.ws.metadata.wsdl.WSDLDefinitions;
 import org.jboss.ws.metadata.wsdl.WSDLUtils;
 import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSModel;
@@ -509,7 +508,7 @@
             Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
             unmarshaller.setValidation(true);
             unmarshaller.setSchemaValidation(true);
-            ObjectModelFactory factory = new HandlerConfigFactory(fileURL);
+            ObjectModelFactory factory = new HandlerChainFactory();
             handlerConfigMetaData = (HandlerChainsMetaData)unmarshaller.unmarshal(is, factory, null);
          }
          finally

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -24,6 +24,7 @@
 // $Id$
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.LinkedHashMap;
 
 import org.jboss.webservice.metadata.serviceref.HandlerMetaData;
@@ -31,6 +32,7 @@
 import org.jboss.webservice.metadata.serviceref.PortComponentRefMetaData;
 import org.jboss.webservice.metadata.serviceref.ServiceRefMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedPortComponentRefMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
@@ -63,12 +65,13 @@
       }
       usrmd.setPortComponentRefs(pcrefs);
 
-      ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+      ArrayList<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
       for (HandlerMetaData hmd : srmd.getHandlers())
       {
-         UnifiedHandlerMetaData uhmd = new UnifiedHandlerMetaData();
+         UnifiedHandlerMetaDataJAXRPC uhmd = new UnifiedHandlerMetaDataJAXRPC();
          uhmd.setHandlerName(hmd.getHandlerName());
          uhmd.setHandlerClass(hmd.getHandlerClass());
+         Arrays.asList(hmd.getSoapHeaders());
 
          for (InitParamMetaData ipmd : hmd.getInitParams())
          {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -43,6 +43,7 @@
 import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.List;
+import java.util.Set;
 
 import javax.naming.Context;
 import javax.naming.Name;
@@ -61,6 +62,7 @@
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.ServiceMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedPortComponentRefMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
@@ -301,23 +303,27 @@
 
          HashSet handlerRoles = new HashSet();
          ArrayList handlerInfos = new ArrayList();
-         for (UnifiedHandlerMetaData hMetaData : epMetaData.getHandlers(HandlerType.ALL))
+         for (UnifiedHandlerMetaData uhmd : epMetaData.getHandlers(HandlerType.ALL))
          {
-            handlerRoles.addAll(Arrays.asList(hMetaData.getSoapRoles()));
+            UnifiedHandlerMetaDataJAXRPC handlerMetaData = (UnifiedHandlerMetaDataJAXRPC)uhmd;
+            handlerRoles.addAll(Arrays.asList(handlerMetaData.getSoapRoles()));
 
             ClassLoader cl = epMetaData.getClassLoader();
-            Class hClass = cl.loadClass(hMetaData.getHandlerClass());
+            Class hClass = cl.loadClass(handlerMetaData.getHandlerClass());
 
             HashMap hConfig = new HashMap();
-            UnifiedInitParamMetaData[] params = hMetaData.getInitParams();
+            UnifiedInitParamMetaData[] params = handlerMetaData.getInitParams();
             for (int k = 0; k < params.length; k++)
             {
                UnifiedInitParamMetaData param = params[k];
                hConfig.put(param.getParamName(), param.getParamValue());
             }
 
-            QName[] hHeaders = hMetaData.getSoapHeaders();
-            HandlerInfo info = new HandlerInfo(hClass, hConfig, hHeaders);
+            Set<QName> headers = handlerMetaData.getSoapHeaders();
+            QName[] headerArr = new QName[headers.size()];
+            headers.toArray(headerArr);
+            
+            HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
 
             log.debug("Adding client side handler to endpoint '" + portName + "': " + info);
             handlerInfos.add(info);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -38,6 +38,7 @@
 import org.jboss.ws.WSException;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.server.HandlerDelegate;
@@ -142,9 +143,10 @@
       List<HandlerInfo> hInfos = new ArrayList<HandlerInfo>();
 
       ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
-      for (UnifiedHandlerMetaData handlerMetaData : sepMetaData.getHandlers(type))
+      for (UnifiedHandlerMetaData uhmd : sepMetaData.getHandlers(type))
       {
-         handlerRoles.addAll(Arrays.asList(handlerMetaData.getSoapRoles()));
+         UnifiedHandlerMetaDataJAXRPC handlerMetaData = (UnifiedHandlerMetaDataJAXRPC)uhmd;
+         handlerRoles.addAll(handlerMetaData.getSoapRoles());
 
          Class hClass;
          String handlerClass = handlerMetaData.getHandlerClass();
@@ -166,8 +168,12 @@
             UnifiedInitParamMetaData param = params[j];
             hConfig.put(param.getParamName(), param.getParamValue());
          }
-         QName[] hHeaders = handlerMetaData.getSoapHeaders();
-         HandlerInfo info = new HandlerInfo(hClass, hConfig, hHeaders);
+         
+         Set<QName> headers = handlerMetaData.getSoapHeaders();
+         QName[] headerArr = new QName[headers.size()];
+         headers.toArray(headerArr);
+         
+         HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
 
          log.debug("Adding server side handler to service '" + sepMetaData.getQName() + "': " + info);
          hInfos.add(info);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/GenericHandler.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -25,7 +25,6 @@
 
 import javax.xml.ws.handler.Handler;
 import javax.xml.ws.handler.MessageContext;
-import javax.xml.ws.handler.PortInfo;
 
 /**
  * A generic jaxws handler
@@ -36,7 +35,6 @@
 public abstract class GenericHandler implements Handler
 {
    private String handlerName;
-   private PortInfo portInfo;
    
    public String getHandlerName()
    {
@@ -48,16 +46,6 @@
       this.handlerName = handlerName;
    }
 
-   public PortInfo getPortInfo()
-   {
-      return portInfo;
-   }
-
-   public void setPortInfo(PortInfo portInfo)
-   {
-      this.portInfo = portInfo;
-   }
-
    public boolean handleMessage(MessageContext msgContext)
    {
       Boolean outbound = (Boolean)msgContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
@@ -85,4 +73,9 @@
    public void close(MessageContext messagecontext)
    {
    }
+   
+   public String toString()
+   {
+      return "[" + handlerName + "]";
+   }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -23,16 +23,16 @@
 
 // $Id:HandlerDelegateJAXWS.java 710 2006-08-08 20:19:52Z thomas.diesler at jboss.com $
 
-import java.util.ArrayList;
 import java.util.List;
 
+import javax.xml.namespace.QName;
 import javax.xml.ws.Binding;
 import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.PortInfo;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.WSException;
+import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.server.HandlerDelegate;
 import org.jboss.ws.server.ServiceEndpointInfo;
@@ -48,39 +48,29 @@
    // provide logging
    private static Logger log = Logger.getLogger(HandlerDelegateJAXWS.class);
 
-   private List<Handler> preHandlerChain;
-   private List<Handler> jaxwsHandlerChain;
-   private List<Handler> postHandlerChain;
-   
+   private HandlerResolverImpl preHandlers = new HandlerResolverImpl();
+   private HandlerResolverImpl endpointHandlers = new HandlerResolverImpl();
+   private HandlerResolverImpl postHandlers = new HandlerResolverImpl();
+
    public HandlerDelegateJAXWS(Binding binding)
    {
-      preHandlerChain = new ArrayList<Handler>();
-      jaxwsHandlerChain = binding.getHandlerChain();
-      postHandlerChain = new ArrayList<Handler>();
    }
 
    public boolean callRequestHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
    {
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
-      ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+      EndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
 
       // Initialize the handler chain
-      if (sepMetaData.isHandlersInitialized() == false)
+      if (epMetaData.isHandlersInitialized() == false)
       {
-         initHandlerChain(seInfo, HandlerType.PRE);
-         initHandlerChain(seInfo, HandlerType.ENDPOINT);
-         initHandlerChain(seInfo, HandlerType.POST);
-         sepMetaData.setHandlersInitialized(true);
+         initHandlerChain(epMetaData, HandlerType.PRE);
+         initHandlerChain(epMetaData, HandlerType.ENDPOINT);
+         initHandlerChain(epMetaData, HandlerType.POST);
+         epMetaData.setHandlersInitialized(true);
       }
 
-      List<Handler> handlerChain = null;
-      if (type == HandlerType.PRE)
-         handlerChain = preHandlerChain;
-      else if (type == HandlerType.ENDPOINT)
-         handlerChain = jaxwsHandlerChain;
-      else if (type == HandlerType.POST)
-         handlerChain = postHandlerChain;
-      
+      List<Handler> handlerChain = getHandlerChain(epMetaData, type);
       boolean status = new HandlerChainExecutor(handlerChain).handleRequest(msgContext);
       return status;
    }
@@ -88,15 +78,8 @@
    public boolean callResponseHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
    {
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
-      
-      List<Handler> handlerChain = null;
-      if (type == HandlerType.PRE)
-         handlerChain = preHandlerChain;
-      else if (type == HandlerType.ENDPOINT)
-         handlerChain = jaxwsHandlerChain;
-      else if (type == HandlerType.POST)
-         handlerChain = postHandlerChain;
-      
+      ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+      List<Handler> handlerChain = getHandlerChain(sepMetaData, type);
       boolean status = new HandlerChainExecutor(handlerChain).handleResponse(msgContext);
       return status;
    }
@@ -104,49 +87,55 @@
    public boolean callFaultHandlerChain(ServiceEndpointInfo seInfo, HandlerType type, Exception ex)
    {
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
+      ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
+      List<Handler> handlerChain = getHandlerChain(sepMetaData, type);
+      boolean status = new HandlerChainExecutor(handlerChain).handleFault(msgContext);
+      return status;
+   }
 
+   private List<Handler> getHandlerChain(EndpointMetaData epMetaData, HandlerType type)
+   {
+      PortInfo info = getPortInfo(epMetaData);
+
       List<Handler> handlerChain = null;
       if (type == HandlerType.PRE)
-         handlerChain = preHandlerChain;
+      {
+         handlerChain = preHandlers.getHandlerChain(info);
+      }
       else if (type == HandlerType.ENDPOINT)
-         handlerChain = jaxwsHandlerChain;
+      {
+         handlerChain = endpointHandlers.getHandlerChain(info);
+      }
       else if (type == HandlerType.POST)
-         handlerChain = postHandlerChain;
-      
-      boolean status = new HandlerChainExecutor(handlerChain).handleFault(msgContext);
-      return status;
+      {
+         handlerChain = postHandlers.getHandlerChain(info);
+      }
+      return handlerChain;
    }
 
-   /**
-    * Init the handler chain
-    */
-   private void initHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
+   private void initHandlerChain(EndpointMetaData epMetaData, HandlerType type)
    {
-      ServerEndpointMetaData sepMetaData = seInfo.getServerEndpointMetaData();
-      for (UnifiedHandlerMetaData handlerMetaData : sepMetaData.getHandlers(type))
+      if (type == HandlerType.PRE)
       {
-         Class hClass;
-         String className = handlerMetaData.getHandlerClass();
-         try
-         {
-            // Load the handler class using the deployments top level CL
-            ClassLoader classLoader = sepMetaData.getClassLoader();
-            hClass = classLoader.loadClass(className);
-            Handler handler = (Handler)hClass.newInstance();
-            
-            if (type == HandlerType.PRE)
-               preHandlerChain.add(handler);
-            else if (type == HandlerType.ENDPOINT)
-               jaxwsHandlerChain.add(handler);
-            else if (type == HandlerType.POST)
-               postHandlerChain.add(handler);
-         }
-         catch (Exception ex)
-         {
-            throw new WSException("Cannot load handler class: " + className);
-         }
-
-         log.debug("Adding server side handler to service '" + sepMetaData.getQName() + "': " + className);
+         preHandlers.initHandlerChain(epMetaData, type);
       }
+      else if (type == HandlerType.ENDPOINT)
+      {
+         endpointHandlers.initHandlerChain(epMetaData, type);
+      }
+      else if (type == HandlerType.POST)
+      {
+         postHandlers.initHandlerChain(epMetaData, type);
+      }
+
    }
+
+   private PortInfo getPortInfo(EndpointMetaData epMetaData)
+   {
+      QName serviceName = epMetaData.getServiceMetaData().getQName();
+      QName portName = epMetaData.getQName();
+      String bindingId = epMetaData.getBindingId();
+      PortInfo info = new PortInfoImpl(serviceName, portName, bindingId);
+      return info;
+   }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerResolverImpl.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -28,13 +28,23 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.handler.Handler;
 import javax.xml.ws.handler.HandlerResolver;
 import javax.xml.ws.handler.PortInfo;
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.soap.SOAPBinding;
 
 import org.jboss.logging.Logger;
+import org.jboss.ws.WSException;
+import org.jboss.ws.metadata.EndpointMetaData;
+import org.jboss.ws.metadata.ServiceMetaData;
+import org.jboss.ws.metadata.UnifiedMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 
 /**
  * HandlerResolver is an interface implemented by an application to get control over 
@@ -51,57 +61,210 @@
 public class HandlerResolverImpl implements HandlerResolver
 {
    private static Logger log = Logger.getLogger(HandlerResolverImpl.class);
-   
-   private Map<QName, List<Handler>> serviceMap = new HashMap<QName, List<Handler>>();
-   private Map<QName, List<Handler>> portMap = new HashMap<QName, List<Handler>>();
-   private Map<String, List<Handler>> bindingMap = new HashMap<String, List<Handler>>();
 
+   private Map<PortInfo, List<Handler>> handlerMap = new HashMap<PortInfo, List<Handler>>();
+
    public List<Handler> getHandlerChain(PortInfo info)
    {
+      log.debug("getHandlerChain: " + info);
+
       List<Handler> handlerChain = new ArrayList<Handler>();
-      
+
+      String bindingID = info.getBindingID();
       QName serviceName = info.getServiceName();
       QName portName = info.getPortName();
-      String bindingID = info.getBindingID();
-      
-      if (serviceMap.keySet().contains(serviceName))
-         handlerChain.addAll(serviceMap.get(serviceName));
-      
-      if (serviceMap.keySet().contains(null))
-         handlerChain.addAll(serviceMap.get(null));
-      
-      if (portMap.keySet().contains(portName))
-         handlerChain.addAll(portMap.get(portName));
-      
-      if (portMap.keySet().contains(null))
-         handlerChain.addAll(portMap.get(null));
-      
-      if (bindingMap.keySet().contains(bindingID))
-         handlerChain.addAll(bindingMap.get(bindingID));
-      
-      if (bindingMap.keySet().contains(null))
-         handlerChain.addAll(bindingMap.get(null));
-      
-      
+
+      if (bindingID != null)
+      {
+         List<Handler> list = handlerMap.get(new PortInfoImpl(null, null, bindingID));
+         if (list != null)
+         {
+            log.debug("add protocol handlers: " + list);
+            handlerChain.addAll(list);
+         }
+      }
+
+      if (serviceName != null)
+      {
+         List<Handler> list = handlerMap.get(new PortInfoImpl(serviceName, null, null));
+         if (list != null)
+         {
+            log.debug("add service handlers: " + list);
+            handlerChain.addAll(list);
+         }
+      }
+
+      if (portName != null)
+      {
+         List<Handler> list = handlerMap.get(new PortInfoImpl(null, portName, null));
+         if (list != null)
+         {
+            log.debug("add port handlers: " + list);
+            handlerChain.addAll(list);
+         }
+      }
+
+      List<Handler> list = handlerMap.get(new PortInfoImpl(null, null, null));
+      if (list != null)
+      {
+         log.debug("add general handlers: " + list);
+         handlerChain.addAll(list);
+      }
+
       return Collections.unmodifiableList(handlerChain);
    }
 
-   public boolean addHandler(Handler handler)
+   public void initHandlerChain(EndpointMetaData epMetaData, HandlerType type)
    {
-      return addHandler(new PortInfoImpl(), handler);
+      for (UnifiedHandlerMetaData uhmd : epMetaData.getHandlers(type))
+      {
+         UnifiedHandlerMetaDataJAXWS handlerMetaData = (UnifiedHandlerMetaDataJAXWS)uhmd;
+         String handlerName = handlerMetaData.getHandlerName();
+         String className = handlerMetaData.getHandlerClass();
+         Set<QName> soapHeaders = handlerMetaData.getSoapHeaders();
+
+         try
+         {
+            // Load the handler class using the deployments top level CL
+            ClassLoader classLoader = epMetaData.getClassLoader();
+            Class hClass = classLoader.loadClass(className);
+            Handler handler = (Handler)hClass.newInstance();
+
+            if (handler instanceof GenericHandler)
+               ((GenericHandler)handler).setHandlerName(handlerName);
+
+            if (handler instanceof GenericSOAPHandler)
+               ((GenericSOAPHandler)handler).setHeaders(soapHeaders);
+
+            List<PortInfo> infos = getPortInfo(epMetaData, handlerMetaData);
+            for (PortInfo info : infos)
+            {
+               addHandler(info, handler);
+            }
+         }
+         catch (RuntimeException rte)
+         {
+            throw rte;
+         }
+         catch (Exception ex)
+         {
+            throw new WSException("Cannot load handler: " + className, ex);
+         }
+      }
    }
-   
-   public boolean addHandler(PortInfo info, Handler handler)
+
+   private List<PortInfo> getPortInfo(EndpointMetaData epMetaData, UnifiedHandlerMetaDataJAXWS handlerMetaData)
    {
-      log.debug("addHandler: " + info + ":" + handler.getClass().getName());
-      
-      QName serviceName = info.getServiceName();
-      QName portName = info.getPortName();
-      String bindingID = info.getBindingID();
-      
-      serviceMap.get(serviceName).add(handler);
-      portMap.get(portName).add(handler);
-      bindingMap.get(bindingID).add(handler);
+      String protocols = handlerMetaData.getProtocolBindings();
+      QName services = handlerMetaData.getServiceNamePattern();
+      QName ports = handlerMetaData.getPortNamePattern();
+
+      List<PortInfo> infos = new ArrayList<PortInfo>();
+      if (protocols != null)
+      {
+         for (String protocol : protocols.split("\\s"))
+         {
+            Map<String, String> protocolMap = new HashMap<String, String>();
+            protocolMap.put("##SOAP11_HTTP", SOAPBinding.SOAP11HTTP_BINDING);
+            protocolMap.put("##SOAP12_HTTP", SOAPBinding.SOAP12HTTP_BINDING);
+            protocolMap.put("##XML_HTTP", HTTPBinding.HTTP_BINDING);
+
+            String bindingId = protocolMap.get(protocol);
+            if (bindingId != null)
+            {
+               if (bindingId.equals(epMetaData.getBindingId()))
+                  infos.add(new PortInfoImpl(null, null, bindingId));
+            }
+            else
+            {
+               log.warn("Unsuported protocol binding: " + protocol);
+            }
+         }
+      }
+      else if (services != null)
+      {
+         String namespaceURI = services.getNamespaceURI();
+         String localPattern = services.getLocalPart();
+         if (localPattern.endsWith("*"))
+         {
+            localPattern = localPattern.substring(0, localPattern.length() - 1);
+            UnifiedMetaData wsMetaData = epMetaData.getServiceMetaData().getUnifiedMetaData();
+            for (ServiceMetaData smd : wsMetaData.getServices())
+            {
+               QName qname = smd.getQName();
+               String nsURI = qname.getNamespaceURI();
+               String localPart = qname.getLocalPart();
+               if (nsURI.equals(namespaceURI) && localPart.startsWith(localPattern))
+               {
+                  infos.add(new PortInfoImpl(qname, null, null));
+               }
+            }
+         }
+         else
+         {
+            UnifiedMetaData wsMetaData = epMetaData.getServiceMetaData().getUnifiedMetaData();
+            for (ServiceMetaData smd : wsMetaData.getServices())
+            {
+               QName qname = smd.getQName();
+               if (services.equals(qname))
+               {
+                  infos.add(new PortInfoImpl(qname, null, null));
+               }
+            }
+         }
+      }
+      else if (ports != null)
+      {
+         String namespaceURI = ports.getNamespaceURI();
+         String localPattern = ports.getLocalPart();
+         if (localPattern.endsWith("*"))
+         {
+            localPattern = localPattern.substring(0, localPattern.length() - 1);
+            ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+            for (EndpointMetaData epmd : serviceMetaData.getEndpoints())
+            {
+               QName qname = epmd.getQName();
+               String nsURI = qname.getNamespaceURI();
+               String localPart = qname.getLocalPart();
+               if (nsURI.equals(namespaceURI) && localPart.startsWith(localPattern))
+               {
+                  infos.add(new PortInfoImpl(null, qname, null));
+               }
+            }
+         }
+         else
+         {
+            ServiceMetaData serviceMetaData = epMetaData.getServiceMetaData();
+            for (EndpointMetaData epmd : serviceMetaData.getEndpoints())
+            {
+               QName qname = epmd.getQName();
+               if (ports.equals(qname))
+               {
+                  infos.add(new PortInfoImpl(null, qname, null));
+               }
+            }
+         }
+      }
+      else
+      {
+         // add a general handler that is not scoped
+         infos.add(new PortInfoImpl());
+      }
+
+      return infos;
+   }
+
+   private boolean addHandler(PortInfo info, Handler handler)
+   {
+      log.debug("addHandler: " + info + ":" + handler);
+
+      List<Handler> handlerList = handlerMap.get(info);
+      if (handlerList == null)
+      {
+         handlerMap.put(info, handlerList = new ArrayList<Handler>());
+      }
+      handlerList.add(handler);
+
       return true;
    }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -38,10 +38,10 @@
 import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
 import org.jboss.ws.metadata.config.jaxws.WSClientConfigJAXWS;
 import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
 import org.jboss.ws.metadata.config.jaxws.WSHandlerChainsConfigJAXWS;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 
 /**
  * Client side endpoint meta data.
@@ -121,7 +121,7 @@
             WSHandlerChainsConfigJAXWS preHandlerChains = jaxwsConfig.getPreHandlerChains();
             if (preHandlerChains != null)
             {
-               for (WSHandlerChainConfigJAXWS preHandlerChain : preHandlerChains.getHandlerChains())
+               for (HandlerChainMetaData preHandlerChain : preHandlerChains.getHandlerChains())
                {
                   handlers.addAll(preHandlerChain.getHandlers());
                }
@@ -140,7 +140,7 @@
             WSHandlerChainsConfigJAXWS postHandlerChains = jaxwsConfig.getPostHandlerChains();
             if (postHandlerChains != null)
             {
-               for (WSHandlerChainConfigJAXWS preHandlerChain : postHandlerChains.getHandlerChains())
+               for (HandlerChainMetaData preHandlerChain : postHandlerChains.getHandlerChains())
                {
                   handlers.addAll(preHandlerChain.getHandlers());
                }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -39,10 +39,10 @@
 import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
 import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
 import org.jboss.ws.metadata.config.jaxws.WSEndpointConfigJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
 import org.jboss.ws.metadata.config.jaxws.WSHandlerChainsConfigJAXWS;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 import org.jboss.ws.server.ServiceEndpoint;
 
 /**
@@ -215,7 +215,7 @@
             WSHandlerChainsConfigJAXWS preHandlerChains = jaxwsConfig.getPreHandlerChains();
             if (preHandlerChains != null)
             {
-               for (WSHandlerChainConfigJAXWS preHandlerChain : preHandlerChains.getHandlerChains())
+               for (HandlerChainMetaData preHandlerChain : preHandlerChains.getHandlerChains())
                {
                   handlers.addAll(preHandlerChain.getHandlers());
                }
@@ -234,7 +234,7 @@
             WSHandlerChainsConfigJAXWS postHandlerChains = jaxwsConfig.getPostHandlerChains();
             if (postHandlerChains != null)
             {
-               for (WSHandlerChainConfigJAXWS preHandlerChain : postHandlerChains.getHandlerChains())
+               for (HandlerChainMetaData preHandlerChain : postHandlerChains.getHandlerChains())
                {
                   handlers.addAll(preHandlerChain.getHandlers());
                }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -27,6 +27,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
@@ -128,7 +129,7 @@
       log.trace("WSHandlerChainConfig newChild: " + localName);
       if ("handler".equals(localName))
       {
-         UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData();
+         UnifiedHandlerMetaData handler = new UnifiedHandlerMetaDataJAXRPC();
          List<UnifiedHandlerMetaData> handlers = wsHandlerChainConfig.getHandlers();
          handlers.add(handler);
          return handler;
@@ -139,7 +140,7 @@
    /**
     * Called when a new simple child element with text value was read from the XML content.
     */
-   public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   public void setValue(UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (log.isTraceEnabled())
          log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -23,12 +23,9 @@
 
 //$Id$
 
-import java.util.List;
-
 import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
-import org.jboss.xb.binding.ObjectModelFactory;
+import org.jboss.ws.metadata.jsr181.HandlerChainFactory;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
 
@@ -38,7 +35,7 @@
  * @author Thomas.Diesler at jboss.org
  * @since 18-Dec-2005
  */
-public class WSConfigFactoryJAXWS implements ObjectModelFactory
+public class WSConfigFactoryJAXWS extends HandlerChainFactory
 {
    // provide logging
    private final Logger log = Logger.getLogger(WSConfigFactoryJAXWS.class);
@@ -117,72 +114,10 @@
 
       if ("handler-chain".equals(localName))
       {
-         WSHandlerChainConfigJAXWS handlerChain = new WSHandlerChainConfigJAXWS();
+         HandlerChainMetaData handlerChain = new HandlerChainMetaData(null);
          wsHandlerChains.getHandlerChains().add(handlerChain);
          return handlerChain;
       }
       return null;
    }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(WSHandlerChainConfigJAXWS handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("WSHandlerChainConfigJAXWS setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("protocol-bindings"))
-         handlerChain.setProtocolBindings(value);
-      else if (localName.equals("service-name-pattern"))
-         handlerChain.setServiceNamePattern(value);
-      else if (localName.equals("port-name-pattern"))
-         handlerChain.setPortNamePattern(value);
-   }
-
-   /**
-    * Called when parsing of a new element started.
-    */
-   public Object newChild(WSHandlerChainConfigJAXWS wsHandlerChainConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      log.trace("WSHandlerChainConfig newChild: " + localName);
-      if ("handler".equals(localName))
-      {
-         UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData();
-         List<UnifiedHandlerMetaData> handlers = wsHandlerChainConfig.getHandlers();
-         handlers.add(handler);
-         return handler;
-      }
-      return null;
-   }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("handler-name"))
-         handler.setHandlerName(value);
-      else if (localName.equals("handler-class"))
-         handler.setHandlerClass(value);
-      else if (localName.equals("soap-role"))
-         handler.addSoapRole(value);
-   }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("param-name"))
-         param.setParamName(value);
-      else if (localName.equals("param-value"))
-         param.setParamValue(value);
-   }
 }

Deleted: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainConfigJAXWS.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -1,82 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt 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.ws.metadata.config.jaxws;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-
-
-/** 
- * A JBossWS handler chain configuration 
- *
- * @author Thomas.Diesler at jboss.org
- * @since 18-Dec-2005
- */
-public class WSHandlerChainConfigJAXWS
-{
-   private String protocolBindings;
-   private String serviceNamePattern;
-   private String portNamePattern;
-   private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
-
-   public String getProtocolBindings()
-   {
-      return protocolBindings;
-   }
-
-   public void setProtocolBindings(String handlerChainName)
-   {
-      this.protocolBindings = handlerChainName;
-   }
-   
-   public String getPortNamePattern()
-   {
-      return portNamePattern;
-   }
-
-   public void setPortNamePattern(String portNamePattern)
-   {
-      this.portNamePattern = portNamePattern;
-   }
-
-   public String getServiceNamePattern()
-   {
-      return serviceNamePattern;
-   }
-
-   public void setServiceNamePattern(String serviceNamePattern)
-   {
-      this.serviceNamePattern = serviceNamePattern;
-   }
-
-   public List<UnifiedHandlerMetaData> getHandlers()
-   {
-      return handlers;
-   }
-
-   public void setHandlers(List<UnifiedHandlerMetaData> handlers)
-   {
-      this.handlers = handlers;
-   }
-}

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -24,7 +24,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 
+
 /** 
  * A JBossWS handler chains configuration 
  *
@@ -33,9 +35,9 @@
  */
 public class WSHandlerChainsConfigJAXWS
 {
-   private List<WSHandlerChainConfigJAXWS> chains = new ArrayList<WSHandlerChainConfigJAXWS>();
+   private List<HandlerChainMetaData> chains = new ArrayList<HandlerChainMetaData>();
 
-   public List<WSHandlerChainConfigJAXWS> getHandlerChains()
+   public List<HandlerChainMetaData> getHandlerChains()
    {
       return chains;
    }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -25,6 +25,9 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 
 import javax.xml.namespace.QName;
 
@@ -34,10 +37,8 @@
  * @author Thomas.Diesler at jboss.org
  * @since 05-May-2006
  */
-public class UnifiedHandlerMetaData implements Serializable
+public abstract class UnifiedHandlerMetaData implements Serializable
 {
-   private static final long serialVersionUID = 8000854586742278995L;
-
    public enum HandlerType {PRE, ENDPOINT, POST, ALL};
    
    // The required <handler-name> element
@@ -47,16 +48,10 @@
    // The optional <init-param> elements
    private ArrayList<UnifiedInitParamMetaData> initParams = new ArrayList<UnifiedInitParamMetaData>();
    // The optional <soap-header> elements
-   private ArrayList<QName> soapHeaders = new ArrayList<QName>();
+   private Set<QName> soapHeaders = new HashSet<QName>();
    // The optional <soap-role> elements
-   private ArrayList<String> soapRoles = new ArrayList<String>();
-   // The optional <port-name> elements, these only apply to webserve clients
-   private ArrayList<String> portNames = new ArrayList<String>();
+   private Set<String> soapRoles = new HashSet<String>();
 
-   public UnifiedHandlerMetaData()
-   {
-   }
-
    public void setHandlerName(String value)
    {
       this.handlerName = value;
@@ -89,46 +84,23 @@
       return array;
    }
 
-   public void addSoapHeader(QName qName)
-   {
-      soapHeaders.add(qName);
-   }
-
-   public QName[] getSoapHeaders()
-   {
-      QName[] array = new QName[soapHeaders.size()];
-      soapHeaders.toArray(array);
-      return array;
-   }
-
    public void addSoapRole(String value)
    {
       soapRoles.add(value);
    }
 
-   public String[] getSoapRoles()
+   public Set<String> getSoapRoles()
    {
-      String[] array = new String[soapRoles.size()];
-      soapRoles.toArray(array);
-      return array;
+      return Collections.unmodifiableSet(soapRoles);
    }
 
-   public String[] getPortNames()
+   public void addSoapHeader(QName qName)
    {
-      String[] array = new String[portNames.size()];
-      portNames.toArray(array);
-      return array;
+      soapHeaders.add(qName);
    }
 
-   public String toString()
+   public Set<QName> getSoapHeaders()
    {
-      StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
-      buffer.append("\n name=" + handlerName);
-      buffer.append("\n class=" + handlerClass);
-      buffer.append("\n params=" + initParams);
-      buffer.append("\n headers=" + soapHeaders);
-      buffer.append("\n roles=" + soapRoles);
-      buffer.append("\n ports=" + portNames);
-      return buffer.toString();
+      return Collections.unmodifiableSet(soapHeaders);
    }
 }

Added: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXRPC.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ws.metadata.j2ee;
+
+//$Id: UnifiedHandlerMetaData.java 697 2006-08-07 08:44:39Z thomas.diesler at jboss.com $
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * The container independent metdata data for a handler element
+ * 
+ * @author Thomas.Diesler at jboss.org
+ * @since 05-May-2006
+ */
+public class UnifiedHandlerMetaDataJAXRPC extends UnifiedHandlerMetaData
+{
+   private static final long serialVersionUID = 8704185647582526122L;
+   
+   // The optional <port-name> elements, these only apply to webserve clients
+   private Set<String> portNames = new HashSet<String>();
+
+   public Set<String> getPortNames()
+   {
+      return Collections.unmodifiableSet(portNames);
+   }
+
+   public String toString()
+   {
+      StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
+      buffer.append("\n name=" + getHandlerName());
+      buffer.append("\n class=" + getHandlerClass());
+      buffer.append("\n params=" + getInitParams());
+      buffer.append("\n headers=" + getSoapHeaders());
+      buffer.append("\n roles=" + getSoapRoles());
+      buffer.append("\n ports=" + getPortNames());
+      return buffer.toString();
+   }
+}

Added: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaDataJAXWS.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt 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.ws.metadata.j2ee;
+
+import javax.xml.namespace.QName;
+
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
+
+//$Id: UnifiedHandlerMetaData.java 697 2006-08-07 08:44:39Z thomas.diesler at jboss.com $
+
+
+/**
+ * The container independent metdata data for a handler element
+ * 
+ * @author Thomas.Diesler at jboss.org
+ * @since 05-May-2006
+ */
+public class UnifiedHandlerMetaDataJAXWS extends UnifiedHandlerMetaData
+{
+   private HandlerChainMetaData chainConfig;
+
+   public UnifiedHandlerMetaDataJAXWS(HandlerChainMetaData handlerChainMetaData)
+   {
+      this.chainConfig = handlerChainMetaData;
+   }
+   
+   public String getProtocolBindings()
+   {
+      return chainConfig.getProtocolBindings();
+   }
+
+   public QName getServiceNamePattern()
+   {
+      return chainConfig.getServiceNamePattern();
+   }
+
+   public QName getPortNamePattern()
+   {
+      return chainConfig.getPortNamePattern();
+   }
+
+   public String toString()
+   {
+      StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
+      buffer.append("\n name=" + getHandlerName());
+      buffer.append("\n class=" + getHandlerClass());
+      buffer.append("\n params=" + getInitParams());
+      buffer.append("\n headers=" + getSoapHeaders());
+      buffer.append("\n roles=" + getSoapRoles());
+      buffer.append("\n protocols=" + getProtocolBindings());
+      buffer.append("\n services=" + getServiceNamePattern());
+      buffer.append("\n ports=" + getPortNamePattern());
+      return buffer.toString();
+   }
+}

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedServiceRefMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -59,7 +59,7 @@
    // The LinkedHashMap<String, UnifiedPortComponentRefMetaData> for <port-component-ref> elements
    private Map<String, UnifiedPortComponentRefMetaData> portComponentRefs = new LinkedHashMap<String, UnifiedPortComponentRefMetaData>();
    // The optional <handler> elements
-   private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+   private List<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
 
    // The optional JBossWS config-name
    private String configName;
@@ -141,14 +141,14 @@
       this.portComponentRefs = portComponentRefs;
    }
    
-   public UnifiedHandlerMetaData[] getHandlers()
+   public UnifiedHandlerMetaDataJAXRPC[] getHandlers()
    {
-      UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
+      UnifiedHandlerMetaDataJAXRPC[] array = new UnifiedHandlerMetaDataJAXRPC[handlers.size()];
       handlers.toArray(array);
       return array;
    }
 
-   public void setHandlers(ArrayList<UnifiedHandlerMetaData> handlers)
+   public void setHandlers(ArrayList<UnifiedHandlerMetaDataJAXRPC> handlers)
    {
       this.handlers = handlers;
    }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/PortComponentMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -30,7 +30,7 @@
 import javax.xml.namespace.QName;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 
 /**
  * XML Binding and ws4ee meta-data element for
@@ -69,7 +69,7 @@
    private String ejbLink;
    private String servletLink;
    // The optional <handler> elements
-   private List<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+   private List<UnifiedHandlerMetaDataJAXRPC> handlers = new ArrayList<UnifiedHandlerMetaDataJAXRPC>();
 
    // The HTTP context root
    private String contextRoot;
@@ -139,14 +139,14 @@
       this.serviceEndpointInterface = serviceEndpointInterface;
    }
 
-   public void addHandler(UnifiedHandlerMetaData handler)
+   public void addHandler(UnifiedHandlerMetaDataJAXRPC handler)
    {
       handlers.add(handler);
    }
 
-   public UnifiedHandlerMetaData[] getHandlers()
+   public UnifiedHandlerMetaDataJAXRPC[] getHandlers()
    {
-      UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
+      UnifiedHandlerMetaDataJAXRPC[] array = new UnifiedHandlerMetaDataJAXRPC[handlers.size()];
       handlers.toArray(array);
       return array;
    }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -27,6 +27,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXRPC;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
@@ -123,7 +124,7 @@
                           Attributes attrs)
    {
       if ("handler".equals(localName))
-         return new UnifiedHandlerMetaData();
+         return new UnifiedHandlerMetaDataJAXRPC();
       else
          return null;
    }
@@ -131,7 +132,7 @@
    /**
     * Called when parsing character is complete.
     */
-   public void addChild(PortComponentMetaData portComponent, UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+   public void addChild(PortComponentMetaData portComponent, UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName)
    {
       portComponent.addHandler(handler);
    }
@@ -195,7 +196,7 @@
    /**
     * Called when a new simple child element with text value was read from the XML content.
     */
-   public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   public void setValue(UnifiedHandlerMetaDataJAXRPC handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
    {
       if (log.isTraceEnabled())
          log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);

Copied: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java (from rev 736, branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java)
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -0,0 +1,164 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.ws.metadata.jsr181;
+
+// $Id$
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
+import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
+import org.jboss.xb.binding.ObjectModelFactory;
+import org.jboss.xb.binding.UnmarshallingContext;
+import org.xml.sax.Attributes;
+
+/**
+ * A JBossXB factory for jsr181 the HandlerChain annotation
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 15-Oct-2005
+ */
+public class HandlerChainFactory implements ObjectModelFactory
+{
+   // provide logging
+   private static final Logger log = Logger.getLogger(HandlerChainFactory.class);
+
+   public HandlerChainFactory()
+   {
+   }
+
+   /**
+    * This method is called on the factory by the object model builder when the parsing starts.
+    *
+    * @return the root of the object model.
+    */
+   public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData();
+      return handlerConfigMetaData;
+   }
+
+   public Object completeRoot(Object root, UnmarshallingContext ctx, String uri, String name)
+   {
+      return root;
+   }
+
+   /**
+    * Called when parsing of a new element started.
+    */
+   public Object newChild(HandlerChainsMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      if ("handler-chain".equals(localName))
+         return new HandlerChainMetaData(handlerConfig);
+      else 
+         return null;
+   }
+
+   /**
+    * Called when parsing character is complete.
+    */
+   public void addChild(HandlerChainsMetaData handlerConfig, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      handlerConfig.addHandlerChain(handlerChain);
+   }
+
+   /**
+    * Called when parsing of a new element started.
+    */
+   public Object newChild(HandlerChainMetaData chainConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      if ("handler".equals(localName))
+         return new UnifiedHandlerMetaDataJAXWS(chainConfig);
+      else 
+         return null;
+   }
+
+   /**
+    * Called when parsing character is complete.
+    */
+   public void addChild(HandlerChainMetaData handlerConfig, UnifiedHandlerMetaDataJAXWS handler, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      handlerConfig.addHandler(handler);
+   }
+
+   /**
+    * Called when parsing of a new element started.
+    */
+   public Object newChild(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
+   {
+      if ("init-param".equals(localName))
+         return new UnifiedInitParamMetaData();
+      else return null;
+   }
+
+   /**
+    * Called when parsing character is complete.
+    */
+   public void addChild(UnifiedHandlerMetaData handler, UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
+   {
+      handler.addInitParam(param);
+   }
+
+   /**
+    * Called when a new simple child element with text value was read from the XML content.
+    */
+   public void setValue(HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (log.isTraceEnabled())
+         log.trace("HandlerChainMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+      if (localName.equals("protocol-bindings"))
+         handlerChain.setProtocolBindings(value);
+      else if (localName.equals("service-name-pattern"))
+         handlerChain.setServiceNamePattern(navigator.resolveQName(value));
+      else if (localName.equals("port-name-pattern"))
+         handlerChain.setPortNamePattern(navigator.resolveQName(value));
+   }
+
+   /**
+    * Called when a new simple child element with text value was read from the XML content.
+    */
+   public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (log.isTraceEnabled())
+         log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+      if (localName.equals("handler-name"))
+         handler.setHandlerName(value);
+      else if (localName.equals("handler-class"))
+         handler.setHandlerClass(value);
+   }
+
+   /**
+    * Called when a new simple child element with text value was read from the XML content.
+    */
+   public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
+   {
+      if (log.isTraceEnabled())
+         log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
+
+      if (localName.equals("param-name"))
+         param.setParamName(value);
+      else if (localName.equals("param-value"))
+         param.setParamValue(value);
+   }
+}

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -24,9 +24,13 @@
 // $Id$
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
 
+import javax.xml.namespace.QName;
+
 import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaDataJAXWS;
 
 /**
  * XML Binding element for handler-config/handler-chain elements
@@ -43,9 +47,9 @@
    private HandlerChainsMetaData handlerConfig;
 
    private String protocolBindings;
-   private String serviceNamePattern;
-   private String portNamePattern;
-   private ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
+   private QName serviceNamePattern;
+   private QName portNamePattern;
+   private ArrayList<UnifiedHandlerMetaDataJAXWS> handlers = new ArrayList<UnifiedHandlerMetaDataJAXWS>();
 
    public HandlerChainMetaData(HandlerChainsMetaData handlerConfig)
    {
@@ -57,24 +61,22 @@
       return handlerConfig;
    }
 
-   public void addHandler(UnifiedHandlerMetaData handlerMetaData)
+   public void addHandler(UnifiedHandlerMetaDataJAXWS handlerMetaData)
    {
       handlers.add(handlerMetaData);
    }
 
-   public UnifiedHandlerMetaData[] getHandlers()
+   public List<UnifiedHandlerMetaDataJAXWS> getHandlers()
    {
-      UnifiedHandlerMetaData[] array = new UnifiedHandlerMetaData[handlers.size()];
-      handlers.toArray(array);
-      return array;
+      return Collections.unmodifiableList(handlers);
    }
 
-   public String getPortNamePattern()
+   public QName getPortNamePattern()
    {
       return portNamePattern;
    }
 
-   public void setPortNamePattern(String portNamePattern)
+   public void setPortNamePattern(QName portNamePattern)
    {
       this.portNamePattern = portNamePattern;
    }
@@ -89,12 +91,12 @@
       this.protocolBindings = protocolBindings;
    }
 
-   public String getServiceNamePattern()
+   public QName getServiceNamePattern()
    {
       return serviceNamePattern;
    }
 
-   public void setServiceNamePattern(String serviceNamePattern)
+   public void setServiceNamePattern(QName serviceNamePattern)
    {
       this.serviceNamePattern = serviceNamePattern;
    }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -38,19 +38,6 @@
    // The required <handler-chain> elements
    private ArrayList<HandlerChainMetaData> handlerChains = new ArrayList<HandlerChainMetaData>();
 
-   // The URL to the webservices.xml descriptor
-   private URL fileURL;
-
-   public HandlerChainsMetaData(URL fileURL)
-   {
-      this.fileURL = fileURL;
-   }
-
-   public URL getDescriptorURL()
-   {
-      return fileURL;
-   }
-
    public void addHandlerChain(HandlerChainMetaData handlerChain)
    {
       handlerChains.add(handlerChain);

Deleted: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerConfigFactory.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -1,171 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2005, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.ws.metadata.jsr181;
-
-// $Id$
-
-import java.net.URL;
-
-import org.jboss.logging.Logger;
-import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
-import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
-import org.jboss.xb.binding.ObjectModelFactory;
-import org.jboss.xb.binding.UnmarshallingContext;
-import org.xml.sax.Attributes;
-
-/**
- * A JBossXB factory for {@link HandlerChainsMetaData}
- *
- * @author Thomas.Diesler at jboss.org
- * @since 15-Oct-2005
- */
-public class HandlerConfigFactory implements ObjectModelFactory
-{
-   // provide logging
-   private static final Logger log = Logger.getLogger(HandlerConfigFactory.class);
-
-   // The URL to the handler-config.xml descriptor
-   private URL fileURL;
-
-   public HandlerConfigFactory(URL fileURL)
-   {
-      this.fileURL = fileURL;
-   }
-
-   /**
-    * This method is called on the factory by the object model builder when the parsing starts.
-    *
-    * @return the root of the object model.
-    */
-   public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData(fileURL);
-      return handlerConfigMetaData;
-   }
-
-   public Object completeRoot(Object root, UnmarshallingContext ctx, String uri, String name)
-   {
-      return root;
-   }
-
-   /**
-    * Called when parsing of a new element started.
-    */
-   public Object newChild(HandlerChainsMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      if ("handler-chain".equals(localName))
-         return new HandlerChainMetaData(handlerConfig);
-      else 
-         return null;
-   }
-
-   /**
-    * Called when parsing character is complete.
-    */
-   public void addChild(HandlerChainsMetaData handlerConfig, HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      handlerConfig.addHandlerChain(handlerChain);
-   }
-
-   /**
-    * Called when parsing of a new element started.
-    */
-   public Object newChild(HandlerChainMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      if ("handler".equals(localName))
-         return new UnifiedHandlerMetaData();
-      else 
-         return null;
-   }
-
-   /**
-    * Called when parsing character is complete.
-    */
-   public void addChild(HandlerChainMetaData handlerConfig, UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      handlerConfig.addHandler(handler);
-   }
-
-   /**
-    * Called when parsing of a new element started.
-    */
-   public Object newChild(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
-   {
-      if ("init-param".equals(localName))
-         return new UnifiedInitParamMetaData();
-      else return null;
-   }
-
-   /**
-    * Called when parsing character is complete.
-    */
-   public void addChild(UnifiedHandlerMetaData handler, UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName)
-   {
-      handler.addInitParam(param);
-   }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(HandlerChainMetaData handlerChain, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("HandlerChainMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("protocol-bindings"))
-         handlerChain.setProtocolBindings(value);
-      else if (localName.equals("service-name-pattern"))
-         handlerChain.setServiceNamePattern(value);
-      else if (localName.equals("port-name-pattern"))
-         handlerChain.setPortNamePattern(value);
-   }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(UnifiedHandlerMetaData handler, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("UnifiedHandlerMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("handler-name"))
-         handler.setHandlerName(value);
-      else if (localName.equals("handler-class"))
-         handler.setHandlerClass(value);
-      else if (localName.equals("soap-role"))
-         handler.addSoapRole(value);
-   }
-
-   /**
-    * Called when a new simple child element with text value was read from the XML content.
-    */
-   public void setValue(UnifiedInitParamMetaData param, UnmarshallingContext navigator, String namespaceURI, String localName, String value)
-   {
-      if (log.isTraceEnabled())
-         log.trace("UnifiedInitParamMetaData setValue: nuri=" + namespaceURI + " localName=" + localName + " value=" + value);
-
-      if (localName.equals("param-name"))
-         param.setParamName(value);
-      else if (localName.equals("param-value"))
-         param.setParamValue(value);
-   }
-}

Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/config/WSConfigTestCase.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -30,8 +30,8 @@
 import org.jboss.ws.metadata.config.jaxrpc.WSHandlerChainConfigJAXRPC;
 import org.jboss.ws.metadata.config.jaxws.WSConfigRootJAXWS;
 import org.jboss.ws.metadata.config.jaxws.WSEndpointConfigJAXWS;
-import org.jboss.ws.metadata.config.jaxws.WSHandlerChainConfigJAXWS;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 
 /**
  * Test parsing of the JBossWS config
@@ -97,7 +97,7 @@
       assertNull(epc1.getPostHandlerChains());
 
       assertEquals("Standard Secure Endpoint", epc2.getConfigName());
-      WSHandlerChainConfigJAXWS preChain = epc2.getPreHandlerChains().getHandlerChains().get(0);
+      HandlerChainMetaData preChain = epc2.getPreHandlerChains().getHandlerChains().get(0);
       assertEquals("##SOAP11_HTTP", preChain.getProtocolBindings());
       assertEquals(1, preChain.getHandlers().size());
       UnifiedHandlerMetaData h1 = (UnifiedHandlerMetaData)preChain.getHandlers().get(0);

Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/HandlerScopeTestCase.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -53,24 +53,24 @@
       Service service = Service.create(wsdlURL, serviceName);
       SOAPEndpoint port = (SOAPEndpoint)service.getPort(SOAPEndpoint.class);
 
-      /*
-      HandlerResolver handlerResolver = new HandlerResolver()
-      {
-         public List<Handler> getHandlerChain(PortInfo info)
-         {
-            List<Handler> handlerChain = new ArrayList<Handler>();
-            
-            QName sname = info.getServiceName();
-            QName pname = info.getPortName();
-            String bid = info.getBindingID();
-            
-            return handlerChain;
-         }
-      };
-      service.setHandlerResolver(handlerResolver);
-      */
-     
       String retStr = port.echo("hello");
-      assertEquals("hello:endpoint", retStr);
+      
+      StringBuffer expStr = new StringBuffer("hello");
+      expStr.append(":SOAP12Handler");
+      expStr.append(":SOAPHandler");
+      expStr.append(":ServiceHandler");
+      expStr.append(":ServiceWildcardHandler");
+      expStr.append(":PortHandler");
+      expStr.append(":PortWildcardHandler");
+      expStr.append(":GeneralHandler");
+      expStr.append(":endpoint");
+      expStr.append(":GeneralHandler");
+      expStr.append(":PortWildcardHandler");
+      expStr.append(":PortHandler");
+      expStr.append(":ServiceWildcardHandler");
+      expStr.append(":ServiceHandler");
+      expStr.append(":SOAPHandler");
+      expStr.append(":SOAP12Handler");
+      assertEquals(expStr.toString(), retStr);
    }
 }

Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/handlerscope/ServerHandler.java	2006-08-13 17:40:21 UTC (rev 737)
@@ -38,12 +38,13 @@
  */
 public class ServerHandler extends GenericSOAPHandler
 {
-   public boolean handleOutbound(MessageContext msgContext)
+   public boolean handleInbound(MessageContext msgContext)
    {
       try
       {
          SOAPMessage soapMessage = ((SOAPMessageContext)msgContext).getMessage();
          SOAPElement soapElement = (SOAPElement)soapMessage.getSOAPBody().getChildElements().next();
+         soapElement = (SOAPElement)soapElement.getChildElements().next();
          String value = soapElement.getValue();
          
          String handlerName = getHandlerName();
@@ -57,7 +58,7 @@
       }
    }
    
-   public boolean handleInbound(MessageContext msgContext)
+   public boolean handleOutbound(MessageContext msgContext)
    {
       try
       {

Modified: branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml	2006-08-13 12:51:55 UTC (rev 736)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/handlerscope/WEB-INF/jaxws-handlers.xml	2006-08-13 17:40:21 UTC (rev 737)
@@ -77,4 +77,11 @@
 		</handler>
 	</handler-chain>
   
+	<handler-chain>
+		<handler>
+			<handler-name> GeneralHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.handlerscope.ServerHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
 </handler-chains>
\ No newline at end of file




More information about the jboss-svn-commits mailing list