Quantcast

cxf git commit: CXF-7378 http conduit can return the http url connection response header if configured to do so

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

cxf git commit: CXF-7378 http conduit can return the http url connection response header if configured to do so

jpell
Repository: cxf
Updated Branches:
  refs/heads/master 047f9f291 -> a61b4b82b


CXF-7378 http conduit can return the http url connection response header if configured to do so


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/a61b4b82
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/a61b4b82
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/a61b4b82

Branch: refs/heads/master
Commit: a61b4b82bea43ce695c4f51eb7cb3e9866dfae9d
Parents: 047f9f2
Author: Jason Pell <[hidden email]>
Authored: Sat May 20 11:17:59 2017 +1000
Committer: Jason Pell <[hidden email]>
Committed: Sat May 20 11:17:59 2017 +1000

----------------------------------------------------------------------
 .../apache/cxf/transport/http/HTTPConduit.java  | 14 +++++--
 .../http/HTTPConduitURLEasyMockTest.java        | 43 +++++++++++++-------
 2 files changed, 40 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/a61b4b82/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
----------------------------------------------------------------------
diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
index c809c2e..48c48dc 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HTTPConduit.java
@@ -157,7 +157,12 @@ public abstract class HTTPConduit
      */
     public static final String KEY_HTTP_CONNECTION = "http.connection";
     public static final String KEY_HTTP_CONNECTION_ADDRESS = "http.connection.address";
-
+    
+    public static final String SET_HTTP_RESPONSE_MESSAGE = "org.apache.cxf.transport.http.set.response.message";
+    public static final String HTTP_RESPONSE_MESSAGE = "http.responseMessage";
+    
+    public static final String PROCESS_FAULT_ON_HTTP_400 = "org.apache.cxf.transport.process_fault_on_http_400";
+    public static final String NO_IO_EXCEPTIONS = "org.apache.cxf.transport.no_io_exceptions";
     /**
      * The Logger for this class.
      */
@@ -1601,9 +1606,9 @@ public abstract class HTTPConduit
             // soap fault because of a HTTP 400 should be returned back to the client (SOAP 1.2 spec)
 
             if (rc >= 400 && rc != 500
-                && !MessageUtils.isTrue(outMessage.getContextualProperty("org.apache.cxf.transport.no_io_exceptions"))
+                && !MessageUtils.isTrue(outMessage.getContextualProperty(NO_IO_EXCEPTIONS))
                 && (rc > 400 || !MessageUtils.isTrue(outMessage
-                    .getContextualProperty("org.apache.cxf.transport.process_fault_on_http_400")))) {
+                    .getContextualProperty(PROCESS_FAULT_ON_HTTP_400)))) {
 
                 throw new HTTPException(rc, getResponseMessage(), url.toURL());
             }
@@ -1621,6 +1626,9 @@ public abstract class HTTPConduit
             inMessage.setExchange(exchange);
             updateResponseHeaders(inMessage);
             inMessage.put(Message.RESPONSE_CODE, responseCode);
+            if (MessageUtils.getContextualBoolean(outMessage, SET_HTTP_RESPONSE_MESSAGE, false)) {
+             inMessage.put(HTTP_RESPONSE_MESSAGE, getResponseMessage());
+            }
             propagateConduit(exchange, inMessage);
 
             if (!doProcessResponse(outMessage, responseCode)

http://git-wip-us.apache.org/repos/asf/cxf/blob/a61b4b82/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
----------------------------------------------------------------------
diff --git a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
index 476c6df..dae7a58 100644
--- a/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
+++ b/rt/transports/http/src/test/java/org/apache/cxf/transport/http/HTTPConduitURLEasyMockTest.java
@@ -62,6 +62,8 @@ import org.junit.Test;
 public class HTTPConduitURLEasyMockTest extends Assert {
     private static String oldHttpProxyHost;
 
+    private static final String HTTP_RESPONSE_MESSAGE = "Some Response Message I can test";
+    
     private enum ResponseStyle { NONE, BACK_CHANNEL, BACK_CHANNEL_ERROR, DECOUPLED, ONEWAY_NONE };
     private enum ResponseDelimiter { LENGTH, CHUNKED, EOF };
 
@@ -138,21 +140,25 @@ public class HTTPConduitURLEasyMockTest extends Assert {
     @Test
     public void testSend() throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.FALSE);
         conduit.prepare(message);
         verifySentMessage(conduit, message, "POST");
+        assertNull(inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         finalVerify();
     }
 
     @Test
     public void testSendWithHeaders() throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         setUpHeaders(message);
         conduit.prepare(message);
         verifySentMessage(conduit, message, true, "POST", false);
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         finalVerify();
     }
 
@@ -165,32 +171,38 @@ public class HTTPConduitURLEasyMockTest extends Assert {
 
     public void testSendWithHeadersCheckErrorStream() throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = new MessageImpl();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         message.put("Content-Type", "text/xml;charset=utf8");
         setUpHeaders(message);
         conduit.prepare(message);
         verifySentMessage(conduit, message, true, "POST", true);
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         finalVerify();
     }
 
     @Test
     public void testSendHttpConnection() throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         conduit.prepare(message);
         verifySentMessage(conduit, message, "POST");
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         finalVerify();
     }
 
     @Test
     public void testSendHttpConnectionAutoRedirect() throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, true);
