You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/02/25 02:22:37 UTC
svn commit: r916080 [1/2] - in /cxf/trunk:
api/src/main/java/org/apache/cxf/endpoint/
api/src/main/java/org/apache/cxf/message/
api/src/main/java/org/apache/cxf/service/model/
common/common/src/main/java/org/apache/cxf/common/util/
rt/bindings/soap/src...
Author: dkulp
Date: Thu Feb 25 01:22:34 2010
New Revision: 916080
URL: http://svn.apache.org/viewvc?rev=916080&view=rev
Log:
Bunch of minor tweeks to help performance and scalability
Modified:
cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/AbstractConduitSelector.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/AbstractWrappedMessage.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/Exchange.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/ExchangeImpl.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java
cxf/trunk/api/src/main/java/org/apache/cxf/message/StringMapImpl.java
cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractMessageContainer.java
cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractPropertiesHolder.java
cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java
cxf/trunk/common/common/src/main/java/org/apache/cxf/common/util/ModCountCopyOnWriteArrayList.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/HeaderUtil.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapMessage.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/MustUnderstandInterceptor.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapHeaderInterceptor.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapPreProtocolOutInterceptor.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java
cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedOutInterceptor.java
cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/AbstractBindingImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/DefaultBindingImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/http/HTTPBindingImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsEndpointImpl.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/ConfiguredEndpointTest.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptorTest.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/LogicalHandlerInterceptorTest.java
cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptorTest.java
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestination.java
cxf/trunk/rt/transports/http-jetty/src/main/java/org/apache/cxf/transport/http_jetty/continuations/JettyContinuationWrapper.java
cxf/trunk/rt/transports/http-jetty/src/test/java/org/apache/cxf/transport/http_jetty/JettyHTTPDestinationTest.java
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/AbstractHTTPTransportFactory.java
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/policy/PolicyUtils.java
cxf/trunk/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/continuations/JMSContinuationProvider.java
cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/ContextUtils.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/IssuedTokenInterceptorProvider.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationInInterceptor.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationOutInterceptor.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/policy/interceptors/SecureConversationTokenInterceptorProvider.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/trust/STSClient.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
cxf/trunk/rt/ws/security/src/test/java/org/apache/cxf/ws/security/wss4j/RoundTripTest.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/DispatchHandlerInvocationTest.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationTest.java
cxf/trunk/systests/jaxws/src/test/java/org/apache/cxf/systest/handlers/HandlerInvocationUsingAddNumbersTest.java
cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/clustering/FailoverTest.java
cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopTest.java
cxf/trunk/systests/uncategorized/src/test/java/org/apache/cxf/systest/mtom/ClientMtomXopWithJMSTest.java
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/AbstractConduitSelector.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/AbstractConduitSelector.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/AbstractConduitSelector.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/endpoint/AbstractConduitSelector.java Thu Feb 25 01:22:34 2010
@@ -22,7 +22,6 @@
import java.io.IOException;
import java.util.logging.Logger;
-import org.apache.cxf.Bus;
import org.apache.cxf.BusException;
import org.apache.cxf.common.util.StringUtils;
import org.apache.cxf.interceptor.Fault;
@@ -67,8 +66,8 @@
EndpointInfo ei = endpoint.getEndpointInfo();
String transportID = ei.getTransportId();
try {
- ConduitInitiatorManager conduitInitiatorMgr =
- getBus(exchange).getExtension(ConduitInitiatorManager.class);
+ ConduitInitiatorManager conduitInitiatorMgr = exchange.getBus()
+ .getExtension(ConduitInitiatorManager.class);
if (conduitInitiatorMgr != null) {
ConduitInitiator conduitInitiator =
conduitInitiatorMgr.getConduitInitiator(transportID);
@@ -122,17 +121,6 @@
}
/**
- * Get the associated Bus instance from the exchange.
- *
- * @param exchange the current exchange
- * @return the Bus instance
- */
- private Bus getBus(Exchange exchange) {
- return exchange.get(Bus.class);
- }
-
-
- /**
* Called on completion of the MEP for which the Conduit was required.
*
* @param exchange represents the completed MEP
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/AbstractWrappedMessage.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/AbstractWrappedMessage.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/AbstractWrappedMessage.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/AbstractWrappedMessage.java Thu Feb 25 01:22:34 2010
@@ -162,5 +162,13 @@
public Object getContextualProperty(String key) {
return message.getContextualProperty(key);
- }
+ }
+ public void setContextualProperty(String key, Object v) {
+ message.setContextualProperty(key, v);
+ }
+
+ public void resetContextCache() {
+ message.resetContextCache();
+ }
+
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/Exchange.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/Exchange.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/Exchange.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/Exchange.java Thu Feb 25 01:22:34 2010
@@ -19,6 +19,11 @@
package org.apache.cxf.message;
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.Binding;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.Destination;
import org.apache.cxf.transport.Session;
@@ -100,4 +105,11 @@
* {@inheritDoc}
*/
void clear();
+
+ Bus getBus();
+ Service getService();
+ Endpoint getEndpoint();
+ Binding getBinding();
+ BindingOperationInfo getBindingOperationInfo();
+
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/ExchangeImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/ExchangeImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/ExchangeImpl.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/ExchangeImpl.java Thu Feb 25 01:22:34 2010
@@ -19,15 +19,19 @@
package org.apache.cxf.message;
+import org.apache.cxf.Bus;
+import org.apache.cxf.binding.Binding;
import org.apache.cxf.endpoint.ConduitSelector;
import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.endpoint.PreexistingConduitSelector;
+import org.apache.cxf.service.Service;
+import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.transport.Conduit;
import org.apache.cxf.transport.Destination;
import org.apache.cxf.transport.Session;
public class ExchangeImpl extends StringMapImpl implements Exchange {
-
+
private Destination destination;
private boolean oneWay;
private boolean synchronous = true;
@@ -39,6 +43,80 @@
private Session session;
+ private Bus bus;
+ private Endpoint endpoint;
+ private Service service;
+ private Binding binding;
+ private BindingOperationInfo bindingOp;
+
+
+ /*
+ public <T> T get(Class<T> key) {
+ if (key == Bus.class) {
+ return (T)bus;
+ } else if (key == Service.class) {
+ return (T)service;
+ } else if (key == Endpoint.class) {
+ return (T)endpoint;
+ } else if (key == BindingOperationInfo.class) {
+ return (T)bindingOp;
+ } else if (key == Binding.class) {
+ return (T)binding;
+ } else if (key == OperationInfo.class) {
+ return super.get(key);
+ }
+ return super.get(key);
+ }
+ */
+ private void resetContextCaches() {
+ if (inMessage != null) {
+ inMessage.resetContextCache();
+ }
+ if (outMessage != null) {
+ outMessage.resetContextCache();
+ }
+ if (inFaultMessage != null) {
+ inFaultMessage.resetContextCache();
+ }
+ if (outFaultMessage != null) {
+ outFaultMessage.resetContextCache();
+ }
+ }
+
+ public <T> void put(Class<T> key, T value) {
+ super.put(key, value);
+ if (key == Bus.class) {
+ resetContextCaches();
+ bus = (Bus)value;
+ } else if (key == Endpoint.class) {
+ resetContextCaches();
+ endpoint = (Endpoint)value;
+ } else if (key == Service.class) {
+ resetContextCaches();
+ service = (Service)value;
+ } else if (key == BindingOperationInfo.class) {
+ bindingOp = (BindingOperationInfo)value;
+ } else if (key == Binding.class) {
+ binding = (Binding)value;
+ }
+ }
+ public Object put(String key, Object value) {
+ if (inMessage != null) {
+ inMessage.setContextualProperty(key, value);
+ }
+ if (outMessage != null) {
+ outMessage.setContextualProperty(key, value);
+ }
+ if (inFaultMessage != null) {
+ inFaultMessage.setContextualProperty(key, value);
+ }
+ if (outFaultMessage != null) {
+ outFaultMessage.setContextualProperty(key, value);
+ }
+ return super.put(key, value);
+ }
+
+
public Destination getDestination() {
return destination;
}
@@ -124,6 +202,7 @@
public void clear() {
super.clear();
+ resetContextCaches();
destination = null;
oneWay = false;
inMessage = null;
@@ -131,5 +210,26 @@
inFaultMessage = null;
outFaultMessage = null;
session = null;
+ bus = null;
+ }
+
+ public Bus getBus() {
+ return bus;
+ }
+
+ public Endpoint getEndpoint() {
+ return endpoint;
+ }
+
+ public Service getService() {
+ return service;
+ }
+
+ public Binding getBinding() {
+ return binding;
+ }
+
+ public BindingOperationInfo getBindingOperationInfo() {
+ return bindingOp;
}
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/Message.java Thu Feb 25 01:22:34 2010
@@ -188,4 +188,7 @@
* @return the property's value
*/
Object getContextualProperty(String key);
+
+ void resetContextCache();
+ void setContextualProperty(String key, Object v);
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageImpl.java Thu Feb 25 01:22:34 2010
@@ -19,37 +19,90 @@
package org.apache.cxf.message;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.IdentityHashMap;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.w3c.dom.Node;
+
import org.apache.cxf.Bus;
import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.interceptor.InterceptorChain;
+import org.apache.cxf.io.DelegatingInputStream;
import org.apache.cxf.service.Service;
-import org.apache.cxf.service.model.OperationInfo;
+import org.apache.cxf.service.model.EndpointInfo;
import org.apache.cxf.transport.Destination;
public class MessageImpl extends StringMapImpl implements Message {
- static int count;
+ private static final Class<?> DEFAULT_CONTENTS[];
+ private static final int DEFAULT_CONTENTS_LENGTH;
+
+ static {
+ Class<?> tmps[];
+
+ try {
+ //if SAAJ is there, give it a slot
+ Class<?> cls = Class.forName("javax.xml.soap.SOAPMessage");
+ tmps = new Class<?>[] {
+ XMLStreamReader.class, XMLStreamWriter.class,
+ InputStream.class, OutputStream.class,
+ List.class, Exception.class, Node.class, DelegatingInputStream.class,
+ cls
+ };
+ } catch (Throwable e) {
+ tmps = new Class<?>[] {
+ XMLStreamReader.class, XMLStreamWriter.class,
+ InputStream.class, OutputStream.class,
+ List.class, Exception.class, Node.class, DelegatingInputStream.class
+ };
+ }
+ DEFAULT_CONTENTS = tmps;
+ DEFAULT_CONTENTS_LENGTH = tmps.length;
+ }
+
- private Collection<Attachment> attachments;
private Exchange exchange;
private String id;
private InterceptorChain interceptorChain;
- private Map<Class<?>, Object> contents = new IdentityHashMap<Class<?>, Object>(6);
+
+ private Object[] defaultContents = new Object[DEFAULT_CONTENTS_LENGTH];
+ private Map<Class<?>, Object> contents;
+ private Map<String, Object> contextCache;
+
public MessageImpl() {
//nothing
}
+ public MessageImpl(Message m) {
+ super(m);
+ if (m instanceof MessageImpl) {
+ MessageImpl impl = (MessageImpl)m;
+ exchange = impl.getExchange();
+ id = impl.id;
+ interceptorChain = impl.interceptorChain;
+ defaultContents = impl.defaultContents;
+ contents = impl.contents;
+ contextCache = impl.contextCache;
+ } else {
+ throw new RuntimeException("Not a MessageImpl! " + m.getClass());
+ }
+ }
public Collection<Attachment> getAttachments() {
- return attachments;
+ return CastUtils.cast((Collection<?>)get(ATTACHMENTS));
}
public void setAttachments(Collection<Attachment> attachments) {
- this.attachments = attachments;
put(ATTACHMENTS, attachments);
}
@@ -74,20 +127,55 @@
return this.interceptorChain;
}
+ @SuppressWarnings("unchecked")
public <T> T getContent(Class<T> format) {
- return format.cast(contents.get(format));
+ for (int x = 0; x < DEFAULT_CONTENTS_LENGTH; x++) {
+ if (DEFAULT_CONTENTS[x] == format) {
+ return (T)defaultContents[x];
+ }
+ }
+ return contents == null ? null : (T)contents.get(format);
}
public <T> void setContent(Class<T> format, Object content) {
+ for (int x = 0; x < DEFAULT_CONTENTS_LENGTH; x++) {
+ if (DEFAULT_CONTENTS[x] == format) {
+ defaultContents[x] = content;
+ return;
+ }
+ }
+ if (contents == null) {
+ contents = new IdentityHashMap<Class<?>, Object>(6);
+ }
contents.put(format, content);
}
public <T> void removeContent(Class<T> format) {
- contents.remove(format);
+ for (int x = 0; x < DEFAULT_CONTENTS_LENGTH; x++) {
+ if (DEFAULT_CONTENTS[x] == format) {
+ defaultContents[x] = null;
+ return;
+ }
+ }
+ if (contents != null) {
+ contents.remove(format);
+ }
}
public Set<Class<?>> getContentFormats() {
- return contents.keySet();
+
+ Set<Class<?>> c;
+ if (contents == null) {
+ c = new HashSet<Class<?>>();
+ } else {
+ c = new HashSet<Class<?>>(contents.keySet());
+ }
+ for (int x = 0; x < DEFAULT_CONTENTS_LENGTH; x++) {
+ if (defaultContents[x] != null) {
+ c.add(DEFAULT_CONTENTS[x]);
+ }
+ }
+ return c;
}
public void setDestination(Destination d) {
@@ -105,56 +193,67 @@
public void setInterceptorChain(InterceptorChain ic) {
this.interceptorChain = ic;
}
-
- public Object getContextualProperty(String key) {
- Object val = get(key);
-
- Exchange ex = getExchange();
- if (val == null && ex != null) {
- val = ex.get(key);
+ public Object put(String key, Object value) {
+ if (contextCache != null) {
+ contextCache.put(key, value);
}
-
- if (val == null) {
- OperationInfo ep = get(OperationInfo.class);
- if (ep != null) {
- val = ep.getProperty(key);
- }
+ return super.put(key, value);
+ }
+ public Object getContextualProperty(String key) {
+ if (contextCache == null) {
+ calcContextCache();
}
-
- if (val == null && ex != null) {
- Endpoint ep = ex.get(Endpoint.class);
- if (ep != null) {
- val = ep.get(key);
-
- if (val == null) {
- val = ep.getEndpointInfo().getProperty(key);
- }
-
- if (val == null) {
- val = ep.getEndpointInfo().getBinding().getProperty(key);
+ return contextCache.get(key);
+ }
+
+ private void calcContextCache() {
+ Map<String, Object> o = new HashMap<String, Object>() {
+ public void putAll(Map<? extends String, ? extends Object> m) {
+ if (m != null) {
+ super.putAll(m);
}
-
}
- if (val == null) {
- Service sv = ex.get(Service.class);
- if (sv != null) {
- val = sv.get(key);
- }
- if (val == null) {
- Bus bus = ex.get(Bus.class);
- if (bus != null) {
- val = bus.getProperty(key);
- }
+ };
+ Exchange ex = getExchange();
+ if (ex != null) {
+ Bus b = ex.getBus();
+ if (b != null) {
+ o.putAll(b.getProperties());
+ }
+ Service sv = ex.getService();
+ if (sv != null) {
+ o.putAll(sv);
+ }
+ Endpoint ep = ex.getEndpoint();
+ if (ep != null) {
+ EndpointInfo ei = ep.getEndpointInfo();
+ if (ei != null) {
+ o.putAll(ep.getEndpointInfo().getBinding().getProperties());
+ o.putAll(ep.getEndpointInfo().getProperties());
}
+ o.putAll(ep);
}
}
-
- return val;
+ o.putAll(ex);
+ o.putAll(this);
+ contextCache = o;
}
-
public static void copyContent(Message m1, Message m2) {
for (Class<?> c : m1.getContentFormats()) {
m2.setContent(c, m1.getContent(c));
}
}
+
+ public void resetContextCache() {
+ if (contextCache != null) {
+ contextCache = null;
+ }
+ }
+
+ @Override
+ public void setContextualProperty(String key, Object v) {
+ if (contextCache != null && !containsKey(key)) {
+ contextCache.put(key, v);
+ }
+ }
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/MessageUtils.java Thu Feb 25 01:22:34 2010
@@ -130,12 +130,15 @@
* Returns true if the underlying content format is a W3C DOM or a SAAJ message.
*/
public static boolean isDOMPresent(Message m) {
+ return m.getContent(Node.class) != null;
+ /*
for (Class c : m.getContentFormats()) {
if (c.equals(Node.class) || c.getName().equals("javax.xml.soap.SOAPMessage")) {
return true;
}
}
return false;
+ */
}
}
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/message/StringMapImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/message/StringMapImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/message/StringMapImpl.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/message/StringMapImpl.java Thu Feb 25 01:22:34 2010
@@ -20,6 +20,7 @@
package org.apache.cxf.message;
import java.util.HashMap;
+import java.util.Map;
/**
* A variation on HashMap which allows lookup by Class, via the string
@@ -29,8 +30,15 @@
extends HashMap<String, Object>
implements StringMap {
+ public StringMapImpl() {
+ }
+ public StringMapImpl(Map<String, Object> i) {
+ super(i);
+ }
+
+ @SuppressWarnings("unchecked")
public <T> T get(Class<T> key) {
- return key.cast(get(key.getName()));
+ return (T)get(key.getName());
}
public <T> void put(Class<T> key, T value) {
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractMessageContainer.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractMessageContainer.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractMessageContainer.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractMessageContainer.java Thu Feb 25 01:22:34 2010
@@ -213,9 +213,12 @@
* @return all message parts.
*/
public List<MessagePartInfo> getMessageParts() {
+ if (outOfBandParts == null) {
+ return new ArrayList<MessagePartInfo>(messageParts.values());
+ }
List<MessagePartInfo> parts = new ArrayList<MessagePartInfo>(messageParts.values());
- parts.addAll(getOutOfBandParts());
- return Collections.unmodifiableList(parts);
+ parts.addAll(outOfBandParts);
+ return parts;
}
public List<MessagePartInfo> getOutOfBandParts() {
if (outOfBandParts == null) {
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractPropertiesHolder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractPropertiesHolder.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractPropertiesHolder.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/service/model/AbstractPropertiesHolder.java Thu Feb 25 01:22:34 2010
@@ -41,7 +41,9 @@
public void setDocumentation(String s) {
documentation = s;
}
-
+ public Map<String, Object> getProperties() {
+ return propertyMap.get();
+ }
public Object getProperty(String name) {
if (null == propertyMap.get()) {
return null;
Modified: cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/service/model/ServiceModelUtil.java Thu Feb 25 01:22:34 2010
@@ -42,7 +42,7 @@
}
public static Service getService(Exchange exchange) {
- return exchange.get(Service.class);
+ return exchange.getService();
}
public static String getTargetNamespace(Exchange exchange) {
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/common/util/ModCountCopyOnWriteArrayList.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/common/util/ModCountCopyOnWriteArrayList.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/common/util/ModCountCopyOnWriteArrayList.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/common/util/ModCountCopyOnWriteArrayList.java Thu Feb 25 01:22:34 2010
@@ -21,104 +21,129 @@
import java.util.Collection;
import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.atomic.AtomicInteger;
public final class ModCountCopyOnWriteArrayList<T> extends CopyOnWriteArrayList<T> {
- int modCount;
+ AtomicInteger modCount = new AtomicInteger();
public ModCountCopyOnWriteArrayList() {
super();
}
public ModCountCopyOnWriteArrayList(Collection<? extends T> c) {
- super();
- synchronized (c) {
- addAll(c);
- if (c instanceof ModCountCopyOnWriteArrayList) {
- modCount = ((ModCountCopyOnWriteArrayList)c).getModCount();
- }
+ super(c);
+ if (c instanceof ModCountCopyOnWriteArrayList) {
+ modCount.set(((ModCountCopyOnWriteArrayList)c).getModCount());
}
}
- public synchronized int getModCount() {
- return modCount;
+ public int getModCount() {
+ return modCount.get();
}
- public synchronized void setModCount(int i) {
- modCount = i;
+ public void setModCount(int i) {
+ modCount.set(i);
}
@Override
- public synchronized void add(int index, T element) {
- ++modCount;
+ public void add(int index, T element) {
super.add(index, element);
+ modCount.incrementAndGet();
}
@Override
- public synchronized boolean add(T element) {
- ++modCount;
- return super.add(element);
+ public boolean add(T element) {
+ if (super.add(element)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized boolean addAll(Collection<? extends T> c) {
- ++modCount;
- return super.addAll(c);
+ public boolean addAll(Collection<? extends T> c) {
+ if (super.addAll(c)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized boolean addAll(int index, Collection<? extends T> c) {
- ++modCount;
- return super.addAll(index, c);
+ public boolean addAll(int index, Collection<? extends T> c) {
+ if (super.addAll(index, c)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized int addAllAbsent(Collection<? extends T> c) {
- ++modCount;
- return super.addAllAbsent(c);
+ public int addAllAbsent(Collection<? extends T> c) {
+ int i = super.addAllAbsent(c);
+ if (i > 0) {
+ modCount.incrementAndGet();
+ }
+ return i;
}
@Override
- public synchronized boolean addIfAbsent(T element) {
- ++modCount;
- return super.addIfAbsent(element);
+ public boolean addIfAbsent(T element) {
+ if (super.addIfAbsent(element)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized void clear() {
- ++modCount;
+ public void clear() {
super.clear();
+ modCount.incrementAndGet();
}
@Override
- public synchronized T remove(int index) {
- ++modCount;
- return super.remove(index);
+ public T remove(int index) {
+ T t = super.remove(index);
+ if (t != null) {
+ modCount.incrementAndGet();
+ }
+ return t;
}
@Override
- public synchronized boolean remove(Object o) {
- ++modCount;
- return super.remove(o);
+ public boolean remove(Object o) {
+ if (super.remove(o)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized boolean removeAll(Collection c) {
- ++modCount;
- return super.removeAll(c);
+ public boolean removeAll(Collection c) {
+ if (super.removeAll(c)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
@Override
- public synchronized boolean retainAll(Collection c) {
- ++modCount;
- return super.retainAll(c);
+ public boolean retainAll(Collection c) {
+ if (super.retainAll(c)) {
+ modCount.incrementAndGet();
+ return true;
+ }
+ return false;
}
- public synchronized int hashCode() {
- return super.hashCode() + modCount;
+ public int hashCode() {
+ return super.hashCode() + modCount.get();
}
- public synchronized boolean equals(Object o) {
+ public boolean equals(Object o) {
if (o instanceof ModCountCopyOnWriteArrayList) {
- return super.equals(o) && modCount == ((ModCountCopyOnWriteArrayList)o).getModCount();
+ return super.equals(o) && modCount.get() == ((ModCountCopyOnWriteArrayList)o).getModCount();
}
return false;
}
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/HeaderUtil.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/HeaderUtil.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/HeaderUtil.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/HeaderUtil.java Thu Feb 25 01:22:34 2010
@@ -19,6 +19,7 @@
package org.apache.cxf.binding.soap;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -75,17 +76,15 @@
}
public static Set<QName> getHeaderQNameInOperationParam(SoapMessage soapMessage) {
- Set<QName> headers = new HashSet<QName>();
- BindingOperationInfo bop = soapMessage.getExchange()
- .get(BindingOperationInfo.class);
+ BindingOperationInfo bop = soapMessage.getExchange().getBindingOperationInfo();
if (bop != null) {
if (bop.getInput() != null) {
- headers.addAll(getHeaderParts(bop.getInput()));
+ return getHeaderParts(bop.getInput());
}
if (bop.getOutput() != null) {
- headers.addAll(getHeaderParts(bop.getOutput()));
+ return getHeaderParts(bop.getOutput());
}
}
- return headers;
+ return Collections.emptySet();
}
}
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapBinding.java Thu Feb 25 01:22:34 2010
@@ -22,7 +22,6 @@
import org.apache.cxf.binding.Binding;
import org.apache.cxf.interceptor.AbstractBasicInterceptorProvider;
import org.apache.cxf.message.Message;
-import org.apache.cxf.message.MessageImpl;
import org.apache.cxf.service.model.BindingInfo;
public class SoapBinding extends AbstractBasicInterceptorProvider implements Binding {
@@ -52,7 +51,9 @@
}
public Message createMessage() {
- return createMessage(new MessageImpl());
+ SoapMessage soapMessage = new SoapMessage(version);
+ soapMessage.put(Message.CONTENT_TYPE, soapMessage.getVersion().getContentType());
+ return soapMessage;
}
public Message createMessage(Message m) {
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapMessage.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapMessage.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapMessage.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/SoapMessage.java Thu Feb 25 01:22:34 2010
@@ -27,14 +27,19 @@
import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.CastUtils;
-import org.apache.cxf.message.AbstractWrappedMessage;
import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageImpl;
-public class SoapMessage extends AbstractWrappedMessage {
- private SoapVersion version = Soap11.getInstance();
+public class SoapMessage extends MessageImpl {
+ private SoapVersion version;
public SoapMessage(Message message) {
super(message);
+ version = Soap11.getInstance();
+ }
+ public SoapMessage(SoapVersion ver) {
+ super();
+ version = ver;
}
public SoapVersion getVersion() {
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/MustUnderstandInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/MustUnderstandInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/MustUnderstandInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/MustUnderstandInterceptor.java Thu Feb 25 01:22:34 2010
@@ -60,6 +60,12 @@
}
public void handleMessage(SoapMessage soapMessage) {
+ Set<QName> paramHeaders = HeaderUtil.getHeaderQNameInOperationParam(soapMessage);
+
+ if (soapMessage.getHeaders().isEmpty() && paramHeaders.isEmpty()) {
+ return;
+ }
+
SoapVersion soapVersion = soapMessage.getVersion();
Set<Header> mustUnderstandHeaders = new HashSet<Header>();
Set<URI> serviceRoles = new HashSet<URI>();
@@ -67,7 +73,7 @@
Set<Header> ultimateReceiverHeaders = new HashSet<Header>();
Set<QName> mustUnderstandQNames = new HashSet<QName>();
- initServiceSideInfo(mustUnderstandQNames, soapMessage, serviceRoles);
+ initServiceSideInfo(mustUnderstandQNames, soapMessage, serviceRoles, paramHeaders);
buildMustUnderstandHeaders(mustUnderstandHeaders, soapMessage,
serviceRoles, ultimateReceiverHeaders);
@@ -126,9 +132,7 @@
}
}
private void initServiceSideInfo(Set<QName> mustUnderstandQNames, SoapMessage soapMessage,
- Set<URI> serviceRoles) {
-
- Set<QName> paramHeaders = HeaderUtil.getHeaderQNameInOperationParam(soapMessage);
+ Set<URI> serviceRoles, Set<QName> paramHeaders) {
if (paramHeaders != null) {
mustUnderstandQNames.addAll(paramHeaders);
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapHeaderInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapHeaderInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapHeaderInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapHeaderInterceptor.java Thu Feb 25 01:22:34 2010
@@ -65,7 +65,7 @@
parameters = new MessageContentsList();
}
- BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
+ BindingOperationInfo bop = exchange.getBindingOperationInfo();
if (null == bop) {
return;
}
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapPreProtocolOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapPreProtocolOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapPreProtocolOutInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapPreProtocolOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -97,7 +97,7 @@
}
private void setSoapAction(SoapMessage message) {
- BindingOperationInfo boi = message.getExchange().get(BindingOperationInfo.class);
+ BindingOperationInfo boi = message.getExchange().getBindingOperationInfo();
// The soap action is set on the wrapped operation.
if (boi != null && boi.isUnwrapped()) {
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -112,6 +112,7 @@
} else {
StaxUtils.copy(node, new W3CDOMStreamWriter(part));
}
+ message.setContent(Node.class, soapMessage.getSOAPPart());
Collection<Attachment> atts = message.getAttachments();
if (atts != null) {
Modified: cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java (original)
+++ cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -36,6 +36,8 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
+import org.w3c.dom.Node;
+
import org.apache.cxf.attachment.AttachmentImpl;
import org.apache.cxf.binding.soap.Soap11;
@@ -124,6 +126,7 @@
// Replace stax writer with DomStreamWriter
message.setContent(XMLStreamWriter.class, writer);
message.setContent(SOAPMessage.class, soapMessage);
+ message.setContent(Node.class, soapMessage.getSOAPPart());
} catch (SOAPException e) {
Modified: cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java (original)
+++ cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/SoapActionInterceptorTest.java Thu Feb 25 01:22:34 2010
@@ -64,18 +64,18 @@
soapMessage = (SoapMessage) sb.createMessage(soapMessage);
soapMessage.put(Message.REQUESTOR_ROLE, Boolean.TRUE);
i.handleMessage(soapMessage);
- String ct = (String) message.get(Message.CONTENT_TYPE);
+ String ct = (String) soapMessage.get(Message.CONTENT_TYPE);
assertEquals("application/soap+xml", ct);
BindingOperationInfo bop = createBindingOperation();
- message.getExchange().put(BindingOperationInfo.class, bop);
+ soapMessage.getExchange().put(BindingOperationInfo.class, bop);
SoapOperationInfo soapInfo = new SoapOperationInfo();
soapInfo.setAction("foo");
bop.addExtensor(soapInfo);
i.handleMessage(soapMessage);
- ct = (String) message.get(Message.CONTENT_TYPE);
+ ct = (String) soapMessage.get(Message.CONTENT_TYPE);
assertEquals("application/soap+xml; action=\"foo\"", ct);
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/clustering/FailoverTargetSelector.java Thu Feb 25 01:22:34 2010
@@ -19,10 +19,9 @@
package org.apache.cxf.clustering;
-import java.io.IOException;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -64,7 +63,7 @@
*/
public FailoverTargetSelector(Conduit c) {
super(c);
- inProgress = new HashMap<InvocationKey, InvocationContext>();
+ inProgress = new ConcurrentHashMap<InvocationKey, InvocationContext>();
}
/**
@@ -78,7 +77,7 @@
if (!inProgress.containsKey(key)) {
Endpoint endpoint = exchange.get(Endpoint.class);
BindingOperationInfo bindingOperationInfo =
- exchange.get(BindingOperationInfo.class);
+ exchange.getBindingOperationInfo();
Object[] params = message.getContent(List.class).toArray();
Map<String, Object> context =
CastUtils.cast((Map)message.get(Message.INVOCATION_CONTEXT));
@@ -197,18 +196,18 @@
Exception ex = outMessage.get(Exception.class) != null
? outMessage.get(Exception.class)
: exchange.get(Exception.class);
- getLogger().log(Level.INFO,
+ getLogger().log(Level.FINE,
"CHECK_LAST_INVOKE_FAILED",
new Object[] {ex != null});
Throwable curr = ex;
boolean failover = false;
while (curr != null) {
- getLogger().log(Level.WARNING,
- "CHECK_FAILURE_IN_TRANSPORT",
- new Object[] {ex, curr instanceof IOException});
failover = curr instanceof java.io.IOException;
curr = curr.getCause();
}
+ getLogger().log(Level.INFO,
+ "CHECK_FAILURE_IN_TRANSPORT",
+ new Object[] {ex, failover});
return failover;
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/endpoint/ClientImpl.java Thu Feb 25 01:22:34 2010
@@ -596,7 +596,7 @@
public void onMessage(Message message) {
- Endpoint endpoint = message.getExchange().get(Endpoint.class);
+ Endpoint endpoint = message.getExchange().getEndpoint();
if (endpoint == null) {
// in this case correlation will occur outside the transport,
// however there's a possibility that the endpoint may have been
@@ -859,19 +859,17 @@
return getConduitSelector(null);
}
- protected final synchronized ConduitSelector getConduitSelector(
+ protected final ConduitSelector getConduitSelector(
ConduitSelector override
) {
if (null == conduitSelector) {
- setConduitSelector(override != null
- ? override
- : new UpfrontConduitSelector());
+ setConduitSelector(override);
}
return conduitSelector;
}
- public final void setConduitSelector(ConduitSelector selector) {
- conduitSelector = selector;
+ public final synchronized void setConduitSelector(ConduitSelector selector) {
+ conduitSelector = selector == null ? new UpfrontConduitSelector() : selector;
}
private boolean isPartialResponse(Message in) {
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractInDatabindingInterceptor.java Thu Feb 25 01:22:34 2010
@@ -88,7 +88,7 @@
BUNDLE, service.getName()));
}
dataReader.setAttachments(message.getAttachments());
- dataReader.setProperty(DataReader.ENDPOINT, message.getExchange().get(Endpoint.class));
+ dataReader.setProperty(DataReader.ENDPOINT, message.getExchange().getEndpoint());
dataReader.setProperty(Message.class.getName(), message);
setSchemaInMessage(service, message, dataReader);
return dataReader;
@@ -208,7 +208,7 @@
QName interfaceQName = si.getInterface().getName();
message.put(Message.WSDL_INTERFACE, interfaceQName);
- EndpointInfo endpointInfo = ex.get(Endpoint.class).getEndpointInfo();
+ EndpointInfo endpointInfo = ex.getEndpoint().getEndpointInfo();
QName portQName = endpointInfo.getName();
message.put(Message.WSDL_PORT, portQName);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/AbstractOutDatabindingInterceptor.java Thu Feb 25 01:22:34 2010
@@ -30,7 +30,6 @@
import javax.xml.validation.Schema;
import org.apache.cxf.databinding.DataWriter;
-import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
@@ -68,7 +67,7 @@
List<MessagePartInfo> parts) {
OutputStream out = message.getContent(OutputStream.class);
XMLStreamWriter origXmlWriter = message.getContent(XMLStreamWriter.class);
- Service service = exchange.get(Service.class);
+ Service service = exchange.getService();
XMLStreamWriter xmlWriter = origXmlWriter;
CachingXmlEventWriter cache = null;
@@ -167,7 +166,7 @@
}
writer.setAttachments(atts);
- writer.setProperty(DataWriter.ENDPOINT, message.getExchange().get(Endpoint.class));
+ writer.setProperty(DataWriter.ENDPOINT, message.getExchange().getEndpoint());
writer.setProperty(Message.class.getName(), message);
setSchemaOutMessage(service, message, writer);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/DocLiteralInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -67,7 +67,7 @@
MessageContentsList parameters = new MessageContentsList();
Exchange exchange = message.getExchange();
- BindingOperationInfo bop = exchange.get(BindingOperationInfo.class);
+ BindingOperationInfo bop = exchange.getBindingOperationInfo();
boolean client = isRequestor(message);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/FIStaxInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -51,7 +51,7 @@
return Boolean.TRUE.equals(message.containsKey(Message.REQUESTOR_ROLE));
}
- private synchronized StAXDocumentParser getParser(InputStream in) {
+ private StAXDocumentParser getParser(InputStream in) {
StAXDocumentParser parser = new StAXDocumentParser(in);
parser.setStringInterning(true);
parser.setForceStreamClose(true);
@@ -60,7 +60,7 @@
}
public void handleMessage(Message message) {
- if (message.getContentFormats().contains(XMLStreamReader.class)
+ if (message.getContent(XMLStreamReader.class) != null
|| !isHttpVerbSupported(message)) {
return;
}
@@ -81,7 +81,7 @@
if (isRequestor(message)) {
//record the fact that is worked so future requests will
//automatically be FI enabled
- Endpoint ep = message.getExchange().get(Endpoint.class);
+ Endpoint ep = message.getExchange().getEndpoint();
ep.put(FIStaxOutInterceptor.FI_ENABLED, Boolean.TRUE);
}
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/StaxInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -57,7 +57,7 @@
}
public void handleMessage(Message message) {
- if (isGET(message) || message.getContentFormats().contains(XMLStreamReader.class)) {
+ if (isGET(message) || message.getContent(XMLStreamReader.class) != null) {
LOG.fine("StaxInInterceptor skipped.");
return;
}
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedOutInterceptor.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/interceptor/WrappedOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -49,7 +49,7 @@
}
public void handleMessage(Message message) {
- BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class);
+ BindingOperationInfo bop = message.getExchange().getBindingOperationInfo();
if (bop != null && bop.isUnwrapped()) {
XMLStreamWriter xmlWriter = message.getContent(XMLStreamWriter.class);
Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/transport/ChainInitiationObserver.java Thu Feb 25 01:22:34 2010
@@ -74,6 +74,7 @@
Exchange exchange = message.getExchange();
if (exchange == null) {
exchange = new ExchangeImpl();
+ m.setExchange(exchange);
}
exchange.setInMessage(message);
setExchangeProperties(exchange, message);
Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java (original)
+++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/utils/JAXRSUtilsTest.java Thu Feb 25 01:22:34 2010
@@ -1401,6 +1401,10 @@
m.setExchange(e);
e.setInMessage(m);
Endpoint endpoint = EasyMock.createMock(Endpoint.class);
+ endpoint.getEndpointInfo();
+ EasyMock.expectLastCall().andReturn(null).anyTimes();
+ endpoint.size();
+ EasyMock.expectLastCall().andReturn(0).anyTimes();
endpoint.get(ProviderFactory.class.getName());
EasyMock.expectLastCall().andReturn(factory).anyTimes();
EasyMock.replay(endpoint);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ServiceImpl.java Thu Feb 25 01:22:34 2010
@@ -460,6 +460,7 @@
List<Handler> hc = jaxwsEndpoint.getJaxwsBinding().getHandlerChain();
hc.addAll(handlerResolver.getHandlerChain(portInfos.get(portName)));
+ jaxwsEndpoint.getJaxwsBinding().setHandlerChain(hc);
LOG.log(Level.FINE, "created proxy", obj);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/AbstractBindingImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/AbstractBindingImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/AbstractBindingImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/AbstractBindingImpl.java Thu Feb 25 01:22:34 2010
@@ -25,15 +25,29 @@
import javax.xml.ws.Binding;
import javax.xml.ws.handler.Handler;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
+
public abstract class AbstractBindingImpl implements Binding {
private List<Handler> handlerChain = new ArrayList<Handler>();
+ private final JaxWsEndpointImpl endpoint;
+
+ public AbstractBindingImpl(JaxWsEndpointImpl imp) {
+ endpoint = imp;
+ }
+
public List<Handler> getHandlerChain() {
- return handlerChain;
+ //per spec, this should be a copy
+ return new ArrayList<Handler>(handlerChain);
}
public void setHandlerChain(List<Handler> hc) {
handlerChain = hc;
+ if (handlerChain == null || handlerChain.isEmpty()) {
+ endpoint.removeHandlerInterceptors();
+ } else {
+ endpoint.addHandlerInterceptors();
+ }
}
public abstract String getBindingID();
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/DefaultBindingImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/DefaultBindingImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/DefaultBindingImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/DefaultBindingImpl.java Thu Feb 25 01:22:34 2010
@@ -19,7 +19,13 @@
package org.apache.cxf.jaxws.binding;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
+
public class DefaultBindingImpl extends AbstractBindingImpl {
+ public DefaultBindingImpl(JaxWsEndpointImpl endpoint) {
+ super(endpoint);
+ }
+
public String getBindingID() {
//DefaultBindingImpl should not be used, though JBI binding and
//some other bindings did not implement their own Binding.
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/http/HTTPBindingImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/http/HTTPBindingImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/http/HTTPBindingImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/http/HTTPBindingImpl.java Thu Feb 25 01:22:34 2010
@@ -27,11 +27,13 @@
import javax.xml.ws.http.HTTPBinding;
import org.apache.cxf.jaxws.binding.AbstractBindingImpl;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
import org.apache.cxf.service.model.BindingInfo;
public class HTTPBindingImpl extends AbstractBindingImpl implements HTTPBinding {
- public HTTPBindingImpl(BindingInfo sb) {
+ public HTTPBindingImpl(BindingInfo sb, JaxWsEndpointImpl ep) {
+ super(ep);
}
public String getBindingID() {
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/binding/soap/SOAPBindingImpl.java Thu Feb 25 01:22:34 2010
@@ -36,6 +36,7 @@
import org.apache.cxf.binding.soap.model.SoapBindingInfo;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.jaxws.binding.AbstractBindingImpl;
+import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.service.model.BindingInfo;
@@ -47,7 +48,8 @@
private BindingInfo soapBinding;
private Set<String> roles;
- public SOAPBindingImpl(BindingInfo sb) {
+ public SOAPBindingImpl(BindingInfo sb, JaxWsEndpointImpl endpoint) {
+ super(endpoint);
soapBinding = sb;
addRequiredRoles();
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractJAXWSHandlerInterceptor.java Thu Feb 25 01:22:34 2010
@@ -30,7 +30,7 @@
import org.apache.cxf.service.model.ServiceModelUtil;
public abstract class AbstractJAXWSHandlerInterceptor<T extends Message> extends AbstractPhaseInterceptor<T> {
- private Binding binding;
+ protected Binding binding;
protected AbstractJAXWSHandlerInterceptor(Binding b, String phase) {
super(phase);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/AbstractProtocolHandlerInterceptor.java Thu Feb 25 01:22:34 2010
@@ -39,6 +39,9 @@
}
public void handleMessage(T message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
MessageContext context = createProtocolMessageContext(message);
HandlerChainInvoker invoker = getInvoker(message);
invoker.setProtocolMessageContext(context);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -37,6 +37,9 @@
}
public void handleMessage(Message message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
HandlerChainInvoker invoker = getInvoker(message);
if (invoker.getLogicalHandlers().isEmpty()) {
return;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerFaultOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -58,6 +58,9 @@
}
public void handleMessage(Message message) throws Fault {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
HandlerChainInvoker invoker = getInvoker(message);
if (invoker.getLogicalHandlers().isEmpty()) {
return;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -50,6 +50,9 @@
}
public void handleMessage(Message message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
HandlerChainInvoker invoker = getInvoker(message);
if (invoker.getLogicalHandlers().isEmpty()) {
return;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalHandlerOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -60,6 +60,9 @@
}
public void handleMessage(Message message) throws Fault {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
HandlerChainInvoker invoker = getInvoker(message);
if (invoker.getLogicalHandlers().isEmpty()) {
return;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -70,6 +70,9 @@
}
public void handleMessage(SoapMessage message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
if (getInvoker(message).getProtocolHandlers().isEmpty()) {
return;
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerFaultOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -89,6 +89,9 @@
}
public void handleMessage(SoapMessage message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
if (getInvoker(message).getProtocolHandlers().isEmpty()) {
return;
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPHandlerInterceptor.java Thu Feb 25 01:22:34 2010
@@ -106,6 +106,9 @@
}
public void handleMessage(SoapMessage message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
if (getInvoker(message).getProtocolHandlers().isEmpty()) {
return;
}
@@ -283,6 +286,9 @@
}
public void handleFault(SoapMessage message) {
+ if (binding.getHandlerChain().isEmpty()) {
+ return;
+ }
if (getInvoker(message).getProtocolHandlers().isEmpty()) {
return;
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -47,7 +47,7 @@
Exchange exchange = message.getExchange();
- OperationInfo op = exchange.get(OperationInfo.class);
+ OperationInfo op = exchange.getBindingOperationInfo().getOperationInfo();
if (op == null || !op.hasOutput() || op.getOutput().size() == 0) {
return;
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -49,7 +49,9 @@
public void handleMessage(Message message) throws Fault {
MessageContentsList outObjects = MessageContentsList.getContentsList(message);
Exchange exchange = message.getExchange();
- OperationInfo op = exchange.get(OperationInfo.class);
+ OperationInfo op = exchange.getBindingOperationInfo() == null
+ ? null
+ : exchange.getBindingOperationInfo().getOperationInfo();
if (LOG.isLoggable(Level.FINE)) {
LOG.fine("op: " + op);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -46,7 +46,7 @@
}
public void handleMessage(SoapMessage message) throws Fault {
- BindingOperationInfo bop = message.getExchange().get(BindingOperationInfo.class);
+ BindingOperationInfo bop = message.getExchange().getBindingOperationInfo();
if (bop == null) {
return;
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -99,7 +99,7 @@
public void handleMessage(SoapMessage message) throws Fault {
Exchange ex = message.getExchange();
- BindingOperationInfo bop = ex.get(BindingOperationInfo.class);
+ BindingOperationInfo bop = ex.getBindingOperationInfo();
if (bop == null) {
return;
}
@@ -118,7 +118,7 @@
SoapBodyInfo sbi = bmi.getExtensor(SoapBodyInfo.class);
if (sbi == null || sbi.getAttachments() == null || sbi.getAttachments().size() == 0) {
- Service s = ex.get(Service.class);
+ Service s = ex.getService();
DataBinding db = s.getDataBinding();
if (db instanceof JAXBDataBinding
&& hasSwaRef((JAXBDataBinding) db)) {
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassInInterceptor.java Thu Feb 25 01:22:34 2010
@@ -56,7 +56,7 @@
public void handleMessage(Message message) throws Fault {
Exchange ex = message.getExchange();
- BindingOperationInfo boi = ex.get(BindingOperationInfo.class);
+ BindingOperationInfo boi = ex.getBindingOperationInfo();
if (Boolean.TRUE.equals(message.get(Message.PARTIAL_RESPONSE_MESSAGE))
|| boi == null) {
return;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java?rev=916080&r1=916079&r2=916080&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WrapperClassOutInterceptor.java Thu Feb 25 01:22:34 2010
@@ -50,7 +50,7 @@
public void handleMessage(Message message) throws Fault {
Exchange ex = message.getExchange();
- BindingOperationInfo bop = ex.get(BindingOperationInfo.class);
+ BindingOperationInfo bop = ex.getBindingOperationInfo();
MessageInfo messageInfo = message.get(MessageInfo.class);
if (messageInfo == null || bop == null || !bop.isUnwrapped()) {