You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2007/02/05 18:16:08 UTC

svn commit: r503780 - in /incubator/cxf/trunk: rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/ rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/ systests/src/test/java/org/apache/cxf/systest/jms/

Author: eglynn
Date: Mon Feb  5 09:16:07 2007
New Revision: 503780

URL: http://svn.apache.org/viewvc?view=rev&rev=503780
Log:
Applying patch for CXF-393 on behalf of Gary Tully.

Modified:
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConstants.java
    incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
    incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/GreeterImplTwoWayJMS.java
    incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConstants.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConstants.java?view=diff&rev=503780&r1=503779&r2=503780
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConstants.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConstants.java Mon Feb  5 09:16:07 2007
@@ -28,7 +28,8 @@
     public static final String BINARY_MESSAGE_TYPE = "binary";
 
     public static final String JMS_POOLEDSESSION = "jms.pooled.session";   
-    public static final String JMS_SERVER_HEADERS = "org.apache.cxf.jms.server.headers";
+    public static final String JMS_SERVER_REQUEST_HEADERS = "org.apache.cxf.jms.server.request.headers";
+    public static final String JMS_SERVER_RESPONSE_HEADERS = "org.apache.cxf.jms.server.response.headers";
     public static final String JMS_REQUEST_MESSAGE = "org.apache.cxf.jms.request.message";
     public static final String JMS_RESPONSE_MESSAGE = "org.apache.cxf.jms.reponse.message";
     public static final String JMS_CLIENT_REQUEST_HEADERS = "org.apache.cxf.jms.client.request.headers";

Modified: incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java?view=diff&rev=503780&r1=503779&r2=503780
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSDestination.java Mon Feb  5 09:16:07 2007
@@ -189,9 +189,8 @@
             // get the message to be interceptor
             MessageImpl inMessage = new MessageImpl();
             inMessage.setContent(InputStream.class, new ByteArrayInputStream(bytes));
-            JMSMessageHeadersType headers = 
-                base.populateIncomingContext(message, inMessage, JMSConstants.JMS_SERVER_HEADERS);
-            inMessage.put(JMSConstants.JMS_SERVER_HEADERS, headers);
+            base.populateIncomingContext(message, inMessage, JMSConstants.JMS_SERVER_REQUEST_HEADERS);
+            inMessage.put(JMSConstants.JMS_SERVER_RESPONSE_HEADERS, new JMSMessageHeadersType());
             inMessage.put(JMSConstants.JMS_REQUEST_MESSAGE, message);
                         
             inMessage.setDestination(this);            
