[jbossws-commits] JBossWS SVN: r3566 - branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Wed Jun 13 10:28:26 EDT 2007


Author: heiko.braun at jboss.com
Date: 2007-06-13 10:28:26 -0400 (Wed, 13 Jun 2007)
New Revision: 3566

Modified:
   branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
Log:
Cleanup mustUNderstand processing. Rely on binding as HeaderSource only

Modified: branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
===================================================================
--- branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java	2007-06-13 13:30:03 UTC (rev 3565)
+++ branches/jbossws-2.0/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java	2007-06-13 14:28:26 UTC (rev 3566)
@@ -78,10 +78,16 @@
    // provide logging
    private static Logger log = Logger.getLogger(ClientImpl.class);
 
+	// the associated endpoint meta data
    private final EndpointMetaData epMetaData;
+
+	// Keep a handle on the resolver so that updateConfig calls may revisit the associated chains
    private final HandlerResolver handlerResolver;
+   
    private Map<HandlerType, HandlerChainExecutor> executorMap = new HashMap<HandlerType, HandlerChainExecutor>();
 
+   private static HandlerType[] HANDLER_TYPES = new HandlerType[] {HandlerType.PRE, HandlerType.ENDPOINT, HandlerType.POST};
+
    public ClientImpl(EndpointMetaData epMetaData, HandlerResolver handlerResolver)
    {
       super(epMetaData);
@@ -107,24 +113,29 @@
 
       PortInfo portInfo = getPortInfo(epMetaData);
 
-      if (handlerResolver instanceof HandlerResolverImpl)
-      {
-         HandlerResolverImpl impl = (HandlerResolverImpl)handlerResolver;
-         impl.initHandlerChain(epMetaData, HandlerType.PRE, clearExistingHandlers);
-         impl.initHandlerChain(epMetaData, HandlerType.ENDPOINT, clearExistingHandlers);
-         impl.initHandlerChain(epMetaData, HandlerType.POST, clearExistingHandlers);
+		if (handlerResolver != null)
+		{
+      
+			boolean jbossHandlerResolver = handlerResolver instanceof HandlerResolverImpl;
+			
+			if (jbossHandlerResolver) // knows about PRE and POST handlers
+			{
+				HandlerResolverImpl impl = (HandlerResolverImpl)handlerResolver;
+				impl.initHandlerChain(epMetaData, HandlerType.PRE, clearExistingHandlers);
+				impl.initHandlerChain(epMetaData, HandlerType.ENDPOINT, clearExistingHandlers);
+				impl.initHandlerChain(epMetaData, HandlerType.POST, clearExistingHandlers);
 
-         List<Handler> preChain = impl.getHandlerChain(portInfo, HandlerType.PRE);
-         binding.setHandlerChain(preChain, HandlerType.PRE);
-         List<Handler> postChain = impl.getHandlerChain(portInfo, HandlerType.POST);
-         binding.setHandlerChain(postChain, HandlerType.POST);
-      }
+				List<Handler> preChain = impl.getHandlerChain(portInfo, HandlerType.PRE);
+				List<Handler> postChain = impl.getHandlerChain(portInfo, HandlerType.POST);
+				
+				binding.setHandlerChain(postChain, HandlerType.POST);
+				binding.setHandlerChain(preChain, HandlerType.PRE);
+			}
 
-      if (handlerResolver != null)
-      {
-         List<Handler> epChain = handlerResolver.getHandlerChain(portInfo);
-         binding.setHandlerChain(epChain);
-      }
+			// The regular handler chain
+			List<Handler> endpointChain = handlerResolver.getHandlerChain(portInfo);
+			binding.setHandlerChain(endpointChain);
+		}
    }
 
    /**
@@ -377,22 +388,26 @@
       configProvider.setConfigName(configName, configFile);
    }
 
+	/**
+	 * Retrieve header names that can be processed by this binding
+	 * @return
+	 */
    public Set<QName> getHeaders()
    {
-      if (handlerResolver instanceof HandlerResolverImpl)
-         return ((HandlerResolverImpl)handlerResolver).getHeaders();
+		Set<QName> headers = new HashSet<QName>();
+      	
+		BindingExt binding = (BindingExt)getBinding();
 
-      Set<QName> headers = new HashSet<QName>();
-      PortInfo portInfo = getPortInfo(epMetaData);
-      List<Handler> handlerChain = handlerResolver.getHandlerChain(portInfo);
-      if (handlerChain != null)
-      {
-         for (Handler handler : handlerChain)
-            if (handler instanceof SOAPHandler)
-               headers.addAll(((SOAPHandler)handler).getHeaders());
-      }
-
-      return headers;
+		for(HandlerType type : HANDLER_TYPES)
+		{
+			for(Handler bindingHandler : binding.getHandlerChain(type))
+			{
+				if(bindingHandler instanceof SOAPHandler)
+					headers.addAll( ((SOAPHandler)bindingHandler).getHeaders());
+			}
+		}
+		
+		return headers;
    }
 
    @Override
@@ -410,4 +425,4 @@
       PortInfo portInfo = new PortInfoImpl(serviceName, portName, bindingID);
       return portInfo;
    }
-}
\ No newline at end of file
+}




More information about the jbossws-commits mailing list