use of javax.jms.MessageEOFException in project activemq-artemis by apache.
the class MessageBodyTest method testBytesMessage.
@Test
public void testBytesMessage() throws Exception {
BytesMessage m = queueProducerSession.createBytesMessage();
// some arbitrary values
boolean myBool = true;
byte myByte = -111;
short myShort = 15321;
int myInt = 0x71ab6c80;
long myLong = 0x20bf1e3fb6fa31dfL;
float myFloat = Float.MAX_VALUE - 23465;
double myDouble = Double.MAX_VALUE - 72387633;
String myString = "abcdef&^*&!^ghijkl\uD5E2\uCAC7\uD2BB\uB7DD\uB7C7\uB3A3\uBCE4\uB5A5";
log.trace("String is length:" + myString.length());
char myChar = 'q';
byte[] myBytes = new byte[] { -23, 114, -126, -12, 74, 87 };
m.writeBoolean(myBool);
m.writeByte(myByte);
m.writeShort(myShort);
m.writeChar(myChar);
m.writeInt(myInt);
m.writeLong(myLong);
m.writeFloat(myFloat);
m.writeDouble(myDouble);
m.writeUTF(myString);
m.writeBytes(myBytes);
m.writeBytes(myBytes, 2, 3);
m.writeObject(new Boolean(myBool));
m.writeObject(new Byte(myByte));
m.writeObject(new Short(myShort));
m.writeObject(new Integer(myInt));
m.writeObject(new Long(myLong));
m.writeObject(new Float(myFloat));
m.writeObject(new Double(myDouble));
m.writeObject(myString);
m.writeObject(myBytes);
try {
m.writeObject(new Object());
ProxyAssertSupport.fail();
} catch (MessageFormatException e) {
// OK
}
// Reading should not be possible when message is read-write
try {
m.readBoolean();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readShort();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readChar();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readInt();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readLong();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readFloat();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readDouble();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readUTF();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readUnsignedByte();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.readUnsignedShort();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
byte[] bytes = new byte[333];
m.readBytes(bytes);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
byte[] bytes = new byte[333];
m.readBytes(bytes, 111);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
try {
m.getBodyLength();
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotReadableException e) {
// OK
}
queueProducer.send(m);
BytesMessage m2 = (BytesMessage) queueConsumer.receive(2000);
ProxyAssertSupport.assertNotNull(m2);
ProxyAssertSupport.assertEquals(myBool, m2.readBoolean());
ProxyAssertSupport.assertEquals(myByte, m2.readByte());
ProxyAssertSupport.assertEquals(myShort, m2.readShort());
ProxyAssertSupport.assertEquals(myChar, m2.readChar());
ProxyAssertSupport.assertEquals(myInt, m2.readInt());
ProxyAssertSupport.assertEquals(myLong, m2.readLong());
ProxyAssertSupport.assertEquals(myFloat, m2.readFloat(), 0);
ProxyAssertSupport.assertEquals(myDouble, m2.readDouble(), 0);
ProxyAssertSupport.assertEquals(myString, m2.readUTF());
byte[] bytes = new byte[6];
int ret = m2.readBytes(bytes);
ProxyAssertSupport.assertEquals(6, ret);
Assert.assertArrayEquals(myBytes, bytes);
byte[] bytes2 = new byte[3];
ret = m2.readBytes(bytes2);
ProxyAssertSupport.assertEquals(3, ret);
ProxyAssertSupport.assertEquals(myBytes[2], bytes2[0]);
ProxyAssertSupport.assertEquals(myBytes[3], bytes2[1]);
ProxyAssertSupport.assertEquals(myBytes[4], bytes2[2]);
ProxyAssertSupport.assertEquals(myBool, m2.readBoolean());
ProxyAssertSupport.assertEquals(myByte, m2.readByte());
ProxyAssertSupport.assertEquals(myShort, m2.readShort());
ProxyAssertSupport.assertEquals(myInt, m2.readInt());
ProxyAssertSupport.assertEquals(myLong, m2.readLong());
ProxyAssertSupport.assertEquals(myFloat, m2.readFloat(), 0);
ProxyAssertSupport.assertEquals(myDouble, m2.readDouble(), 0);
ProxyAssertSupport.assertEquals(myString, m2.readUTF());
bytes = new byte[6];
ret = m2.readBytes(bytes);
ProxyAssertSupport.assertEquals(6, ret);
Assert.assertArrayEquals(myBytes, bytes);
ret = m2.readBytes(bytes);
ProxyAssertSupport.assertEquals(-1, ret);
// Try and read past the end of the stream
try {
m2.readBoolean();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readByte();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readChar();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readDouble();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readFloat();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readInt();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readLong();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readShort();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readUnsignedByte();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readUnsignedShort();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
try {
m2.readUTF();
ProxyAssertSupport.fail();
} catch (MessageEOFException e) {
// OK
}
// Message should not be writable in read-only mode
try {
m2.writeBoolean(myBool);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeByte(myByte);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeShort(myShort);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeChar(myChar);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeInt(myInt);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeLong(myLong);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeFloat(myFloat);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeDouble(myDouble);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeUTF(myString);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeBytes(myBytes);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
try {
m2.writeObject(myString);
ProxyAssertSupport.fail();
} catch (javax.jms.MessageNotWriteableException e) {
// OK
}
long bodyLength = m2.getBodyLength();
ProxyAssertSupport.assertEquals(161, bodyLength);
m2.reset();
// test the unsigned reads
m2.readBoolean();
int unsignedByte = m2.readUnsignedByte();
ProxyAssertSupport.assertEquals(myByte & 0xFF, unsignedByte);
int unsignedShort = m2.readUnsignedShort();
ProxyAssertSupport.assertEquals(myShort & 0xFFFF, unsignedShort);
m2.clearBody();
try {
m2.getBodyLength();
ProxyAssertSupport.fail();
} catch (MessageNotReadableException e) {
// OK
}
m2.reset();
ProxyAssertSupport.assertEquals(0, m2.getBodyLength());
// Test that changing the received message doesn't affect the sent message
m.reset();
ProxyAssertSupport.assertEquals(161, m.getBodyLength());
// Should be diffent object instances after sending *even* if in same JVM
ProxyAssertSupport.assertFalse(m == m2);
}
use of javax.jms.MessageEOFException in project activemq-artemis by apache.
the class SimpleJMSStreamMessage method readByte.
@Override
public byte readByte() throws JMSException {
if (bodyWriteOnly) {
throw new MessageNotReadableException("The message body is writeonly");
}
try {
Object value = content.get(position);
offset = 0;
if (value == null) {
throw new NullPointerException("Value is null");
} else if (value instanceof Byte) {
position++;
return ((Byte) value).byteValue();
} else if (value instanceof String) {
byte result = Byte.parseByte((String) value);
position++;
return result;
} else {
throw new MessageFormatException("Invalid conversion");
}
} catch (IndexOutOfBoundsException e) {
throw new MessageEOFException("");
}
}
use of javax.jms.MessageEOFException in project activemq-artemis by apache.
the class SimpleJMSStreamMessage method readFloat.
@Override
public float readFloat() throws JMSException {
if (bodyWriteOnly) {
throw new MessageNotReadableException("The message body is writeonly");
}
try {
Object value = content.get(position);
offset = 0;
if (value == null) {
throw new NullPointerException("Value is null");
} else if (value instanceof Float) {
position++;
return ((Float) value).floatValue();
} else if (value instanceof String) {
float result = Float.parseFloat((String) value);
position++;
return result;
} else {
throw new MessageFormatException("Invalid conversion");
}
} catch (IndexOutOfBoundsException e) {
throw new MessageEOFException("");
}
}
use of javax.jms.MessageEOFException in project activemq-artemis by apache.
the class SimpleJMSStreamMessage method readShort.
@Override
public short readShort() throws JMSException {
if (bodyWriteOnly) {
throw new MessageNotReadableException("The message body is writeonly");
}
try {
Object value = content.get(position);
offset = 0;
if (value == null) {
throw new NullPointerException("Value is null");
} else if (value instanceof Byte) {
position++;
return ((Byte) value).shortValue();
} else if (value instanceof Short) {
position++;
return ((Short) value).shortValue();
} else if (value instanceof String) {
short result = Short.parseShort((String) value);
position++;
return result;
} else {
throw new MessageFormatException("Invalid conversion");
}
} catch (IndexOutOfBoundsException e) {
throw new MessageEOFException("");
}
}
use of javax.jms.MessageEOFException in project activemq-artemis by apache.
the class SimpleJMSStreamMessage method readBytes.
@Override
public int readBytes(final byte[] value) throws JMSException {
if (bodyWriteOnly) {
throw new MessageNotReadableException("The message body is writeonly");
}
try {
Object myObj = content.get(position);
if (myObj == null) {
throw new NullPointerException("Value is null");
} else if (!(myObj instanceof byte[])) {
throw new MessageFormatException("Invalid conversion");
}
byte[] obj = (byte[]) myObj;
if (obj.length == 0) {
position++;
offset = 0;
return 0;
}
if (offset >= obj.length) {
position++;
offset = 0;
return -1;
}
if (obj.length - offset < value.length) {
System.arraycopy(obj, offset, value, 0, obj.length);
position++;
offset = 0;
return obj.length - offset;
} else {
System.arraycopy(obj, offset, value, 0, value.length);
offset += value.length;
return value.length;
}
} catch (IndexOutOfBoundsException e) {
throw new MessageEOFException("");
}
}
Aggregations