Author: chirino
Date: Tue Jan 30 10:17:09 2007
New Revision: 501500

URL: http://svn.apache.org/viewvc?view=rev&rev=501500
Log:
Fix for https://issues.apache.org/activemq/browse/AMQ-1140

We need to make sure that the connection is set on the message so that it knows 
what compression options to apply


Added:
    
incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
Modified:
    
incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java

Modified: 
incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java?view=diff&rev=501500&r1=501499&r2=501500
==============================================================================
--- 
incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
 (original)
+++ 
incubator/activemq/branches/activemq-4.1/activemq-core/src/main/java/org/apache/activemq/ActiveMQSession.java
 Tue Jan 30 10:17:09 2007
@@ -1535,7 +1535,8 @@
 
         if ( connection.isCopyMessageOnSend() ){
             msg = (ActiveMQMessage) msg.copy();
-        }        
+        }
+        msg.setConnection(connection);
         msg.onSend();
         msg.setProducerId(msg.getMessageId().getProducerId());
 

Added: 
incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java?view=auto&rev=501500
==============================================================================
--- 
incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
 (added)
+++ 
incubator/activemq/branches/activemq-4.1/activemq-core/src/test/java/org/apache/activemq/command/MessageCompressionTest.java
 Tue Jan 30 10:17:09 2007
@@ -0,0 +1,123 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.command;
+
+import java.net.URI;
+
+import javax.jms.JMSException;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+
+import junit.framework.TestCase;
+
+import org.apache.activemq.ActiveMQConnection;
+import org.apache.activemq.ActiveMQConnectionFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.TransportConnector;
+
+public class MessageCompressionTest extends TestCase {
+       
+       protected BrokerService broker;
+       private ActiveMQQueue queue;
+    private static final String BROKER_URL = "tcp://localhost:61216";
+
+    // The following text should compress well
+    private static final String TEXT = 
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. " +
+        "The quick red fox jumped over the lazy brown dog. ";
+    
+       protected void setUp() throws Exception {
+               broker = new BrokerService();
+               
+               TransportConnector tc = new TransportConnector();
+        tc.setUri(new URI(BROKER_URL));
+        tc.setName("tcp");
+
+        queue = new ActiveMQQueue("TEST."+System.currentTimeMillis());
+        
+        broker.addConnector(tc);
+        broker.start();
+
+       }
+       
+    protected void tearDown() throws Exception {
+        if (broker != null) {
+            broker.stop();
+        }
+    }
+       
+       public void testTextMessageCompression() throws Exception {
+               
+        ActiveMQConnectionFactory factory = new 
ActiveMQConnectionFactory(BROKER_URL);
+        factory.setUseCompression(true);
+       sendTestMessage(factory, TEXT);
+       ActiveMQTextMessage message = receiveTestMessage(factory);
+       int compressedSize = message.getContent().getLength();
+       
+        factory = new ActiveMQConnectionFactory(BROKER_URL);
+        factory.setUseCompression(false);
+       sendTestMessage(factory, TEXT);
+       message = receiveTestMessage(factory);
+       int unCompressedSize = message.getContent().getLength();
+
+       assertTrue("expected: compressed Size '"+compressedSize+"' < 
unCompressedSize '"+unCompressedSize+"'", compressedSize < unCompressedSize);
+    }
+
+       private void sendTestMessage(ActiveMQConnectionFactory factory, String 
message) throws JMSException {
+               ActiveMQConnection connection = (ActiveMQConnection) 
factory.createConnection();
+       Session session = connection.createSession(false, 0);
+               MessageProducer producer = session.createProducer(queue);
+               producer.send(session.createTextMessage(message));
+               connection.close();
+       }
+       
+       private ActiveMQTextMessage 
receiveTestMessage(ActiveMQConnectionFactory factory) throws JMSException {
+               ActiveMQConnection connection = (ActiveMQConnection) 
factory.createConnection();
+               connection.start();
+       Session session = connection.createSession(false, 0);
+               MessageConsumer consumer = session.createConsumer(queue);
+               ActiveMQTextMessage rc = (ActiveMQTextMessage) 
consumer.receive();
+               connection.close();
+               return rc;
+       }
+       
+       
+//     public void testJavaUtilZip() throws Exception {
+//             String str = "When the going gets weird, the weird turn pro.";
+//             byte[] bytes = str.getBytes();
+//             
+//             ByteArrayOutputStream baos = new 
ByteArrayOutputStream(bytes.length);
+//             DeflaterOutputStream dos = new DeflaterOutputStream(baos);
+//             dos.
+//     }
+}
\ No newline at end of file


Reply via email to