You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ni...@apache.org on 2012/11/07 05:20:24 UTC
svn commit: r1406451 - in
/servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src:
main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java
test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java
Author: ningjiang
Date: Wed Nov 7 04:20:24 2012
New Revision: 1406451
URL: http://svn.apache.org/viewvc?rev=1406451&view=rev
Log:
SMX4-1273 cxf-nmr trasport should copy the message header which value is String as the Protocol Header
Modified:
servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java
servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java
Modified: servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java?rev=1406451&r1=1406450&r2=1406451&view=diff
==============================================================================
--- servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java (original)
+++ servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/main/java/org/apache/servicemix/cxf/transport/nmr/NMRDestination.java Wed Nov 7 04:20:24 2012
@@ -25,7 +25,9 @@ import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.TreeMap;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -144,11 +146,19 @@ public class NMRDestination extends Abst
}
inMessage.setAttachments(cxfAttachmentList);
- //copy properties
+ //copy properties and setup the cxf protocol header
+ Map<String, List<String>> protocolHeaders = new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER);
+ inMessage.put(Message.PROTOCOL_HEADERS, protocolHeaders);
+
for (Map.Entry<String, Object> ent : nm.getHeaders().entrySet()) {
if (!ent.getKey().equals(Message.REQUESTOR_ROLE)) {
inMessage.put(ent.getKey(), ent.getValue());
}
+ if (ent.getValue() instanceof String) {
+ List<String> value = new ArrayList<String>();
+ value.add((String)ent.getValue());
+ protocolHeaders.put(ent.getKey(), value);
+ }
}
//copy securitySubject
Modified: servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java?rev=1406451&r1=1406450&r2=1406451&view=diff
==============================================================================
--- servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java (original)
+++ servicemix/smx4/features/trunk/cxf/cxf-transport-nmr/src/test/java/org/apache/servicemix/cxf/transport/nmr/NMRDestinationTest.java Wed Nov 7 04:20:24 2012
@@ -22,6 +22,8 @@ package org.apache.servicemix.cxf.transp
import java.io.ByteArrayInputStream;
import java.security.AccessController;
import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.logging.Logger;
import javax.security.auth.Subject;
@@ -129,7 +131,9 @@ public class NMRDestinationTest extends
EasyMock.expect(xchg.getStatus()).andReturn(Status.Active);
EasyMock.expect(xchg.getIn()).andReturn(inMsg);
EasyMock.expect(inMsg.getAttachments()).andReturn(new HashMap<String, Object>());
- EasyMock.expect(inMsg.getHeaders()).andReturn(new HashMap<String, Object>());
+ Map<String, Object> nmrHeaders = new HashMap<String, Object>();
+ nmrHeaders.put("hello", "world");
+ EasyMock.expect(inMsg.getHeaders()).andReturn(nmrHeaders);
Source source = new StreamSource(new ByteArrayInputStream(
"<message>TestHelloWorld</message>".getBytes()));
EasyMock.expect(inMsg.getBody(Source.class)).andReturn(source);
@@ -145,6 +149,9 @@ public class NMRDestinationTest extends
destination.setMessageObserver(observer);
destination.process(xchg);
assertNotNull(inMessage);
+ @SuppressWarnings("unchecked")
+ Map<String, List<String>> protocolHeaders = (Map<String, List<String>>)inMessage.get(Message.PROTOCOL_HEADERS);
+ assertEquals("We should get a right protocol headers", "world", protocolHeaders.get("hello").get(0));
}
@Test