Author: timfox
Date: 2010-04-29 10:06:37 -0400 (Thu, 29 Apr 2010)
New Revision: 9184
Modified:
trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java
trunk/tests/src/org/hornetq/tests/integration/jms/bridge/JMSBridgeTest.java
Log:
https://jira.jboss.org/jira/browse/HORNETQ-377
Modified: trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java
===================================================================
--- trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java 2010-04-28 23:13:26 UTC
(rev 9183)
+++ trunk/src/main/org/hornetq/jms/bridge/impl/JMSBridgeImpl.java 2010-04-29 14:06:37 UTC
(rev 9184)
@@ -52,6 +52,7 @@
import org.hornetq.jms.bridge.JMSBridge;
import org.hornetq.jms.bridge.JMSBridgeControl;
import org.hornetq.jms.bridge.QualityOfServiceMode;
+import org.hornetq.jms.client.HornetQMessage;
import org.hornetq.jms.client.HornetQSession;
/**
@@ -110,7 +111,7 @@
private volatile boolean addMessageIDInHeader;
private boolean started;
-
+
private boolean stopping = false;
private final LinkedList<Message> messages;
@@ -142,7 +143,7 @@
private BatchTimeChecker timeChecker;
private ExecutorService executor;
-
+
private long batchExpiryTime;
private boolean paused;
@@ -310,7 +311,7 @@
public synchronized void start() throws Exception
{
stopping = false;
-
+
if (started)
{
JMSBridgeImpl.log.warn("Attempt to start, but is already started");
@@ -327,7 +328,7 @@
{
executor = createExecutor();
}
-
+
checkParams();
TransactionManager tm = getTm();
@@ -395,7 +396,7 @@
public synchronized void stop() throws Exception
{
stopping = true;
-
+
if (JMSBridgeImpl.trace)
{
JMSBridgeImpl.log.trace("Stopping " + this);
@@ -409,8 +410,8 @@
}
boolean ok = executor.awaitTermination(60, TimeUnit.SECONDS);
-
- if(!ok)
+
+ if (!ok)
{
throw new Exception("fail to stop JMS Bridge");
}
@@ -1235,7 +1236,7 @@
{
log.trace("Failed to connect bridge", e);
}
-
+
cleanup();
return false;
@@ -1665,7 +1666,17 @@
String propName = (String)entry.getKey();
- msg.setObjectProperty(propName, entry.getValue());
+ Object val = entry.getValue();
+
+ if (val instanceof byte[] == false)
+ {
+ //Can't set byte[] array props through the JMS API - if we're
bridging a HornetQ message it might have such props
+ msg.setObjectProperty(propName, entry.getValue());
+ }
+ else if (msg instanceof HornetQMessage)
+ {
+ ((HornetQMessage)msg).getCoreMessage().putBytesProperty(propName,
(byte[])val);
+ }
}
}
}
Modified: trunk/tests/src/org/hornetq/tests/integration/jms/bridge/JMSBridgeTest.java
===================================================================
--- trunk/tests/src/org/hornetq/tests/integration/jms/bridge/JMSBridgeTest.java 2010-04-28
23:13:26 UTC (rev 9183)
+++ trunk/tests/src/org/hornetq/tests/integration/jms/bridge/JMSBridgeTest.java 2010-04-29
14:06:37 UTC (rev 9184)
@@ -35,6 +35,7 @@
import org.hornetq.core.logging.Logger;
import org.hornetq.jms.bridge.QualityOfServiceMode;
import org.hornetq.jms.bridge.impl.JMSBridgeImpl;
+import org.hornetq.jms.client.HornetQMessage;
/**
* A JMSBridgeTest
@@ -1005,10 +1006,20 @@
{
TextMessage tm = sessSource.createTextMessage("message" + i);
- // We add some headers to make sure they get passed through ok
+ // We add some properties to make sure they get passed through ok
tm.setStringProperty("wib", "uhuh");
tm.setBooleanProperty("cheese", true);
tm.setIntProperty("Sausages", 23);
+ tm.setByteProperty("bacon", (byte)12);
+ tm.setDoubleProperty("toast", 17261762.12121d);
+ tm.setFloatProperty("orange", 1212.1212f);
+ tm.setLongProperty("blurg", 817217827l);
+ tm.setShortProperty("stst", (short)26363);
+
+ //Set some JMS headers too
+
+ //And also set a core props
+ ((HornetQMessage)tm).getCoreMessage().putBytesProperty("bytes", new
byte[] { 1, 2, 3});
// We add some JMSX ones too
@@ -1040,6 +1051,13 @@
Assert.assertEquals("uhuh",
tm.getStringProperty("wib"));
Assert.assertTrue(tm.getBooleanProperty("cheese"));
Assert.assertEquals(23, tm.getIntProperty("Sausages"));
+ assertEquals((byte)12, tm.getByteProperty("bacon"));
+ assertEquals(17261762.12121d, tm.getDoubleProperty("toast"));
+ assertEquals(1212.1212f, tm.getFloatProperty("orange"));
+ assertEquals(817217827l, tm.getLongProperty("blurg"));
+ assertEquals((short)26363, tm.getShortProperty("stst"));
+
+ assertEqualsByteArrays(new byte[] { 1,2, 3},
((HornetQMessage)tm).getCoreMessage().getBytesProperty("bytes"));
Assert.assertEquals("mygroup543",
tm.getStringProperty("JMSXGroupID"));
@@ -1085,6 +1103,13 @@
Assert.assertEquals("uhuh",
tm.getStringProperty("wib"));
Assert.assertTrue(tm.getBooleanProperty("cheese"));
Assert.assertEquals(23, tm.getIntProperty("Sausages"));
+ assertEquals((byte)12, tm.getByteProperty("bacon"));
+ assertEquals(17261762.12121d, tm.getDoubleProperty("toast"));
+ assertEquals(1212.1212f, tm.getFloatProperty("orange"));
+ assertEquals(817217827l, tm.getLongProperty("blurg"));
+ assertEquals((short)26363, tm.getShortProperty("stst"));
+
+ assertEqualsByteArrays(new byte[] { 1,2, 3},
((HornetQMessage)tm).getCoreMessage().getBytesProperty("bytes"));
Assert.assertEquals("mygroup543",
tm.getStringProperty("JMSXGroupID"));
@@ -1994,6 +2019,8 @@
{
return newTransactionManager();
}
+
+
// Inner classes -------------------------------------------------------------------