Return-Path: X-Original-To: apmail-activemq-commits-archive@www.apache.org Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1E88C9FD8 for ; Tue, 19 Jun 2012 15:32:55 +0000 (UTC) Received: (qmail 36142 invoked by uid 500); 19 Jun 2012 15:32:55 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 36063 invoked by uid 500); 19 Jun 2012 15:32:54 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 36051 invoked by uid 99); 19 Jun 2012 15:32:54 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jun 2012 15:32:54 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Jun 2012 15:32:53 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 5088B2388D61 for ; Tue, 19 Jun 2012 15:32:33 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1351743 - in /activemq/trunk/activemq-core/src: main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java Date: Tue, 19 Jun 2012 15:32:33 -0000 To: commits@activemq.apache.org From: tabish@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120619153233.5088B2388D61@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: tabish Date: Tue Jun 19 15:32:32 2012 New Revision: 1351743 URL: http://svn.apache.org/viewvc?rev=1351743&view=rev Log: apply fix for: https://issues.apache.org/jira/browse/AMQ-3889 Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java activemq/trunk/activemq-core/src/test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java Modified: activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java?rev=1351743&r1=1351742&r2=1351743&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java (original) +++ activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/jmx/OpenTypeSupport.java Tue Jun 19 15:32:32 2012 @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; + import javax.jms.DeliveryMode; import javax.jms.JMSException; import javax.management.openmbean.ArrayType; @@ -284,6 +285,7 @@ public final class OpenTypeSupport { try { byte preview[] = new byte[(int)Math.min(length, 255)]; m.readBytes(preview); + m.reset(); // This is whack! Java 1.5 JMX spec does not support primitive // arrays! @@ -389,7 +391,7 @@ public final class OpenTypeSupport { return rc; } } - + static class JobOpenTypeFactory extends AbstractOpenTypeFactory { @@ -490,7 +492,7 @@ public final class OpenTypeSupport { private OpenTypeSupport() { } - + public static OpenTypeFactory getFactory(Class clazz) throws OpenDataException { return OPEN_TYPE_FACTORIES.get(clazz); } Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java?rev=1351743&r1=1351742&r2=1351743&view=diff ============================================================================== --- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java (original) +++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/jmx/OpenTypeSupportTest.java Tue Jun 19 15:32:32 2012 @@ -16,14 +16,81 @@ */ package org.apache.activemq.jmx; +import static org.junit.Assert.assertEquals; + +import javax.jms.BytesMessage; +import javax.jms.Connection; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.management.MalformedObjectNameException; +import javax.management.ObjectName; +import javax.management.openmbean.CompositeData; + +import org.apache.activemq.ActiveMQConnectionFactory; +import org.apache.activemq.broker.BrokerService; +import org.apache.activemq.broker.jmx.CompositeDataConstants; import org.apache.activemq.broker.jmx.OpenTypeSupport; +import org.apache.activemq.broker.jmx.QueueViewMBean; import org.apache.activemq.command.ActiveMQBytesMessage; +import org.apache.activemq.command.ActiveMQQueue; +import org.junit.After; +import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class OpenTypeSupportTest { private static final Logger LOG = LoggerFactory.getLogger(OpenTypeSupportTest.class); + + private static BrokerService brokerService; + private static String TESTQUEUE = "testQueue"; + private static ActiveMQConnectionFactory connectionFactory; + private static String BYTESMESSAGE_TEXT = "This is a short text"; + private static String BROKER_ADDRESS = "tcp://localhost:0"; + private static ActiveMQQueue queue = new ActiveMQQueue(TESTQUEUE); + + private String connectionUri; + + @Before + public void setUp() throws Exception { + brokerService = new BrokerService(); + brokerService.setPersistent(false); + brokerService.setUseJmx(true); + connectionUri = brokerService.addConnector(BROKER_ADDRESS).getPublishableConnectString(); + brokerService.start(); + connectionFactory = new ActiveMQConnectionFactory(connectionUri); + sendMessage(); + } + + @After + public void tearDown() throws Exception { + brokerService.stop(); + brokerService.waitUntilStopped(); + } + + private static void sendMessage() throws JMSException { + Connection conn = connectionFactory.createConnection(); + try { + conn.start(); + Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + Destination queue = session.createQueue(TESTQUEUE); + BytesMessage toSend = session.createBytesMessage(); + toSend.writeBytes(BYTESMESSAGE_TEXT.getBytes()); + MessageProducer producer = session.createProducer(queue); + producer.send(queue, toSend); + } finally { + conn.close(); + } + } + + @Test + public void bytesMessagePreview() throws Exception { + QueueViewMBean queue = getProxyToQueueViewMBean(); + assertEquals(extractText(queue.browse()[0]), extractText(queue.browse()[0])); + } + @Test public void testBrowseByteMessageFails() throws Exception { ActiveMQBytesMessage bm = new ActiveMQBytesMessage(); @@ -31,4 +98,22 @@ public class OpenTypeSupportTest { Object result = OpenTypeSupport.convert(bm); LOG.info("result : " + result); } + + private String extractText(CompositeData message) { + Byte content[] = (Byte[]) message.get(CompositeDataConstants.BODY_PREVIEW); + byte out[] = new byte[content.length]; + for (int i = 0; i < content.length; i++) { + out[i] = content[i]; + } + return new String(out); + } + + private QueueViewMBean getProxyToQueueViewMBean() throws MalformedObjectNameException, JMSException { + ObjectName queueViewMBeanName = new ObjectName( + "org.apache.activemq" + ":Type=Queue,Destination=" + + queue.getQueueName() + ",BrokerName=localhost"); + QueueViewMBean proxy = (QueueViewMBean) + brokerService.getManagementContext().newProxyInstance(queueViewMBeanName, QueueViewMBean.class, true); + return proxy; + } }