@@ -361,7 +360,7 @@
         private void commitOutputMessage() throws IOException {
             
             JMSMessageHeadersType headers =
-                (JMSMessageHeadersType) inMessage.get(JMSConstants.JMS_SERVER_HEADERS);
+                (JMSMessageHeadersType) inMessage.get(JMSConstants.JMS_SERVER_RESPONSE_HEADERS);
             javax.jms.Message request = 
                 (javax.jms.Message) inMessage.get(JMSConstants.JMS_REQUEST_MESSAGE);              
             
@@ -433,7 +432,7 @@
 
         private void sendResponse() throws JMSException {
             JMSMessageHeadersType headers =
-                (JMSMessageHeadersType) inMessage.get(JMSConstants.JMS_SERVER_HEADERS);
+                (JMSMessageHeadersType) inMessage.get(JMSConstants.JMS_SERVER_REQUEST_HEADERS);
             javax.jms.Message request = 
                 (javax.jms.Message) inMessage.get(JMSConstants.JMS_REQUEST_MESSAGE);   
             

Modified: incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java?view=diff&rev=503780&r1=503779&r2=503780
==============================================================================
--- incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java (original)
+++ incubator/cxf/trunk/rt/transports/jms/src/test/java/org/apache/cxf/transport/jms/JMSDestinationTest.java Mon Feb  5 09:16:07 2007
@@ -36,6 +36,7 @@
 import org.apache.cxf.transport.ConduitInitiator;
 import org.apache.cxf.transport.MessageObserver;
 import org.apache.cxf.transports.jms.context.JMSMessageHeadersType;
+import org.apache.cxf.transports.jms.context.JMSPropertyType;
 import org.easymock.classextension.EasyMock;
 
 public class JMSDestinationTest extends AbstractJMSTester {
@@ -173,13 +174,29 @@
         assertEquals("The reponse date should be equals", reponse, "HelloWorld");
     }
     
+    private void verifyRequestResponseHeaders(Message inMessage, Message outMessage) {
+        JMSMessageHeadersType outHeader =
+            (JMSMessageHeadersType)outMessage.get(JMSConstants.JMS_CLIENT_REQUEST_HEADERS);
+        
+        JMSMessageHeadersType inHeader =
+            (JMSMessageHeadersType)inMessage.get(JMSConstants.JMS_CLIENT_RESPONSE_HEADERS); 
+               
+        verifyJmsHeaderEquality(outHeader, inHeader);
+        
+    }
+    
     private void verifyHeaders(Message inMessage, Message outMessage) {
         JMSMessageHeadersType outHeader =
             (JMSMessageHeadersType)outMessage.get(JMSConstants.JMS_CLIENT_REQUEST_HEADERS);
         
         JMSMessageHeadersType inHeader =
-            (JMSMessageHeadersType)inMessage.get(JMSConstants.JMS_SERVER_HEADERS); 
+            (JMSMessageHeadersType)inMessage.get(JMSConstants.JMS_SERVER_REQUEST_HEADERS); 
                
+        verifyJmsHeaderEquality(outHeader, inHeader);
+        
+    }
+
+    private void verifyJmsHeaderEquality(JMSMessageHeadersType outHeader, JMSMessageHeadersType inHeader) {
         assertEquals("The inMessage and outMessage JMS Header's CorrelationID should be equals", 
                      outHeader.getJMSCorrelationID(), inHeader.getJMSCorrelationID());
         assertEquals("The inMessage and outMessage JMS Header's JMSPriority should be equals", 
@@ -237,4 +254,71 @@
     }
     
 
+    public void testPropertyExclusion() throws Exception {
+        
+        final String customPropertyName = 
+            "THIS_PROPERTY_WILL_NOT_BE_AUTO_COPIED";
+
+        inMessage = null;
+        setupServiceInfo("http://cxf.apache.org/hello_world_jms", 
+                         "/wsdl/jms_test.wsdl", 
+                         "HelloWorldService", 
+                         "HelloWorldPort");
+        //set up the conduit send to be true 
+        JMSConduit conduit = setupJMSConduit(true, false);
+        final Message outMessage = new MessageImpl();
+        setupMessageHeader(outMessage);
+        
+        JMSPropertyType excludeProp = new JMSPropertyType();
+        excludeProp.setName(customPropertyName);
+        excludeProp.setValue(customPropertyName);
+        
+        JMSMessageHeadersType headers = (JMSMessageHeadersType)
+            outMessage.get(JMSConstants.JMS_CLIENT_REQUEST_HEADERS);
+        headers.getProperty().add(excludeProp);
+
+        
+        final JMSDestination destination = setupJMSDestination(true);
+        
+        //set up MessageObserver for handlering the conduit message
+        MessageObserver observer = new MessageObserver() {
+            public void onMessage(Message m) {                    
+                Exchange exchange = new ExchangeImpl();
+                exchange.setInMessage(m);
+                m.setExchange(exchange);
+                verifyReceivedMessage(m);
+                verifyHeaders(m, outMessage);
+                //setup the message for 
+                Conduit backConduit;
+                try {
+                    backConduit = destination.getBackChannel(m, null, null);                 
+                    //wait for the message to be got from the conduit
+                    Message replyMessage = new MessageImpl();
+                    sendoutMessage(backConduit, replyMessage, true);
+                } catch (Exception e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+            }
+        };
+        destination.setMessageObserver(observer);  
+        //set is oneway false for get response from destination
+        sendoutMessage(conduit, outMessage, false);        
+        //wait for the message to be got from the destination, 
+        // create the thread to handler the Destination incomming message
+               
+        waitForReceiveInMessage();
+        verifyReceivedMessage(inMessage);
+        
+        
+        verifyRequestResponseHeaders(inMessage, outMessage);
+        
+        JMSMessageHeadersType inHeader =
+            (JMSMessageHeadersType)inMessage.get(JMSConstants.JMS_CLIENT_RESPONSE_HEADERS);
+        assertTrue("property has been excluded", inHeader.getProperty().isEmpty());
+
+        // wait for a while for the jms session recycling
+        Thread.sleep(1000);
+        destination.shutdown();
+    }
 }

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/GreeterImplTwoWayJMS.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/GreeterImplTwoWayJMS.java?view=diff&rev=503780&r1=503779&r2=503780
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/GreeterImplTwoWayJMS.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/GreeterImplTwoWayJMS.java Mon Feb  5 09:16:07 2007
@@ -31,6 +31,7 @@
 import org.apache.cxf.hello_world_jms.types.TestRpcLitFaultResponse;
 import org.apache.cxf.transport.jms.JMSConstants;
 import org.apache.cxf.transports.jms.context.JMSMessageHeadersType;
+import org.apache.cxf.transports.jms.context.JMSPropertyType;
 
 
 
@@ -44,9 +45,22 @@
     public String greetMe(String me) {
         MessageContext mc = wsContext.getMessageContext();
         JMSMessageHeadersType headers =
-            (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_HEADERS);
+            (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_REQUEST_HEADERS);
         System.out.println("get the message headers JMSCorrelationID" + headers.getJMSCorrelationID());
         System.out.println("Reached here :" + me);
+        
+        // set reply header custom property
+        JMSPropertyType testProperty = new JMSPropertyType();
+        testProperty.setName("Test_Prop");
+        testProperty.setValue("some return value "  + me);
+        
+        System.out.println("found property in request headers at index: " 
+                           + headers.getProperty().indexOf(testProperty));
+        
+        JMSMessageHeadersType responseHeaders =
+            (JMSMessageHeadersType) mc.get(JMSConstants.JMS_SERVER_RESPONSE_HEADERS);
+        responseHeaders.getProperty().add(testProperty);
+        
         return "Hello " + me;
     }
 

Modified: incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java?view=diff&rev=503780&r1=503779&r2=503780
==============================================================================
--- incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java (original)
+++ incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jms/JMSClientServerTest.java Mon Feb  5 09:16:07 2007
@@ -201,6 +201,8 @@
     }
     
     public void testContextPropogation() throws Exception {
+        final String testReturnPropertyName = "Test_Prop";
+        final String testIgnoredPropertyName = "Test_Prop_No_Return";
         serviceName =  new QName("http://cxf.apache.org/hello_world_jms",
                                  "HelloWorldService");
         portName = new QName("http://cxf.apache.org/hello_world_jms", "HelloWorldPort");
@@ -223,9 +225,12 @@
                 requestHeader.setJMSCorrelationID("JMS_SAMPLE_CORRELATION_ID");
                 requestHeader.setJMSExpiration(3600000L);
                 JMSPropertyType propType = new JMSPropertyType();
-                propType.setName("Test.Prop");
+                propType.setName(testReturnPropertyName);
                 propType.setValue("mustReturn");
                 requestHeader.getProperty().add(propType);
+                propType = new JMSPropertyType();
+                propType.setName(testIgnoredPropertyName);
+                propType.setValue("mustNotReturn");
                 requestContext.put(JMSConstants.JMS_CLIENT_REQUEST_HEADERS, requestHeader);
             } 
  
@@ -244,8 +249,10 @@
                 
                 assertTrue("CORRELATION ID should match :", 
                            "JMS_SAMPLE_CORRELATION_ID".equals(responseHdr.getJMSCorrelationID()));
-                assertTrue("response Headers must conain the app specific property set by request context.", 
+                assertTrue("response Headers must conain the app property set in request context.", 
                            responseHdr.getProperty() != null);
+                assertEquals("response Headers must match the app property set in request context.",
+                             testReturnPropertyName, responseHdr.getProperty().iterator().next().getName());
             }
         } catch (UndeclaredThrowableException ex) {
             throw (Exception)ex.getCause();