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 2008/08/27 21:15:33 UTC
svn commit: r689572 - in /cxf/trunk: bin/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/
rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/
rt/frontend/jaxws/src/main/java/...
Author: dkulp
Date: Wed Aug 27 12:15:32 2008
New Revision: 689572
URL: http://svn.apache.org/viewvc?rev=689572&view=rev
Log:
Performance improvement by not mapping the jaxws properties back and forth all the time. Wrapper the message directly and map on get/put.
Removed:
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/ContextPropertiesMapping.java
Modified:
cxf/trunk/bin/DoMerges.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/BindingProviderImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.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/logical/LogicalMessageContextImpl.java
cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.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/handler/soap/SOAPMessageContextImpl.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/support/ContextPropertiesMappingTest.java
Modified: cxf/trunk/bin/DoMerges.java
URL: http://svn.apache.org/viewvc/cxf/trunk/bin/DoMerges.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/bin/DoMerges.java (original)
+++ cxf/trunk/bin/DoMerges.java Wed Aug 27 12:15:32 2008
@@ -58,7 +58,11 @@
if (c == 'N') {
return;
}
- Process p = Runtime.getRuntime().exec(new String[] {"svn", "commit", "-F", "svnmerge-commit-message.txt"});
+ Process p = Runtime.getRuntime().exec(new String[] {"svn", "resolved", "."});
+ if (p.waitFor() != 0) {
+ Thread.sleep(10);
+ }
+ p = Runtime.getRuntime().exec(new String[] {"svn", "commit", "-F", "svnmerge-commit-message.txt"});
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/BindingProviderImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/BindingProviderImpl.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/BindingProviderImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/BindingProviderImpl.java Wed Aug 27 12:15:32 2008
@@ -27,7 +27,9 @@
import javax.xml.ws.BindingProvider;
import javax.xml.ws.EndpointReference;
import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.MessageContext.Scope;
+import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
public class BindingProviderImpl implements BindingProvider {
@@ -62,7 +64,9 @@
public Map<String, Object> getResponseContext() {
if (null == responseContext.get()) {
- responseContext.set(new HashMap<String, Object>());
+ responseContext.set(new WrappedMessageContext(new HashMap<String, Object>(),
+ null,
+ Scope.APPLICATION));
}
return responseContext.get();
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/DispatchImpl.java Wed Aug 27 12:15:32 2008
@@ -48,6 +48,7 @@
import javax.xml.ws.Response;
import javax.xml.ws.Service;
import javax.xml.ws.WebServiceException;
+import javax.xml.ws.handler.MessageContext.Scope;
import javax.xml.ws.http.HTTPBinding;
import javax.xml.ws.http.HTTPException;
import javax.xml.ws.soap.SOAPBinding;
@@ -66,11 +67,11 @@
import org.apache.cxf.interceptor.Interceptor;
import org.apache.cxf.interceptor.InterceptorProvider;
import org.apache.cxf.interceptor.MessageSenderInterceptor;
+import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.jaxws.handler.logical.DispatchLogicalHandlerInterceptor;
import org.apache.cxf.jaxws.handler.soap.DispatchSOAPHandlerInterceptor;
import org.apache.cxf.jaxws.interceptors.DispatchInDatabindingInterceptor;
import org.apache.cxf.jaxws.interceptors.DispatchOutDatabindingInterceptor;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
@@ -140,14 +141,17 @@
}
- Map<String, Object> reqContext = new HashMap<String, Object>(this.getRequestContext());
+ Map<String, Object> reqContext = new HashMap<String, Object>();
+ WrappedMessageContext ctx = new WrappedMessageContext(reqContext,
+ null,
+ Scope.APPLICATION);
+ ctx.putAll(this.getRequestContext());
Map<String, Object> respContext = this.getResponseContext();
// clear the response context's hold information
// Not call the clear Context is to avoid the error
// that getResponseContext() would be called by Client code first
respContext.clear();
- ContextPropertiesMapping.mapRequestfromJaxws2Cxf(reqContext);
message.putAll(reqContext);
//need to do context mapping from jax-ws to cxf message
@@ -220,8 +224,6 @@
Message inMsg = waitResponse(exchange);
respContext.putAll(inMsg);
getConduitSelector().complete(exchange);
- //need to do context mapping from cxf message to jax-ws
- ContextPropertiesMapping.mapResponsefromCxf2Jaxws(respContext);
return cl.cast(inMsg.getContent(Object.class));
}
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JAXWSMethodInvoker.java Wed Aug 27 12:15:32 2008
@@ -20,21 +20,30 @@
package org.apache.cxf.jaxws;
import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import javax.activation.DataHandler;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.MessageContext.Scope;
import javax.xml.ws.soap.SOAPFaultException;
+import org.apache.cxf.attachment.AttachmentImpl;
import org.apache.cxf.binding.soap.SoapFault;
+import org.apache.cxf.binding.soap.SoapMessage;
+import org.apache.cxf.endpoint.Endpoint;
+import org.apache.cxf.headers.Header;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxws.context.WebServiceContextImpl;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
+import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Exchange;
+import org.apache.cxf.message.Message;
import org.apache.cxf.service.invoker.Factory;
import org.apache.cxf.service.invoker.FactoryInvoker;
import org.apache.cxf.service.invoker.SingletonFactory;
@@ -75,8 +84,7 @@
protected Object invoke(Exchange exchange, final Object serviceObject, Method m, List<Object> params) {
// set up the webservice request context
- MessageContext ctx =
- ContextPropertiesMapping.createWebServiceContext(exchange);
+ WrappedMessageContext ctx = new WrappedMessageContext(exchange.getInMessage(), Scope.APPLICATION);
Map<String, Scope> scopes = CastUtils.cast((Map<?, ?>)ctx.get(WrappedMessageContext.SCOPES));
Map<String, Object> handlerScopedStuff = new HashMap<String, Object>();
@@ -97,14 +105,70 @@
List<Object> res = CastUtils.cast((List)super.invoke(exchange, serviceObject, m, params));
for (Map.Entry<String, Object> key : handlerScopedStuff.entrySet()) {
- ctx.put(key.getKey(), key.getValue());
- ctx.setScope(key.getKey(), Scope.HANDLER);
+ ctx.put(key.getKey(), key.getValue(), Scope.HANDLER);
}
//update the webservice response context
- ContextPropertiesMapping.updateWebServiceContext(exchange, ctx);
+ updateWebServiceContext(exchange, ctx);
//clear the WebServiceContextImpl's ThreadLocal variable
WebServiceContextImpl.clear();
return res;
}
+
+
+ private Message createResponseMessage(Exchange exchange) {
+ if (exchange == null) {
+ return null;
+ }
+ Message m = exchange.getOutMessage();
+ if (m == null && !exchange.isOneWay()) {
+ Endpoint ep = exchange.get(Endpoint.class);
+ m = ep.getBinding().createMessage();
+ exchange.setOutMessage(m);
+ }
+ return m;
+ }
+
+ private void updateWebServiceContext(Exchange exchange, MessageContext ctx) {
+ // Guard against wrong type associated with header list.
+ // Need to copy header only if the message is going out.
+ if (ctx.containsKey(Header.HEADER_LIST)
+ && ctx.get(Header.HEADER_LIST) instanceof List<?>) {
+ List list = (List) ctx.get(Header.HEADER_LIST);
+ if (list != null && !list.isEmpty()) {
+ SoapMessage sm = (SoapMessage) createResponseMessage(exchange);
+ Iterator iter = list.iterator();
+ while (iter.hasNext()) {
+ sm.getHeaders().add((Header) iter.next());
+ }
+ }
+ }
+ if (exchange.getOutMessage() != null) {
+ Message out = exchange.getOutMessage();
+ if (out.containsKey(Message.PROTOCOL_HEADERS)) {
+ Map<String, List<String>> heads = CastUtils
+ .cast((Map<?, ?>)exchange.getOutMessage().get(Message.PROTOCOL_HEADERS));
+ if (heads.containsKey("Content-Type")) {
+ List<String> ct = heads.get("Content-Type");
+ exchange.getOutMessage().put(Message.CONTENT_TYPE, ct.get(0));
+ heads.remove("Content-Type");
+ }
+ }
+ Map<String, DataHandler> dataHandlers
+ = CastUtils.cast((Map<?, ?>)out.get(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS));
+ if (dataHandlers != null && !dataHandlers.isEmpty()) {
+ Collection<Attachment> attachments = out.getAttachments();
+ if (attachments == null) {
+ attachments = new ArrayList<Attachment>();
+ out.setAttachments(attachments);
+ }
+ for (Map.Entry<String, DataHandler> entry : dataHandlers.entrySet()) {
+ Attachment att = new AttachmentImpl(entry.getKey(), entry.getValue());
+ attachments.add(att);
+ }
+ }
+ out.remove(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
+ }
+ }
+
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Wed Aug 27 12:15:32 2008
@@ -55,7 +55,6 @@
import org.apache.cxf.frontend.MethodDispatcher;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.jaxws.support.JaxWsEndpointImpl;
import org.apache.cxf.service.model.BindingOperationInfo;
@@ -160,9 +159,6 @@
Map<String, Object> context = new HashMap<String, Object>();
- // need to do context mapping from jax-ws to cxf message
- ContextPropertiesMapping.mapRequestfromJaxws2Cxf(reqContext);
-
context.put(Client.REQUEST_CONTEXT, reqContext);
context.put(Client.RESPONSE_CONTEXT, respContext);
@@ -208,8 +204,6 @@
}
}
- // need to do context mapping from cxf message to jax-ws
- ContextPropertiesMapping.mapResponsefromCxf2Jaxws(respContext);
Map<String, Scope> scopes = CastUtils.cast((Map<?, ?>)respContext.get(WrappedMessageContext.SCOPES));
if (scopes != null) {
for (Map.Entry<String, Scope> scope : scopes.entrySet()) {
@@ -314,6 +308,7 @@
private Map<String, Object> getRequestContextCopy() {
Map<String, Object> realMap = new HashMap<String, Object>();
WrappedMessageContext ctx = new WrappedMessageContext(realMap,
+ null,
Scope.APPLICATION);
// thread local contexts reflect currentRequestContext as of
// last call to getRequestContext()
@@ -338,7 +333,9 @@
public Map<String, Object> getResponseContext() {
if (null == responseContext.get()) {
- responseContext.set(new HashMap<String, Object>());
+ responseContext.set(new WrappedMessageContext(new HashMap<String, Object>(),
+ null,
+ Scope.APPLICATION));
}
return responseContext.get();
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/context/WrappedMessageContext.java Wed Aug 27 12:15:32 2008
@@ -20,124 +20,354 @@
package org.apache.cxf.jaxws.context;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
+import javax.activation.DataHandler;
+import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.MessageContext.Scope;
+import org.apache.cxf.attachment.LazyAttachmentCollection;
+import org.apache.cxf.binding.soap.SoapBindingConstants;
+import org.apache.cxf.configuration.security.AuthorizationPolicy;
+import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.helpers.CastUtils;
+import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
public class WrappedMessageContext implements MessageContext {
public static final String SCOPES = WrappedMessageContext.class.getName() + ".SCOPES";
- private final Map<String, Object> contextMap;
- private final Message message;
+ private static Map<String, String> cxf2jaxwsMap = new HashMap<String, String>();
+ private static Map<String, String> jaxws2cxfMap = new HashMap<String, String>();
+
+ static {
+ cxf2jaxwsMap.put(Message.ENDPOINT_ADDRESS,
+ BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
+ cxf2jaxwsMap.put(Message.MAINTAIN_SESSION,
+ BindingProvider.SESSION_MAINTAIN_PROPERTY);
+
+ cxf2jaxwsMap.put(Message.HTTP_REQUEST_METHOD,
+ MessageContext.HTTP_REQUEST_METHOD);
+ cxf2jaxwsMap.put(Message.RESPONSE_CODE,
+ MessageContext.HTTP_RESPONSE_CODE);
+ cxf2jaxwsMap.put(Message.PATH_INFO,
+ MessageContext.PATH_INFO);
+ cxf2jaxwsMap.put(Message.QUERY_STRING,
+ MessageContext.QUERY_STRING);
+ cxf2jaxwsMap.put("HTTP.REQUEST",
+ MessageContext.SERVLET_REQUEST);
+ cxf2jaxwsMap.put("HTTP.RESPONSE",
+ MessageContext.SERVLET_RESPONSE);
+ cxf2jaxwsMap.put("HTTP.CONTEXT",
+ MessageContext.SERVLET_CONTEXT);
+
+ jaxws2cxfMap.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+ Message.ENDPOINT_ADDRESS);
+ jaxws2cxfMap.put(BindingProvider.SESSION_MAINTAIN_PROPERTY,
+ Message.MAINTAIN_SESSION);
+
+ jaxws2cxfMap.put(MessageContext.HTTP_REQUEST_METHOD,
+ Message.HTTP_REQUEST_METHOD);
+ jaxws2cxfMap.put(MessageContext.HTTP_RESPONSE_CODE,
+ Message.RESPONSE_CODE);
+ jaxws2cxfMap.put(MessageContext.PATH_INFO,
+ Message.PATH_INFO);
+ jaxws2cxfMap.put(MessageContext.QUERY_STRING,
+ Message.QUERY_STRING);
+
+ jaxws2cxfMap.put(MessageContext.SERVLET_REQUEST,
+ "HTTP.REQUEST");
+ jaxws2cxfMap.put(MessageContext.SERVLET_RESPONSE,
+ "HTTP.RESPONSE");
+ jaxws2cxfMap.put(MessageContext.SERVLET_CONTEXT,
+ "HTTP.CONTEXT");
+
+ jaxws2cxfMap.put(BindingProvider.SOAPACTION_URI_PROPERTY, SoapBindingConstants.SOAP_ACTION);
+ }
+
+ private final Map<String, Object> message;
+ private final Map<String, Object> reqMessage;
+ private final Exchange exchange;
private Map<String, Scope> scopes;
private Scope defaultScope;
public WrappedMessageContext(Message m) {
- this(m, m, Scope.HANDLER);
+ this(m, Scope.HANDLER);
}
public WrappedMessageContext(Message m, Scope defScope) {
- this(m, m, defScope);
- }
-
- public WrappedMessageContext(Map<String, Object> m, Scope defScope) {
- this(null, m, defScope);
- }
-
- public WrappedMessageContext(Message m, Map<String, Object> map, Scope defScope) {
+ this(m, m.getExchange(), defScope);
+ }
+ public WrappedMessageContext(Map<String, Object> m, Exchange ex, Scope defScope) {
message = m;
- contextMap = map;
+ exchange = ex;
defaultScope = defScope;
- scopes = CastUtils.cast((Map<?, ?>)contextMap.get(SCOPES));
- if (scopes == null && message != null && message.getExchange() != null) {
- if (isRequestor() && !isOutbound() && m.getExchange().getOutMessage() != null) {
- scopes = CastUtils.cast((Map<?, ?>)m.getExchange().getOutMessage().get(SCOPES));
- copyScopedProperties(m.getExchange().getOutMessage());
- m.put(SCOPES, scopes);
- } else if (!isRequestor() && isOutbound() && m.getExchange().getInMessage() != null) {
- scopes = CastUtils.cast((Map<?, ?>)m.getExchange().getInMessage().get(SCOPES));
- copyScopedProperties(m.getExchange().getInMessage());
- m.put(SCOPES, scopes);
+ scopes = CastUtils.cast((Map<?, ?>)message.get(SCOPES));
+
+ if (isResponse() && exchange != null) {
+ if (isRequestor()) {
+ reqMessage = exchange.getOutMessage();
+ } else {
+ reqMessage = exchange.getInMessage();
}
+ } else {
+ reqMessage = null;
+ }
+
+ if (scopes == null && reqMessage != null) {
+ scopes = CastUtils.cast((Map<?, ?>)reqMessage.get(SCOPES));
+ m.put(SCOPES, scopes);
+ copyScoped(message);
}
if (scopes == null) {
scopes = new HashMap<String, Scope>();
- contextMap.put(SCOPES, scopes);
+ message.put(SCOPES, scopes);
+ }
+ }
+ private void copyScoped(Map<String, Object> msg) {
+ for (String s : scopes.keySet()) {
+ message.put(s, msg.get(s));
}
}
- protected final void copyScopedProperties(Message m) {
- for (String k : scopes.keySet()) {
- if (!contextMap.containsKey(k)
- && !MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(k)) {
- contextMap.put(k, m.get(k));
- }
+ private String mapKey(String key) {
+ String k2 = jaxws2cxfMap.get(key);
+ if (k2 != null) {
+ return k2;
}
+ return key;
+ }
+ private String mapKeyReverse(String key) {
+ String k2 = cxf2jaxwsMap.get(key);
+ if (k2 != null) {
+ return k2;
+ }
+ if (Message.PROTOCOL_HEADERS.equals(key)) {
+ return isResponse() ? MessageContext.HTTP_RESPONSE_HEADERS : MessageContext.HTTP_REQUEST_HEADERS;
+ }
+ return key;
+ }
+
+
+ protected final boolean isResponse() {
+ return isOutbound() ^ isRequestor();
}
protected final boolean isRequestor() {
- return Boolean.TRUE.equals(contextMap.containsKey(Message.REQUESTOR_ROLE));
+ return Boolean.TRUE.equals(message.containsKey(Message.REQUESTOR_ROLE));
}
protected final boolean isOutbound() {
- Exchange ex = message.getExchange();
return message != null
- && (message == ex.getOutMessage()
- || message == ex.getOutFaultMessage());
+ && exchange != null
+ && (message == exchange.getOutMessage()
+ || message == exchange.getOutFaultMessage());
}
public final Message getWrappedMessage() {
- return message;
+ return message instanceof Message ? (Message)message : null;
}
public void clear() {
- contextMap.clear();
+ //just clear the JAXWS things....
+ for (String key : jaxws2cxfMap.keySet()) {
+ remove(key);
+ }
}
public final boolean containsKey(Object key) {
- return contextMap.containsKey(key);
+ return message.containsKey(mapKey((String)key));
}
public final boolean containsValue(Object value) {
- return contextMap.containsValue(value);
+ return message.containsValue(value);
}
- public final Set<Entry<String, Object>> entrySet() {
- return contextMap.entrySet();
+ public Object get(Object key) {
+ String mappedkey = mapKey((String)key);
+ Object ret = message.get(mappedkey);
+ if (ret == null) {
+ if (Message.class.getName().equals(mappedkey)) {
+ return message;
+ }
+ if (exchange != null) {
+ ret = exchange.get(mappedkey);
+ if (ret != null) {
+ return ret;
+ }
+ }
+ if (MessageContext.INBOUND_MESSAGE_ATTACHMENTS.equals(key)) {
+ if (isOutbound()) {
+ ret = reqMessage.get(key);
+ }
+ ret = createAttachments(getWrappedMessage(), MessageContext.INBOUND_MESSAGE_ATTACHMENTS);
+ } else if (MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS.equals(key)) {
+ ret = createAttachments(createResponseMessage(), MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
+ } else if (MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(key)) {
+ ret = isOutbound();
+ } else if (MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
+ if (!isResponse()) {
+ ret = message.get(Message.PROTOCOL_HEADERS);
+ } else if (reqMessage != null && !isRequestor()) {
+ ret = reqMessage.get(Message.PROTOCOL_HEADERS);
+ }
+ } else if (MessageContext.HTTP_RESPONSE_HEADERS.equals(key)) {
+ Map mp = null;
+ if (isResponse()) {
+ mp = (Map)message.get(Message.PROTOCOL_HEADERS);
+ } else if (exchange != null) {
+ //may have to create the out message and add the headers
+ Message tmp = createResponseMessage();
+ if (tmp != null) {
+ ret = (Map)tmp.get(Message.PROTOCOL_HEADERS);
+ }
+ }
+ ret = mp;
+ } else if (BindingProvider.USERNAME_PROPERTY.equals(key)) {
+ AuthorizationPolicy authPolicy =
+ (AuthorizationPolicy)message.get(AuthorizationPolicy.class.getName());
+ if (authPolicy != null) {
+ ret = authPolicy.getUserName();
+ }
+ } else if (BindingProvider.PASSWORD_PROPERTY.equals(key)) {
+ AuthorizationPolicy authPolicy =
+ (AuthorizationPolicy)message.get(AuthorizationPolicy.class.getName());
+ if (authPolicy != null) {
+ ret = authPolicy.getPassword();
+ }
+ }
+
+ if (ret == null && reqMessage != null) {
+ ret = reqMessage.get(mappedkey);
+ }
+ }
+ return ret;
}
- public final Object get(Object key) {
- Object ret = contextMap.get(key);
- if (ret == null
- && Message.class.getName().equals(key)) {
- return message;
+ private Message createResponseMessage() {
+ if (exchange == null || isRequestor()) {
+ return null;
}
- return ret;
+ Message m = exchange.getOutMessage();
+ if (m == null && !exchange.isOneWay()) {
+ Endpoint ep = exchange.get(Endpoint.class);
+ m = ep.getBinding().createMessage();
+ exchange.setOutMessage(m);
+ }
+ return m;
}
+ private Object createAttachments(Message mc, String propertyName) {
+ Collection<Attachment> attachments = mc.getAttachments();
+ Map<String, DataHandler> dataHandlers = getDHMap(attachments);
+ mc.put(propertyName,
+ dataHandlers);
+ scopes.put(propertyName, Scope.APPLICATION);
+ return dataHandlers;
+ }
+ private static Map<String, DataHandler> getDHMap(Collection<Attachment> attachments) {
+ Map<String, DataHandler> dataHandlers = null;
+ if (attachments != null) {
+ if (attachments instanceof LazyAttachmentCollection) {
+ dataHandlers = ((LazyAttachmentCollection)attachments).createDataHandlerMap();
+ } else {
+ //preserve the order of iteration
+ dataHandlers = new LinkedHashMap<String, DataHandler>();
+ for (Attachment attachment : attachments) {
+ dataHandlers.put(attachment.getId(), attachment.getDataHandler());
+ }
+ }
+ }
+ return dataHandlers == null ? new LinkedHashMap<String, DataHandler>() : dataHandlers;
+ }
public final boolean isEmpty() {
- return contextMap.isEmpty();
+ return message.isEmpty();
}
+ // map to jaxws
public final Set<String> keySet() {
- return contextMap.keySet();
+ Set<String> set = new HashSet<String>();
+ for (String s : message.keySet()) {
+ set.add(s);
+ set.add(mapKeyReverse(s));
+ }
+ return Collections.unmodifiableSet(set);
}
+ public final Set<Entry<String, Object>> entrySet() {
+ Set<Entry<String, Object>> set = new HashSet<Entry<String, Object>>();
+ for (Map.Entry<String, Object> s : message.entrySet()) {
+ set.add(s);
+
+ final String s2 = mapKeyReverse(s.getKey());
+ final Object o = s.getValue();
+ if (s2.equals(s.getKey())) {
+ Map.Entry<String, Object> entry = new Map.Entry<String, Object>() {
+ public String getKey() {
+ return s2;
+ }
+ public Object getValue() {
+ return o;
+ }
+ public Object setValue(Object value) {
+ throw new UnsupportedOperationException();
+ }
+ };
+ set.add(entry);
+ }
+ }
+ return Collections.unmodifiableSet(set);
+ }
+
public final Object put(String key, Object value) {
- if (!MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(key)
- && !scopes.containsKey(key)) {
- scopes.put(key, defaultScope);
- }
- return contextMap.put(key, value);
+ return put(key, value, defaultScope);
}
public final Object put(String key, Object value, Scope scope) {
- if (!MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(key)) {
- scopes.put(key, scope);
+ String mappedKey = mapKey(key);
+ if (!MessageContext.MESSAGE_OUTBOUND_PROPERTY.equals(mappedKey)) {
+ scopes.put(mappedKey, scope);
+ }
+ if ((MessageContext.HTTP_RESPONSE_HEADERS.equals(key)
+ || MessageContext.HTTP_RESPONSE_CODE.equals(key)
+ || MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS.equals(key)
+ || MessageContext.HTTP_RESPONSE_CODE.equals(key))
+ && !isResponse() && !isRequestor()) {
+ Message tmp = createResponseMessage();
+ if (tmp != null) {
+ if (MessageContext.HTTP_RESPONSE_HEADERS.equals(key)) {
+ return tmp.put(Message.PROTOCOL_HEADERS, value);
+ } else {
+ return tmp.put(mappedKey, value);
+ }
+ }
+ return null;
+ } else if (BindingProvider.USERNAME_PROPERTY.equals(key)) {
+ AuthorizationPolicy authPolicy =
+ (AuthorizationPolicy)message.get(AuthorizationPolicy.class.getName());
+ if (authPolicy == null) {
+ authPolicy = new AuthorizationPolicy();
+ message.put(AuthorizationPolicy.class.getName(), authPolicy);
+ }
+ String ret = authPolicy.getUserName();
+ authPolicy.setUserName((String)value);
+ return ret;
+ } else if (BindingProvider.PASSWORD_PROPERTY.equals(key)) {
+ AuthorizationPolicy authPolicy =
+ (AuthorizationPolicy)message.get(AuthorizationPolicy.class.getName());
+ if (authPolicy == null) {
+ authPolicy = new AuthorizationPolicy();
+ message.put(AuthorizationPolicy.class.getName(), authPolicy);
+ }
+ String ret = authPolicy.getPassword();
+ authPolicy.setPassword((String)value);
+ return ret;
+ } else {
+ return message.put(mappedKey, value);
}
- return contextMap.put(key, value);
}
public final void putAll(Map<? extends String, ? extends Object> t) {
@@ -147,16 +377,17 @@
}
public final Object remove(Object key) {
+ key = mapKey((String)key);
scopes.remove(key);
- return contextMap.remove(key);
+ return message.remove(key);
}
public final int size() {
- return contextMap.size();
+ return message.size();
}
public final Collection<Object> values() {
- return contextMap.values();
+ return message.values();
}
public final void setScope(String key, Scope arg1) {
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/HandlerChainInvoker.java Wed Aug 27 12:15:32 2008
@@ -120,24 +120,18 @@
}
public boolean invokeLogicalHandlers(boolean requestor, LogicalMessageContext context) {
- context.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, isOutbound());
return invokeHandlerChain(logicalHandlers, context);
}
public boolean invokeLogicalHandlersHandleFault(boolean requestor, LogicalMessageContext context) {
- context.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, isOutbound());
return invokeHandlerChainHandleFault(logicalHandlers, context);
}
public boolean invokeProtocolHandlers(boolean requestor, MessageContext context) {
- context.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, isOutbound());
-
return invokeHandlerChain(protocolHandlers, context);
}
public boolean invokeProtocolHandlersHandleFault(boolean requestor, MessageContext context) {
- context.put(MessageContext.MESSAGE_OUTBOUND_PROPERTY, isOutbound());
-
return invokeHandlerChainHandleFault(protocolHandlers, context);
}
@@ -248,7 +242,6 @@
if (LOG.isLoggable(Level.FINE)) {
LOG.log(Level.FINE, "invoking handlers, direction: " + (outbound ? "outbound" : "inbound"));
}
- setMessageOutboundProperty(ctx);
if (!outbound) {
handlerChain = reverseHandlerChain(handlerChain);
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/DispatchLogicalHandlerInterceptor.java Wed Aug 27 12:15:32 2008
@@ -25,7 +25,6 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxws.handler.AbstractJAXWSHandlerInterceptor;
import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.phase.PhaseInterceptorChain;
@@ -51,9 +50,7 @@
LogicalMessageContextImpl lctx = new LogicalMessageContextImpl(message);
invoker.setLogicalMessageContext(lctx);
boolean requestor = isRequestor(message);
-
- ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), lctx, requestor);
-
+
if (!invoker.invokeLogicalHandlers(requestor, lctx) && requestor) {
if (isOutbound(message)) {
// client side outbound - the request message becomes the
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=689572&r1=689571&r2=689572&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 Wed Aug 27 12:15:32 2008
@@ -33,7 +33,6 @@
import org.apache.cxf.jaxws.handler.AbstractJAXWSHandlerInterceptor;
import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
import org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
@@ -63,7 +62,6 @@
setupBindingOperationInfo(message.getExchange(), lctx);
}
- ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), lctx, requestor);
if (!invoker.invokeLogicalHandlers(requestor, lctx)) {
if (!requestor) {
//server side
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=689572&r1=689571&r2=689572&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 Wed Aug 27 12:15:32 2008
@@ -36,7 +36,6 @@
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.jaxws.handler.AbstractJAXWSHandlerInterceptor;
import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.phase.PhaseInterceptorChain;
@@ -106,8 +105,6 @@
invoker.setLogicalMessageContext(lctx);
boolean requestor = isRequestor(message);
- ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), lctx, requestor);
-
XMLStreamReader reader = (XMLStreamReader)message.get("LogicalHandlerInterceptor.INREADER");
SOAPMessage origMessage = null;
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageContextImpl.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageContextImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/logical/LogicalMessageContextImpl.java Wed Aug 27 12:15:32 2008
@@ -19,8 +19,11 @@
package org.apache.cxf.jaxws.handler.logical;
+import java.util.Map;
+
import javax.xml.ws.LogicalMessage;
import javax.xml.ws.handler.LogicalMessageContext;
+import javax.xml.ws.handler.MessageContext;
import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.Message;
@@ -35,5 +38,25 @@
public LogicalMessage getMessage() {
return new LogicalMessageImpl(this);
}
+
+ public Object get(Object key) {
+ Object o = super.get(key);
+ if (MessageContext.HTTP_RESPONSE_HEADERS.equals(key)
+ || MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
+ Map mp = (Map)o;
+ if (mp != null) {
+ if (mp.isEmpty()) {
+ return null;
+ }
+ if (!isResponse() && MessageContext.HTTP_RESPONSE_HEADERS.equals(key)) {
+ return null;
+ }
+ if (isRequestor() && MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
+ return null;
+ }
+ }
+ }
+ return o;
+ }
}
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/DispatchSOAPHandlerInterceptor.java Wed Aug 27 12:15:32 2008
@@ -37,7 +37,6 @@
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.jaxws.handler.AbstractProtocolHandlerInterceptor;
import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
import org.apache.cxf.phase.PhaseInterceptorChain;
@@ -125,10 +124,7 @@
@Override
protected MessageContext createProtocolMessageContext(SoapMessage message) {
- SOAPMessageContextImpl sm = new SOAPMessageContextImpl(message);
- boolean requestor = isRequestor(message);
- ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), sm, requestor);
- return sm;
+ return new SOAPMessageContextImpl(message);
}
public void handleFault(SoapMessage message) {
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=689572&r1=689571&r2=689572&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 Wed Aug 27 12:15:32 2008
@@ -56,7 +56,6 @@
import org.apache.cxf.interceptor.OutgoingChainInterceptor;
import org.apache.cxf.jaxws.handler.AbstractProtocolHandlerInterceptor;
import org.apache.cxf.jaxws.handler.HandlerChainInvoker;
-import org.apache.cxf.jaxws.support.ContextPropertiesMapping;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.Message;
import org.apache.cxf.phase.Phase;
@@ -230,8 +229,6 @@
protected MessageContext createProtocolMessageContext(SoapMessage message) {
SOAPMessageContextImpl sm = new SOAPMessageContextImpl(message);
- boolean requestor = isRequestor(message);
- ContextPropertiesMapping.mapCxf2Jaxws(message.getExchange(), sm, requestor);
Exchange exch = message.getExchange();
setupBindingOperationInfo(exch, sm);
SOAPMessage msg = sm.getMessage();
Modified: cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/handler/soap/SOAPMessageContextImpl.java Wed Aug 27 12:15:32 2008
@@ -24,6 +24,7 @@
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import javax.xml.bind.JAXBContext;
@@ -117,5 +118,25 @@
private SoapMessage getWrappedSoapMessage() {
return (SoapMessage)getWrappedMessage();
}
+
+ public Object get(Object key) {
+ Object o = super.get(key);
+ if (MessageContext.HTTP_RESPONSE_HEADERS.equals(key)
+ || MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
+ Map mp = (Map)o;
+ if (mp != null) {
+ if (mp.isEmpty()) {
+ return null;
+ }
+ if (!isRequestor() && isOutbound() && MessageContext.HTTP_RESPONSE_HEADERS.equals(key)) {
+ return null;
+ }
+ if (isRequestor() && isOutbound() && MessageContext.HTTP_REQUEST_HEADERS.equals(key)) {
+ return null;
+ }
+ }
+ }
+ return o;
+ }
}
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/handler/HandlerChainInvokerTest.java Wed Aug 27 12:15:32 2008
@@ -972,10 +972,6 @@
invoker.invokeLogicalHandlers(requestorProperty, lmc);
- assertNotNull(message.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY));
- assertEquals(outboundProperty, message.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY));
- // assertNotNull(message.get(ObjectMessageContext.REQUESTOR_ROLE_PROPERTY));
- // assertEquals(requestorProperty, message.get(ObjectMessageContext.REQUESTOR_ROLE_PROPERTY));
assertTrue("handler not invoked", logicalHandlers[0].isHandleMessageInvoked());
assertTrue("handler not invoked", logicalHandlers[1].isHandleMessageInvoked());
assertTrue(invoker.getInvokedHandlers().contains(logicalHandlers[0]));
Modified: cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java?rev=689572&r1=689571&r2=689572&view=diff
==============================================================================
--- cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java (original)
+++ cxf/trunk/rt/frontend/jaxws/src/test/java/org/apache/cxf/jaxws/support/ContextPropertiesMappingTest.java Wed Aug 27 12:15:32 2008
@@ -18,11 +18,9 @@
*/
package org.apache.cxf.jaxws.support;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
-import java.util.List;
import java.util.Map;
import javax.activation.DataHandler;
@@ -30,16 +28,16 @@
import javax.mail.util.ByteArrayDataSource;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.MessageContext.Scope;
import org.apache.cxf.attachment.AttachmentImpl;
-import org.apache.cxf.headers.Header;
+import org.apache.cxf.jaxws.context.WrappedMessageContext;
import org.apache.cxf.message.Attachment;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
import org.apache.cxf.message.Message;
import org.apache.cxf.message.MessageImpl;
-import org.easymock.EasyMock;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -48,7 +46,6 @@
private static final String ADDRESS = "test address";
private static final String REQUEST_METHOD = "GET";
private static final String HEADER = "header";
- private static final Integer RESPONSE_CODE = 401;
private Map<String, Object> message = new HashMap<String, Object>();
private Map<String, Object> requestContext = new HashMap<String, Object>();
@@ -67,35 +64,6 @@
responseContext.clear();
}
- @Test
- public void testMapRequestfromJaxws2Cxf() {
- Object address = requestContext.get(Message.ENDPOINT_ADDRESS);
- assertNull("address should be null", address);
- ContextPropertiesMapping.mapRequestfromJaxws2Cxf(requestContext);
- address = requestContext.get(Message.ENDPOINT_ADDRESS);
- assertNotNull("address should not be null", address);
- assertEquals("address should get from requestContext", address, ADDRESS + "jaxws");
- message.putAll(requestContext);
- address = message.get(Message.ENDPOINT_ADDRESS);
- assertNotNull("address should not be null", address);
- assertEquals("address should get from requestContext", address, ADDRESS + "jaxws");
- Object header = message.get(Message.PROTOCOL_HEADERS);
- assertEquals("the message PROTOCOL_HEADERS should be updated", header, HEADER + "jaxws");
- }
-
- @Test
- public void testMapResponseCxf2Jaxws() {
- responseContext.putAll(message);
- Object requestMethod = responseContext.get(MessageContext.HTTP_REQUEST_METHOD);
- assertNull("requestMethod should be null", requestMethod);
- ContextPropertiesMapping.mapResponsefromCxf2Jaxws(responseContext);
- requestMethod = responseContext.get(MessageContext.HTTP_REQUEST_METHOD);
- assertNotNull("requestMethod should not be null", requestMethod);
- assertEquals(requestMethod, REQUEST_METHOD);
- Object header = responseContext.get(MessageContext.HTTP_RESPONSE_HEADERS);
- assertNotNull("the HTTP_RESPONSE_HEADERS should not be null ", header);
- assertEquals("the HTTP_RESPONSE_HEADERS should be updated", header, HEADER);
- }
@Test
public void testCreateWebServiceContext() {
@@ -108,7 +76,7 @@
exchange.setInMessage(inMessage);
exchange.setOutMessage(outMessage);
- MessageContext ctx = ContextPropertiesMapping.createWebServiceContext(exchange);
+ MessageContext ctx = new WrappedMessageContext(exchange.getInMessage(), Scope.APPLICATION);
Object requestHeader = ctx.get(MessageContext.HTTP_REQUEST_HEADERS);
assertNotNull("the request header should not be null", requestHeader);
@@ -125,42 +93,6 @@
}
@Test
- public void testUpdateWebServiceContext() {
- Exchange xchng = new ExchangeImpl();
- Message outMsg = new MessageImpl();
- List<Header> hdrList = new ArrayList<Header>();
- xchng.setOutMessage(outMsg);
-
- responseContext.put(MessageContext.HTTP_RESPONSE_CODE, RESPONSE_CODE);
-
- MessageContext ctx = EasyMock.createMock(MessageContext.class);
- ctx.containsKey(MessageContext.HTTP_RESPONSE_CODE);
- EasyMock.expectLastCall().andReturn(true);
- ctx.get(MessageContext.HTTP_RESPONSE_CODE);
- EasyMock.expectLastCall().andReturn(RESPONSE_CODE);
-
- ctx.containsKey(Header.HEADER_LIST);
- EasyMock.expectLastCall().andReturn(true);
- ctx.get(Header.HEADER_LIST);
- EasyMock.expectLastCall().andReturn(hdrList);
- ctx.get(Header.HEADER_LIST);
- EasyMock.expectLastCall().andReturn(hdrList);
-
- ctx.containsKey(MessageContext.HTTP_RESPONSE_HEADERS);
- EasyMock.expectLastCall().andReturn(false);
-
- ctx.get(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
- EasyMock.expectLastCall().andReturn(null);
-
- EasyMock.replay(ctx);
-
- ContextPropertiesMapping.updateWebServiceContext(xchng, ctx);
- Integer respCode = (Integer)outMsg.get(Message.RESPONSE_CODE);
- assertNotNull("no response code set on out message", respCode);
- assertEquals("incorrect response code returned", RESPONSE_CODE, respCode);
- }
-
- @Test
@SuppressWarnings("unchecked")
public void testCreateWebServiceContextWithInAttachments() {
Exchange exchange = new ExchangeImpl();
@@ -180,7 +112,7 @@
exchange.setInMessage(inMessage);
exchange.setOutMessage(new MessageImpl());
- MessageContext ctx = ContextPropertiesMapping.createWebServiceContext(exchange);
+ MessageContext ctx = new WrappedMessageContext(exchange.getInMessage(), Scope.APPLICATION);
Object inAttachments = ctx.get(MessageContext.INBOUND_MESSAGE_ATTACHMENTS);
assertNotNull("inbound attachments object must be initialized", inAttachments);