+        HTTPConduit conduit = setUpConduit(true, true, "POST");
         Message message = createMessage();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         conduit.prepare(message);
         verifySentMessage(conduit, message, "POST");
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         finalVerify();
     }
 
@@ -199,9 +211,11 @@ public class HTTPConduitURLEasyMockTest extends Assert {
         control = EasyMock.createNiceControl();
         HTTPConduit conduit = setUpConduit(true, true, "GET");
         Message message = new MessageImpl();
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         message.put(Message.HTTP_REQUEST_METHOD, "GET");
         conduit.prepare(message);
         verifySentMessage(conduit, message, "GET");
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         conduit.close(message);
         finalVerify();
     }
@@ -212,8 +226,10 @@ public class HTTPConduitURLEasyMockTest extends Assert {
         HTTPConduit conduit = setUpConduit(true, false, "GET");
         Message message = new MessageImpl();
         message.put(Message.HTTP_REQUEST_METHOD, "GET");
+        message.put(HTTPConduit.SET_HTTP_RESPONSE_MESSAGE, Boolean.TRUE);
         conduit.prepare(message);
         verifySentMessage(conduit, message, "GET");
+        assertEquals(HTTP_RESPONSE_MESSAGE, inMessage.get(HTTPConduit.HTTP_RESPONSE_MESSAGE));
         conduit.close(message);
         finalVerify();
     }
@@ -222,7 +238,7 @@ public class HTTPConduitURLEasyMockTest extends Assert {
     public void testSendOnewayChunkedEmptyPartialResponseProcessResponse()
         throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
         conduit.prepare(message);
         message.put(Message.PROCESS_ONEWAY_RESPONSE, Boolean.TRUE);
@@ -239,7 +255,7 @@ public class HTTPConduitURLEasyMockTest extends Assert {
     public void testSendOnewayDoNotProcessResponse()
         throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
         conduit.prepare(message);
         verifySentMessage(conduit,
@@ -255,7 +271,7 @@ public class HTTPConduitURLEasyMockTest extends Assert {
     public void testSendTwowayDecoupledEmptyPartialResponse()
         throws Exception {
         control = EasyMock.createNiceControl();
-        HTTPConduit conduit = setUpConduit(true, false);
+        HTTPConduit conduit = setUpConduit(true, false, "POST");
         Message message = createMessage();
         conduit.prepare(message);
         verifySentMessage(conduit,
@@ -297,15 +313,10 @@ public class HTTPConduitURLEasyMockTest extends Assert {
         EasyMock.expectLastCall().andReturn(true).anyTimes();
     }
 
-    private HTTPConduit setUpConduit(boolean send, boolean autoRedirect) throws Exception {
-        return setUpConduit(send, autoRedirect, "POST");
-    }
-
     private HTTPConduit setUpConduit(
         boolean send,
         boolean autoRedirect,
-        String method
-    ) throws Exception {
+        String method) throws Exception {
         endpointInfo = new EndpointInfo();
         endpointInfo.setAddress(NOWHERE + "bar/foo");
         connectionFactory =
@@ -540,6 +551,10 @@ public class HTTPConduitURLEasyMockTest extends Assert {
                                       HTTPConduit conduit) throws IOException {
         connection.getHeaderFields();
         EasyMock.expectLastCall().andReturn(Collections.EMPTY_MAP).anyTimes();
+        
+     connection.getResponseMessage();
+     EasyMock.expectLastCall().andReturn(HTTP_RESPONSE_MESSAGE).anyTimes();
+        
         int responseCode = getResponseCode(style);
         if (conduit.getClient().isAutoRedirect()) {
             connection.getResponseCode();

Loading...