[jbossws-commits] JBossWS SVN: r3571 - trunk/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:52:22 EDT 2007


Author: heiko.braun at jboss.com
Date: 2007-06-13 10:52:22 -0400 (Wed, 13 Jun 2007)
New Revision: 3571

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

Modified: trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java
===================================================================
--- trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java	2007-06-13 14:42:48 UTC (rev 3570)
+++ trunk/jbossws-core/src/main/java/org/jboss/ws/core/jaxws/client/ClientImpl.java	2007-06-13 14:52:22 UTC (rev 3571)
@@ -78,11 +78,17 @@
    // provide logging
    private static Logger log = Logger.getLogger(ClientImpl.class);
 
-   private final EndpointMetaData epMetaData;
-   private final HandlerResolver handlerResolver;
-   private Map<HandlerType, HandlerChainExecutor> executorMap = new HashMap<HandlerType, HandlerChainExecutor>();
+	// the associated endpoint meta data
+	private final EndpointMetaData epMetaData;
 
-   public ClientImpl(EndpointMetaData epMetaData, HandlerResolver handlerResolver)
+	// 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);
       setTargetEndpointAddress(epMetaData.getEndpointAddress());
@@ -105,26 +111,31 @@
    {
       BindingExt binding = (BindingExt)getBindingProvider().getBinding();
 
-      PortInfo portInfo = getPortInfo(epMetaData);
+		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)
+		{
 
-         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);
-      }
+			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);
 
-      if (handlerResolver != null)
-      {
-         List<Handler> epChain = handlerResolver.getHandlerChain(portInfo);
-         binding.setHandlerChain(epChain);
-      }
+				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);
+			}
+
+			// The regular handler chain
+			List<Handler> endpointChain = handlerResolver.getHandlerChain(portInfo);
+			binding.setHandlerChain(endpointChain);
+		}
    }
 
    /**
@@ -377,35 +388,24 @@
       configProvider.setConfigName(configName, configFile);
    }
 
-   public Set<QName> getHeaders()
+	/**
+	 * Retrieve header names that can be processed by this binding
+	 * @return
+	 */
+	public Set<QName> getHeaders()
    {
 		Set<QName> headers = new HashSet<QName>();
 
-		if (handlerResolver instanceof HandlerResolverImpl)
+		BindingExt binding = (BindingExt)getBinding();
+
+		for(HandlerType type : HANDLER_TYPES)
 		{
-			// From resolver
-			Set resolverHeaders = ((HandlerResolverImpl)handlerResolver).getHeaders();
-			headers.addAll(resolverHeaders);			
-		}
-		else
-		{
-			PortInfo portInfo = getPortInfo(epMetaData);
-			List<Handler> handlerChain = handlerResolver.getHandlerChain(portInfo);
-			if (handlerChain != null)
+			for(Handler bindingHandler : binding.getHandlerChain(type))
 			{
-				for (Handler handler : handlerChain)
-					if (handler instanceof SOAPHandler)
-						headers.addAll(((SOAPHandler)handler).getHeaders());
+				if(bindingHandler instanceof SOAPHandler)
+					headers.addAll( ((SOAPHandler)bindingHandler).getHeaders());
 			}
 		}
-
-		// Add the binding headers as well
-		// I.e. client calls Binding.setHandlerCain(...)
-		for(Handler bindingHandler : getBinding().getHandlerChain())
-		{
-			if(bindingHandler instanceof SOAPHandler)
-				headers.addAll( ((SOAPHandler)bindingHandler).getHeaders());
-		}
 		
 		return headers;
    }




More information about the jbossws-commits mailing list