Return null from getBytes if no value present.
This commit is contained in:
Timothy Bish 2015-03-03 16:17:40 -05:00
parent ad57cc6fcb
commit 6e038d5ffd
2 changed files with 101 additions and 134 deletions

View File

@ -494,6 +494,10 @@ public class ActiveMQMapMessage extends ActiveMQMessage implements MapMessage {
public byte[] getBytes(String name) throws JMSException {
initializeReading();
Object value = map.get(name);
if (value == null) {
return null;
}
if (value instanceof byte[]) {
return (byte[])value;
} else {

View File

@ -16,8 +16,13 @@
*/
package org.apache.activemq.command;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
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.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
@ -28,45 +33,20 @@ import javax.jms.MessageFormatException;
import javax.jms.MessageNotReadableException;
import javax.jms.MessageNotWriteableException;
import junit.framework.TestCase;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* Test the MapMessage implementation for spec compliance.
*/
public class ActiveMQMapMessageTest extends TestCase {
public class ActiveMQMapMessageTest {
private static final Logger LOG = LoggerFactory.getLogger(ActiveMQMapMessageTest.class);
private String name = "testName";
/**
* Constructor for ActiveMQMapMessageTest.
*
* @param name
*/
public ActiveMQMapMessageTest(String name) {
super(name);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(ActiveMQMapMessageTest.class);
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
private final String name = "testName";
@Test(timeout = 10000)
public void testBytesConversion() throws JMSException, IOException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setBoolean("boolean", true);
@ -84,7 +64,7 @@ public class ActiveMQMapMessageTest extends TestCase {
// Test with a 1Meg String
StringBuffer bigSB = new StringBuffer(1024 * 1024);
for (int i = 0; i < 1024 * 1024; i++) {
bigSB.append((char)'a' + i % 26);
bigSB.append('a' + i % 26);
}
String bigString = bigSB.toString();
@ -106,6 +86,7 @@ public class ActiveMQMapMessageTest extends TestCase {
assertEquals(msg.getString("bigString"), bigString);
}
@Test(timeout = 10000)
public void testGetBoolean() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setBoolean(name, true);
@ -119,6 +100,7 @@ public class ActiveMQMapMessageTest extends TestCase {
assertTrue(msg.getBoolean(name));
}
@Test(timeout = 10000)
public void testGetByte() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setByte(this.name, (byte) 1);
@ -126,108 +108,85 @@ public class ActiveMQMapMessageTest extends TestCase {
assertTrue(msg.getByte(this.name) == (byte) 1);
}
public void testGetShort() {
@Test(timeout = 10000)
public void testGetShort() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setShort(this.name, (short) 1);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getShort(this.name) == (short) 1);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetChar() {
@Test(timeout = 10000)
public void testGetChar() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setChar(this.name, 'a');
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getChar(this.name) == 'a');
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetInt() {
@Test(timeout = 10000)
public void testGetInt() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setInt(this.name, 1);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getInt(this.name) == 1);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetLong() {
@Test(timeout = 10000)
public void testGetLong() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setLong(this.name, 1);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getLong(this.name) == 1);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetFloat() {
@Test(timeout = 10000)
public void testGetFloat() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setFloat(this.name, 1.5f);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getFloat(this.name) == 1.5f);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetDouble() {
@Test(timeout = 10000)
public void testGetDouble() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
msg.setDouble(this.name, 1.5);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(msg.getDouble(this.name) == 1.5);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetString() {
@Test(timeout = 10000)
public void testGetString() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
String str = "test";
msg.setString(this.name, str);
msg = (ActiveMQMapMessage) msg.copy();
assertEquals(msg.getString(this.name), str);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
public void testGetBytes() {
@Test(timeout = 10000)
public void testGetBytes() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
try {
byte[] bytes1 = new byte[3];
byte[] bytes2 = new byte[2];
System.arraycopy(bytes1, 0, bytes2, 0, 2);
msg.setBytes(this.name, bytes1);
msg.setBytes(this.name + "2", bytes1, 0, 2);
msg = (ActiveMQMapMessage) msg.copy();
assertTrue(Arrays.equals(msg.getBytes(this.name), bytes1));
assertEquals(msg.getBytes(this.name + "2").length, bytes2.length);
} catch (JMSException jmsEx) {
jmsEx.printStackTrace();
assertTrue(false);
}
}
@Test(timeout = 10000)
public void testGetBytesWithNullValue() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
assertNull(msg.getBytes(this.name));
}
@Test(timeout = 10000)
public void testGetObject() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
Boolean booleanValue = Boolean.TRUE;
@ -300,6 +259,7 @@ public class ActiveMQMapMessageTest extends TestCase {
}
@Test(timeout = 10000)
public void testGetMapNames() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setBoolean("boolean", true);
@ -335,6 +295,7 @@ public class ActiveMQMapMessageTest extends TestCase {
assertTrue(mapNamesList.contains("string"));
}
@Test(timeout = 10000)
public void testItemExists() throws JMSException {
ActiveMQMapMessage mapMessage = new ActiveMQMapMessage();
@ -346,6 +307,7 @@ public class ActiveMQMapMessageTest extends TestCase {
assertFalse(mapMessage.itemExists("doesntExist"));
}
@Test(timeout = 10000)
public void testClearBody() throws JMSException {
ActiveMQMapMessage mapMessage = new ActiveMQMapMessage();
mapMessage.setString("String", "String");
@ -363,6 +325,7 @@ public class ActiveMQMapMessageTest extends TestCase {
mapMessage.getString("String");
}
@Test(timeout = 10000)
public void testReadOnlyBody() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setBoolean("boolean", true);
@ -457,6 +420,7 @@ public class ActiveMQMapMessageTest extends TestCase {
}
}
@Test(timeout = 10000)
public void testWriteOnlyBody() throws JMSException {
ActiveMQMapMessage msg = new ActiveMQMapMessage();
msg.setReadOnlyBody(false);
@ -488,5 +452,4 @@ public class ActiveMQMapMessageTest extends TestCase {
msg.getShort("short");
msg.getString("string");
}
}