blob: f6bb646970d61e63c317a4de709dd61cca075645 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.openwire.jms;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Map;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageFormatException;
import javax.jms.MessageNotWriteableException;
import org.apache.activemq.openwire.codec.OpenWireFormat;
import org.apache.activemq.openwire.commands.CommandTypes;
import org.apache.activemq.openwire.commands.CommandVisitor;
import org.apache.activemq.openwire.commands.OpenWireDestination;
import org.apache.activemq.openwire.commands.OpenWireTopic;
import org.apache.activemq.openwire.commands.Response;
import org.apache.activemq.openwire.jms.OpenWireJMSBytesMessage;
import org.apache.activemq.openwire.jms.OpenWireJMSMessage;
import org.fusesource.hawtbuf.Buffer;
import org.junit.Before;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Tests for the OpenWireJMSMessage wrapper class.
*/
public class OpenWireJMSMessageTest {
private static final Logger LOG = LoggerFactory.getLogger(OpenWireJMSMessageTest.class);
protected boolean readOnlyMessage;
private String jmsMessageID;
private String jmsCorrelationID;
private OpenWireDestination jmsDestination;
private OpenWireDestination jmsReplyTo;
private int jmsDeliveryMode;
private boolean jmsRedelivered;
private String jmsType;
private long jmsExpiration;
private int jmsPriority;
private long jmsTimestamp;
private long[] consumerIDs;
@Before
public void setUp() throws Exception {
this.jmsMessageID = "ID:TEST-ID:0:0:0:1";
this.jmsCorrelationID = "testcorrelationid";
this.jmsDestination = new OpenWireTopic("test.topic");
this.jmsReplyTo = new OpenWireTopic("test.replyto.topic:001");
this.jmsDeliveryMode = Message.DEFAULT_DELIVERY_MODE;
this.jmsRedelivered = true;
this.jmsType = "test type";
this.jmsExpiration = 100000;
this.jmsPriority = 5;
this.jmsTimestamp = System.currentTimeMillis();
this.readOnlyMessage = false;
this.consumerIDs = new long[3];
for (int i = 0; i < this.consumerIDs.length; i++) {
this.consumerIDs[i] = i;
}
}
@Test
public void testGetDataStructureType() {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
assertEquals(msg.getOpenWireMessage().getDataStructureType(), CommandTypes.OPENWIRE_MESSAGE);
}
@Test
public void testHashCode() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSMessageID(this.jmsMessageID);
assertTrue(msg.getJMSMessageID().hashCode() == jmsMessageID.hashCode());
}
@Test
public void testSetReadOnly() {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setReadOnlyProperties(true);
boolean test = false;
try {
msg.setIntProperty("test", 1);
} catch (MessageNotWriteableException me) {
test = true;
} catch (JMSException e) {
e.printStackTrace(System.err);
test = false;
}
assertTrue(test);
}
@Test
public void testSetToForeignJMSID() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSMessageID("ID:EMS-SERVER.8B443C380083:429");
}
@Test
public void testEqualsObject() throws Exception {
OpenWireJMSMessage msg1 = new OpenWireJMSMessage();
OpenWireJMSMessage msg2 = new OpenWireJMSMessage();
msg1.setJMSMessageID(this.jmsMessageID);
assertTrue(!msg1.equals(msg2));
msg2.setJMSMessageID(this.jmsMessageID);
assertTrue(msg1.equals(msg2));
}
@Test
public void testShallowCopy() throws Exception {
OpenWireJMSMessage msg1 = new OpenWireJMSMessage();
msg1.setJMSMessageID(jmsMessageID);
OpenWireJMSMessage msg2 = msg1.copy();
assertTrue(msg1 != msg2 && msg1.equals(msg2));
}
@Test
public void testCopy() throws Exception {
this.jmsMessageID = "testid";
this.jmsCorrelationID = "testcorrelationid";
this.jmsDestination = new OpenWireTopic("test.topic");
this.jmsReplyTo = new OpenWireTopic("test.replyto.topic:001");
this.jmsDeliveryMode = Message.DEFAULT_DELIVERY_MODE;
this.jmsRedelivered = true;
this.jmsType = "test type";
this.jmsExpiration = 100000;
this.jmsPriority = 5;
this.jmsTimestamp = System.currentTimeMillis();
this.readOnlyMessage = false;
OpenWireJMSMessage msg1 = new OpenWireJMSMessage();
msg1.setJMSMessageID(this.jmsMessageID);
msg1.setJMSCorrelationID(this.jmsCorrelationID);
msg1.setJMSDestination(this.jmsDestination);
msg1.setJMSReplyTo(this.jmsReplyTo);
msg1.setJMSDeliveryMode(this.jmsDeliveryMode);
msg1.setJMSRedelivered(this.jmsRedelivered);
msg1.setJMSType(this.jmsType);
msg1.setJMSExpiration(this.jmsExpiration);
msg1.setJMSPriority(this.jmsPriority);
msg1.setJMSTimestamp(this.jmsTimestamp);
msg1.setReadOnlyProperties(true);
OpenWireJMSMessage msg2 = msg1.copy();
assertEquals(msg1.getJMSMessageID(), msg2.getJMSMessageID());
assertTrue(msg1.getJMSCorrelationID().equals(msg2.getJMSCorrelationID()));
assertTrue(msg1.getJMSDestination().equals(msg2.getJMSDestination()));
assertTrue(msg1.getJMSReplyTo().equals(msg2.getJMSReplyTo()));
assertTrue(msg1.getJMSDeliveryMode() == msg2.getJMSDeliveryMode());
assertTrue(msg1.getJMSRedelivered() == msg2.getJMSRedelivered());
assertTrue(msg1.getJMSType().equals(msg2.getJMSType()));
assertTrue(msg1.getJMSExpiration() == msg2.getJMSExpiration());
assertTrue(msg1.getJMSPriority() == msg2.getJMSPriority());
assertTrue(msg1.getJMSTimestamp() == msg2.getJMSTimestamp());
LOG.info("Message is: {}", msg1);
}
@Test
public void testGetAndSetJMSMessageID() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSMessageID(this.jmsMessageID);
assertEquals(msg.getJMSMessageID(), this.jmsMessageID);
}
@Test
public void testGetAndSetJMSTimestamp() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSTimestamp(this.jmsTimestamp);
assertTrue(msg.getJMSTimestamp() == this.jmsTimestamp);
}
@Test
public void testGetJMSCorrelationIDAsBytes() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSCorrelationID(this.jmsCorrelationID);
byte[] testbytes = msg.getJMSCorrelationIDAsBytes();
String str2 = new String(testbytes);
assertTrue(this.jmsCorrelationID.equals(str2));
}
@Test
public void testSetJMSCorrelationIDAsBytes() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
byte[] testbytes = this.jmsCorrelationID.getBytes();
msg.setJMSCorrelationIDAsBytes(testbytes);
testbytes = msg.getJMSCorrelationIDAsBytes();
String str2 = new String(testbytes);
assertTrue(this.jmsCorrelationID.equals(str2));
}
@Test
public void testGetAndSetJMSCorrelationID() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSCorrelationID(this.jmsCorrelationID);
assertTrue(msg.getJMSCorrelationID().equals(this.jmsCorrelationID));
}
@Test
public void testGetAndSetJMSReplyTo() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSReplyTo(this.jmsReplyTo);
assertTrue(msg.getJMSReplyTo().equals(this.jmsReplyTo));
}
@Test
public void testGetAndSetJMSDestination() throws Exception {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSDestination(this.jmsDestination);
assertTrue(msg.getJMSDestination().equals(this.jmsDestination));
}
@Test
public void testGetAndSetJMSDeliveryMode() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSDeliveryMode(this.jmsDeliveryMode);
assertTrue(msg.getJMSDeliveryMode() == this.jmsDeliveryMode);
}
@Test
public void testGetAndSetMSRedelivered() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSRedelivered(this.jmsRedelivered);
assertTrue(msg.getJMSRedelivered() == this.jmsRedelivered);
}
@Test
public void testGetAndSetJMSType() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSType(this.jmsType);
assertTrue(msg.getJMSType().equals(this.jmsType));
}
@Test
public void testGetAndSetJMSExpiration() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSExpiration(this.jmsExpiration);
assertTrue(msg.getJMSExpiration() == this.jmsExpiration);
}
@Test
public void testGetAndSetJMSPriority() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSPriority(this.jmsPriority);
assertTrue(msg.getJMSPriority() == this.jmsPriority);
msg.setJMSPriority(-90);
assertEquals(0, msg.getJMSPriority());
msg.setJMSPriority(90);
assertEquals(9, msg.getJMSPriority());
}
@Test
public void testClearProperties() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setStringProperty("test", "test");
msg.setJMSMessageID(this.jmsMessageID);
msg.getOpenWireMessage().setContent(new Buffer(new byte[] {1, 0, 0}));
msg.clearProperties();
assertNull(msg.getStringProperty("test"));
assertNotNull(msg.getJMSMessageID());
assertNotNull(msg.getOpenWireMessage().getContent());
}
@Test
public void testPropertyExists() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setStringProperty("test", "test");
assertTrue(msg.propertyExists("test"));
msg.setIntProperty("JMSXDeliveryCount", 1);
assertTrue(msg.propertyExists("JMSXDeliveryCount"));
}
@Test
public void testGetBooleanProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "booleanProperty";
msg.setBooleanProperty(name, true);
assertTrue(msg.getBooleanProperty(name));
}
@Test
public void testGetByteProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "byteProperty";
msg.setByteProperty(name, (byte) 1);
assertTrue(msg.getByteProperty(name) == 1);
}
@Test
public void testGetShortProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "shortProperty";
msg.setShortProperty(name, (short) 1);
assertTrue(msg.getShortProperty(name) == 1);
}
@Test
public void testGetIntProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "intProperty";
msg.setIntProperty(name, 1);
assertTrue(msg.getIntProperty(name) == 1);
}
@Test
public void testGetLongProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "longProperty";
msg.setLongProperty(name, 1);
assertTrue(msg.getLongProperty(name) == 1);
}
@Test
public void testGetFloatProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "floatProperty";
msg.setFloatProperty(name, 1.3f);
assertTrue(msg.getFloatProperty(name) == 1.3f);
}
@Test
public void testGetDoubleProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "doubleProperty";
msg.setDoubleProperty(name, 1.3d);
assertTrue(msg.getDoubleProperty(name) == 1.3);
}
@Test
public void testGetStringProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "stringProperty";
msg.setStringProperty(name, name);
assertTrue(msg.getStringProperty(name).equals(name));
}
@Test
public void testGetObjectProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "floatProperty";
msg.setFloatProperty(name, 1.3f);
assertTrue(msg.getObjectProperty(name) instanceof Float);
assertTrue(((Float) msg.getObjectProperty(name)).floatValue() == 1.3f);
}
@Test
public void testGetPropertyNames() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name1 = "floatProperty";
msg.setFloatProperty(name1, 1.3f);
String name2 = "JMSXDeliveryCount";
msg.setIntProperty(name2, 1);
String name3 = "JMSRedelivered";
msg.setBooleanProperty(name3, false);
boolean found1 = false;
boolean found2 = false;
boolean found3 = false;
for (Enumeration<?> iter = msg.getPropertyNames(); iter.hasMoreElements();) {
Object element = iter.nextElement();
found1 |= element.equals(name1);
found2 |= element.equals(name2);
found3 |= element.equals(name3);
}
assertTrue("prop name1 found", found1);
// spec compliance, only non JMS (and JMSX) props returned
assertFalse("prop name2 not found", found2);
assertFalse("prop name4 not found", found3);
}
@Test
public void testGetAllPropertyNames() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name1 = "floatProperty";
msg.setFloatProperty(name1, 1.3f);
String name2 = "JMSXDeliveryCount";
msg.setIntProperty(name2, 1);
String name3 = "JMSRedelivered";
msg.setBooleanProperty(name3, false);
boolean found1 = false;
boolean found2 = false;
boolean found3 = false;
for (Enumeration<?> iter = msg.getAllPropertyNames(); iter.hasMoreElements();) {
Object element = iter.nextElement();
found1 |= element.equals(name1);
found2 |= element.equals(name2);
found3 |= element.equals(name3);
}
assertTrue("prop name1 found", found1);
assertTrue("prop name2 found", found2);
assertTrue("prop name4 found", found3);
}
@Test
public void testSetObjectProperty() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String name = "property";
try {
msg.setObjectProperty(name, "string");
msg.setObjectProperty(name, Byte.valueOf("1"));
msg.setObjectProperty(name, Short.valueOf("1"));
msg.setObjectProperty(name, Integer.valueOf("1"));
msg.setObjectProperty(name, Long.valueOf("1"));
msg.setObjectProperty(name, Float.valueOf("1.1f"));
msg.setObjectProperty(name, Double.valueOf("1.1"));
msg.setObjectProperty(name, Boolean.TRUE);
msg.setObjectProperty(name, null);
} catch (MessageFormatException e) {
fail("should accept object primitives and String");
}
try {
msg.setObjectProperty(name, new byte[5]);
fail("should accept only object primitives and String");
} catch (MessageFormatException e) {
}
try {
msg.setObjectProperty(name, new Object());
fail("should accept only object primitives and String");
} catch (MessageFormatException e) {
}
}
@Test
public void testConvertProperties() throws Exception {
org.apache.activemq.openwire.commands.Message msg = new org.apache.activemq.openwire.commands.Message() {
@Override
public org.apache.activemq.openwire.commands.Message copy() {
return null;
}
@Override
public void beforeMarshall(OpenWireFormat wireFormat) throws IOException {
super.beforeMarshall(wireFormat);
}
@Override
public byte getDataStructureType() {
return 0;
}
@Override
public Response visit(CommandVisitor visitor) throws Exception {
return null;
}
@Override
public void clearBody() throws JMSException {
}
@Override
public void storeContent() {
}
@Override
public void storeContentAndClear() {
}
};
msg.setProperty("stringProperty", "string");
msg.setProperty("byteProperty", Byte.valueOf("1"));
msg.setProperty("shortProperty", Short.valueOf("1"));
msg.setProperty("intProperty", Integer.valueOf("1"));
msg.setProperty("longProperty", Long.valueOf("1"));
msg.setProperty("floatProperty", Float.valueOf("1.1f"));
msg.setProperty("doubleProperty", Double.valueOf("1.1"));
msg.setProperty("booleanProperty", Boolean.TRUE);
msg.setProperty("nullProperty", null);
msg.beforeMarshall(new OpenWireFormat(OpenWireFormat.DEFAULT_WIRE_VERSION));
Map<String, Object> properties = msg.getProperties();
assertEquals(properties.get("stringProperty"), "string");
assertEquals(((Byte) properties.get("byteProperty")).byteValue(), 1);
assertEquals(((Short) properties.get("shortProperty")).shortValue(), 1);
assertEquals(((Integer) properties.get("intProperty")).intValue(), 1);
assertEquals(((Long) properties.get("longProperty")).longValue(), 1);
assertEquals(((Float) properties.get("floatProperty")).floatValue(), 1.1f, 0);
assertEquals(((Double) properties.get("doubleProperty")).doubleValue(), 1.1, 0);
assertEquals(((Boolean) properties.get("booleanProperty")).booleanValue(), true);
assertNull(properties.get("nullProperty"));
}
@Test
public void testSetNullProperty() throws JMSException {
Message msg = new OpenWireJMSMessage();
String name = "cheese";
msg.setStringProperty(name, "Cheddar");
assertEquals("Cheddar", msg.getStringProperty(name));
msg.setStringProperty(name, null);
assertEquals(null, msg.getStringProperty(name));
}
@Test
public void testSetNullPropertyName() throws JMSException {
Message msg = new OpenWireJMSMessage();
try {
msg.setStringProperty(null, "Cheese");
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
LOG.info("Worked, caught: " + e);
}
}
@Test
public void testSetEmptyPropertyName() throws JMSException {
Message msg = new OpenWireJMSMessage();
try {
msg.setStringProperty("", "Cheese");
fail("Should have thrown exception");
} catch (IllegalArgumentException e) {
LOG.info("Worked, caught: " + e);
}
}
@Test
public void testGetAndSetJMSXDeliveryCount() throws JMSException {
Message msg = new OpenWireJMSMessage();
msg.setIntProperty("JMSXDeliveryCount", 1);
int count = msg.getIntProperty("JMSXDeliveryCount");
assertTrue("expected delivery count = 1 - got: " + count, count == 1);
}
@Test
public void testClearBody() throws JMSException {
OpenWireJMSBytesMessage message = new OpenWireJMSBytesMessage();
message.clearBody();
assertFalse(message.isReadOnlyBody());
assertNull(message.getOpenWireMessage().getContent());
}
@Test
public void testBooleanPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setBooleanProperty(propertyName, true);
assertEquals(((Boolean) msg.getObjectProperty(propertyName)).booleanValue(), true);
assertTrue(msg.getBooleanProperty(propertyName));
assertEquals(msg.getStringProperty(propertyName), "true");
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getLongProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testBytePropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setByteProperty(propertyName, (byte) 1);
assertEquals(((Byte) msg.getObjectProperty(propertyName)).byteValue(), 1);
assertEquals(msg.getByteProperty(propertyName), 1);
assertEquals(msg.getShortProperty(propertyName), 1);
assertEquals(msg.getIntProperty(propertyName), 1);
assertEquals(msg.getLongProperty(propertyName), 1);
assertEquals(msg.getStringProperty(propertyName), "1");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testShortPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setShortProperty(propertyName, (short) 1);
assertEquals(((Short) msg.getObjectProperty(propertyName)).shortValue(), 1);
assertEquals(msg.getShortProperty(propertyName), 1);
assertEquals(msg.getIntProperty(propertyName), 1);
assertEquals(msg.getLongProperty(propertyName), 1);
assertEquals(msg.getStringProperty(propertyName), "1");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testIntPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setIntProperty(propertyName, 1);
assertEquals(((Integer) msg.getObjectProperty(propertyName)).intValue(), 1);
assertEquals(msg.getIntProperty(propertyName), 1);
assertEquals(msg.getLongProperty(propertyName), 1);
assertEquals(msg.getStringProperty(propertyName), "1");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testLongPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setLongProperty(propertyName, 1);
assertEquals(((Long) msg.getObjectProperty(propertyName)).longValue(), 1);
assertEquals(msg.getLongProperty(propertyName), 1);
assertEquals(msg.getStringProperty(propertyName), "1");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testFloatPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setFloatProperty(propertyName, (float) 1.5);
assertEquals(((Float) msg.getObjectProperty(propertyName)).floatValue(), 1.5, 0);
assertEquals(msg.getFloatProperty(propertyName), 1.5, 0);
assertEquals(msg.getDoubleProperty(propertyName), 1.5, 0);
assertEquals(msg.getStringProperty(propertyName), "1.5");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getLongProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testDoublePropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setDoubleProperty(propertyName, 1.5);
assertEquals(((Double) msg.getObjectProperty(propertyName)).doubleValue(), 1.5, 0);
assertEquals(msg.getDoubleProperty(propertyName), 1.5, 0);
assertEquals(msg.getStringProperty(propertyName), "1.5");
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getLongProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testStringPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
String stringValue = "true";
msg.setStringProperty(propertyName, stringValue);
assertEquals(msg.getStringProperty(propertyName), stringValue);
assertEquals(msg.getObjectProperty(propertyName), stringValue);
assertEquals(msg.getBooleanProperty(propertyName), true);
stringValue = "1";
msg.setStringProperty(propertyName, stringValue);
assertEquals(msg.getByteProperty(propertyName), 1);
assertEquals(msg.getShortProperty(propertyName), 1);
assertEquals(msg.getIntProperty(propertyName), 1);
assertEquals(msg.getLongProperty(propertyName), 1);
stringValue = "1.5";
msg.setStringProperty(propertyName, stringValue);
assertEquals(msg.getFloatProperty(propertyName), 1.5, 0);
assertEquals(msg.getDoubleProperty(propertyName), 1.5, 0);
stringValue = "bad";
msg.setStringProperty(propertyName, stringValue);
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
try {
msg.getLongProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (NumberFormatException e) {
}
assertFalse(msg.getBooleanProperty(propertyName));
}
@Test
public void testObjectPropertyConversion() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
Object obj = new Object();
try {
// Bypass normal checks.
msg.getOpenWireMessage().setProperty(propertyName, obj, false);
} catch (Exception e) {
}
try {
msg.getStringProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getBooleanProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getByteProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getShortProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getIntProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getLongProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getFloatProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
try {
msg.getDoubleProperty(propertyName);
fail("Should have thrown exception");
} catch (MessageFormatException e) {
}
}
@Test
public void testReadOnlyProperties() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
String propertyName = "property";
msg.setReadOnlyProperties(true);
try {
msg.setObjectProperty(propertyName, new Object());
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setStringProperty(propertyName, "test");
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setBooleanProperty(propertyName, true);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setByteProperty(propertyName, (byte) 1);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setShortProperty(propertyName, (short) 1);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setIntProperty(propertyName, 1);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setLongProperty(propertyName, 1);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setFloatProperty(propertyName, (float) 1.5);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
try {
msg.setDoubleProperty(propertyName, 1.5);
fail("Should have thrown exception");
} catch (MessageNotWriteableException e) {
}
}
@Test
public void testIsExpired() throws JMSException {
OpenWireJMSMessage msg = new OpenWireJMSMessage();
msg.setJMSExpiration(System.currentTimeMillis() - 1);
assertTrue(msg.isExpired());
msg.setJMSExpiration(System.currentTimeMillis() + 10000);
assertFalse(msg.isExpired());
}
}