[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