[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