diff options
Diffstat (limited to 'java/client/src')
13 files changed, 265 insertions, 226 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java index 57b941a060..bfd294f09e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java @@ -830,7 +830,7 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi final AMQProtocolHandler protocolHandler = _connection.getProtocolHandler(); // TODO: construct the rawSelector from the selector string if rawSelector == null - final FieldTable ft = new FieldTable(); + final FieldTable ft = FieldTableFactory.newFieldTable(); //if (rawSelector != null) // ft.put("headers", rawSelector.getDataAsBytes()); if (rawSelector != null) @@ -992,7 +992,7 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi public QueueSender createSender(Queue queue) throws JMSException { //return (QueueSender) createProducer(queue); - return new QueueSenderAdapter(createProducer(queue),queue); + return new QueueSenderAdapter(createProducer(queue), queue); } public Topic createTopic(String topicName) throws JMSException @@ -1072,7 +1072,7 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi public TopicPublisher createPublisher(Topic topic) throws JMSException { //return (TopicPublisher) createProducer(topic); - return new TopicPublisherAdapter(createProducer(topic), topic); + return new TopicPublisherAdapter(createProducer(topic), topic); } public QueueBrowser createBrowser(Queue queue) throws JMSException diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java index caef9a3f44..9333df3fe4 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java @@ -32,6 +32,7 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.ConnectionStartBody; import org.apache.qpid.framing.ConnectionStartOkBody; import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.framing.FieldTableFactory; import javax.security.sasl.Sasl; import javax.security.sasl.SaslClient; @@ -117,7 +118,7 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener } stateManager.changeState(AMQState.CONNECTION_NOT_TUNED); - FieldTable clientProperties = new FieldTable(); + FieldTable clientProperties = FieldTableFactory.newFieldTable(); clientProperties.put("instance", ps.getClientID()); clientProperties.put("product", "Qpid"); clientProperties.put("version", "1.0"); diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java index 30031326d5..fbb55ae289 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java @@ -28,9 +28,8 @@ import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQTopic; import org.apache.qpid.client.JmsNotImplementedException; import org.apache.qpid.framing.BasicContentHeaderProperties; -import org.apache.qpid.framing.FieldTableKeyEnumeration; import org.apache.qpid.framing.FieldTable; -import org.apache.qpid.framing.PropertyFieldTable; +import org.apache.qpid.framing.FieldTableFactory; import javax.jms.Destination; import javax.jms.JMSException; @@ -45,20 +44,6 @@ public abstract class AbstractJMSMessage extends AMQMessage implements javax.jms { private static final Map _destinationCache = Collections.synchronizedMap(new ReferenceMap()); - - //todo Remove these and Change _headers to use a subclass of PropertyFieldTable that limits - // the properties that can be added... or suitably handles the values that cannot be added to the - // AMQP header field table. - public static final char BOOLEAN_PROPERTY_PREFIX = PropertyFieldTable.BOOLEAN_PROPERTY_PREFIX; - public static final char BYTE_PROPERTY_PREFIX = PropertyFieldTable.BYTE_PROPERTY_PREFIX; - public static final char SHORT_PROPERTY_PREFIX = PropertyFieldTable.SHORT_PROPERTY_PREFIX; - public static final char INT_PROPERTY_PREFIX = PropertyFieldTable.INT_PROPERTY_PREFIX; - public static final char LONG_PROPERTY_PREFIX = PropertyFieldTable.LONG_PROPERTY_PREFIX; - public static final char FLOAT_PROPERTY_PREFIX = PropertyFieldTable.FLOAT_PROPERTY_PREFIX; - public static final char DOUBLE_PROPERTY_PREFIX = PropertyFieldTable.DOUBLE_PROPERTY_PREFIX; - public static final char STRING_PROPERTY_PREFIX = PropertyFieldTable.STRING_PROPERTY_PREFIX; - - protected boolean _redelivered; protected ByteBuffer _data; @@ -268,213 +253,136 @@ public abstract class AbstractJMSMessage extends AMQMessage implements javax.jms public boolean propertyExists(String propertyName) throws JMSException { checkPropertyName(propertyName); - - Iterator keys = getJmsContentHeaderProperties().getHeaders().keySet().iterator(); - - while (keys.hasNext()) - { - String key = (String) keys.next(); - - if (key.endsWith(propertyName)) - { - return true; - } - } - return false; - + return getJmsContentHeaderProperties().getHeaders().propertyExists(propertyName); } public boolean getBooleanProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - // store as integer as temporary workaround - //Boolean b = (Boolean) getJmsContentHeaderProperties().headers.get(BOOLEAN_PROPERTY_PREFIX + propertyName); - Long b = (Long) getJmsContentHeaderProperties().getHeaders().get(BOOLEAN_PROPERTY_PREFIX + propertyName); - if (b == null) + if (getJmsContentHeaderProperties() == null) { - return Boolean.valueOf(null).booleanValue(); - } - else - { - return b.longValue() != 0; + System.out.println("HEADERS ARE NULL"); } + + return getJmsContentHeaderProperties().getHeaders().getBoolean(propertyName); } public byte getByteProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - Byte b = (Byte) getJmsContentHeaderProperties().getHeaders().get(BYTE_PROPERTY_PREFIX + propertyName); - if (b == null) - { - return Byte.valueOf(null).byteValue(); - } - else - { - return b.byteValue(); - } + return getJmsContentHeaderProperties().getHeaders().getByte(propertyName); } public short getShortProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - Short s = (Short) getJmsContentHeaderProperties().getHeaders().get(SHORT_PROPERTY_PREFIX + propertyName); - if (s == null) - { - return Short.valueOf(null).shortValue(); - } - else - { - return s.shortValue(); - } + return getJmsContentHeaderProperties().getHeaders().getShort(propertyName); } public int getIntProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - Integer i = (Integer) getJmsContentHeaderProperties().getHeaders().get(INT_PROPERTY_PREFIX + propertyName); - if (i == null) - { - return Integer.valueOf(null).intValue(); - } - else - { - return i.intValue(); - } + return getJmsContentHeaderProperties().getHeaders().getInteger(propertyName); } public long getLongProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - Long l = (Long) getJmsContentHeaderProperties().getHeaders().get(LONG_PROPERTY_PREFIX + propertyName); - if (l == null) - { - // temp - the spec says do this but this throws a NumberFormatException - //return Long.valueOf(null).longValue(); - return 0; - } - else - { - return l.longValue(); - } + return getJmsContentHeaderProperties().getHeaders().getLong(propertyName); } public float getFloatProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - final Float f = (Float) getJmsContentHeaderProperties().getHeaders().get(FLOAT_PROPERTY_PREFIX + propertyName); - if (f == null) - { - return Float.valueOf(null).floatValue(); - } - else - { - return f.floatValue(); - } + return getJmsContentHeaderProperties().getHeaders().getFloat(propertyName); } public double getDoubleProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - final Double d = (Double) getJmsContentHeaderProperties().getHeaders().get(DOUBLE_PROPERTY_PREFIX + propertyName); - if (d == null) - { - return Double.valueOf(null).doubleValue(); - } - else - { - return d.shortValue(); - } + return getJmsContentHeaderProperties().getHeaders().getDouble(propertyName); } public String getStringProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - return (String) getJmsContentHeaderProperties().getHeaders().get(STRING_PROPERTY_PREFIX + propertyName); + return getJmsContentHeaderProperties().getHeaders().getString(propertyName); } public Object getObjectProperty(String propertyName) throws JMSException { checkPropertyName(propertyName); - throw new JmsNotImplementedException(); + return getJmsContentHeaderProperties().getHeaders().getObject(propertyName); } public Enumeration getPropertyNames() throws JMSException { - return new FieldTableKeyEnumeration(getJmsContentHeaderProperties().getHeaders()) - { - public Object nextElement() - { - String propName = (String) _iterator.next(); - - //The propertyName has a single Char prefix. Skip this. - return propName.substring(1); - } - }; + return getJmsContentHeaderProperties().getHeaders().getPropertyNames(); } public void setBooleanProperty(String propertyName, boolean b) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - //getJmsContentHeaderProperties().headers.put(BOOLEAN_PROPERTY_PREFIX + propertyName, Boolean.valueOf(b)); - getJmsContentHeaderProperties().getHeaders().put(BOOLEAN_PROPERTY_PREFIX + propertyName, b ? new Long(1) : new Long(0)); + getJmsContentHeaderProperties().getHeaders().setBoolean(propertyName, b); } public void setByteProperty(String propertyName, byte b) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(BYTE_PROPERTY_PREFIX + propertyName, new Byte(b)); + getJmsContentHeaderProperties().getHeaders().setByte(propertyName, new Byte(b)); } public void setShortProperty(String propertyName, short i) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(SHORT_PROPERTY_PREFIX + propertyName, new Short(i)); + getJmsContentHeaderProperties().getHeaders().setShort(propertyName, new Short(i)); } public void setIntProperty(String propertyName, int i) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(INT_PROPERTY_PREFIX + propertyName, new Integer(i)); + getJmsContentHeaderProperties().getHeaders().setInteger(propertyName, new Integer(i)); } public void setLongProperty(String propertyName, long l) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(LONG_PROPERTY_PREFIX + propertyName, new Long(l)); + getJmsContentHeaderProperties().getHeaders().setLong(propertyName, new Long(l)); } public void setFloatProperty(String propertyName, float f) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(FLOAT_PROPERTY_PREFIX + propertyName, new Float(f)); + getJmsContentHeaderProperties().getHeaders().setFloat(propertyName, new Float(f)); } public void setDoubleProperty(String propertyName, double v) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(DOUBLE_PROPERTY_PREFIX + propertyName, new Double(v)); + getJmsContentHeaderProperties().getHeaders().setDouble(propertyName, new Double(v)); } public void setStringProperty(String propertyName, String value) throws JMSException { checkWritableProperties(); checkPropertyName(propertyName); - getJmsContentHeaderProperties().getHeaders().put(STRING_PROPERTY_PREFIX + propertyName, value); + getJmsContentHeaderProperties().getHeaders().setString(propertyName, value); } - public void setObjectProperty(String string, Object object) throws JMSException + public void setObjectProperty(String propertyName, Object object) throws JMSException { - //todo this should be changed to something else.. the Header doesn't support objects. - throw new RuntimeException("Not Implemented"); + checkWritableProperties(); + checkPropertyName(propertyName); + getJmsContentHeaderProperties().getHeaders().setObject(propertyName, object); } public void acknowledge() throws JMSException @@ -518,56 +426,13 @@ public abstract class AbstractJMSMessage extends AMQMessage implements javax.jms buf.append("\nJMS reply to: ").append(String.valueOf(getJMSReplyTo())); buf.append("\nAMQ message number: ").append(_deliveryTag); buf.append("\nProperties:"); - final Iterator it = getJmsContentHeaderProperties().getHeaders().entrySet().iterator(); - if (!it.hasNext()) + if (getJmsContentHeaderProperties().getHeaders().isEmpty()) { buf.append("<NONE>"); } - while (it.hasNext()) + else { - final Map.Entry entry = (Map.Entry) it.next(); - final String propertyName = (String) entry.getKey(); - if (propertyName == null) - { - buf.append("\nInternal error: Property with NULL key defined"); - } - else - { - buf.append('\n').append(propertyName.substring(1)); - - char typeIdentifier = propertyName.charAt(0); - switch (typeIdentifier) - { - case org.apache.qpid.client.message.AbstractJMSMessage.BOOLEAN_PROPERTY_PREFIX: - buf.append("<boolean> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.BYTE_PROPERTY_PREFIX: - buf.append("<byte> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.SHORT_PROPERTY_PREFIX: - buf.append("<short> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.INT_PROPERTY_PREFIX: - buf.append("<int> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.LONG_PROPERTY_PREFIX: - buf.append("<long> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.FLOAT_PROPERTY_PREFIX: - buf.append("<float> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.DOUBLE_PROPERTY_PREFIX: - buf.append("<double> "); - break; - case org.apache.qpid.client.message.AbstractJMSMessage.STRING_PROPERTY_PREFIX: - buf.append("<string> "); - break; - default: - buf.append("<unknown type (identifier " + - typeIdentifier + ") "); - } - buf.append(String.valueOf(entry.getValue())); - } + buf.append('\n').append(getJmsContentHeaderProperties().getHeaders()); } return buf.toString(); } @@ -589,7 +454,6 @@ public abstract class AbstractJMSMessage extends AMQMessage implements javax.jms private void checkPropertyName(String propertyName) { - if (propertyName == null) { throw new IllegalArgumentException("Property name must not be null"); @@ -609,7 +473,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements javax.jms // We need to convert every property into a String representation // Note that type information is preserved in the property name // - final FieldTable table = new FieldTable(); + final FieldTable table = FieldTableFactory.newFieldTable(); final Iterator entries = getJmsContentHeaderProperties().getHeaders().entrySet().iterator(); while (entries.hasNext()) { diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java index 233f05244f..5282dce4c9 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java @@ -23,10 +23,10 @@ package org.apache.qpid.client.message; import org.apache.mina.common.ByteBuffer; import org.apache.qpid.framing.BasicContentHeaderProperties; import org.apache.qpid.framing.PropertyFieldTable; +import org.apache.qpid.framing.FieldTableFactory; import org.apache.qpid.AMQException; import javax.jms.JMSException; -import javax.jms.MessageFormatException; import java.util.Enumeration; public class JMSMapMessage extends JMSTextMessage implements javax.jms.MapMessage @@ -58,7 +58,7 @@ public class JMSMapMessage extends JMSTextMessage implements javax.jms.MapMessag try { - _map = new PropertyFieldTable(getText()); + _map = FieldTableFactory.newFieldTable(getText()); } catch (JMSException e) { @@ -74,7 +74,7 @@ public class JMSMapMessage extends JMSTextMessage implements javax.jms.MapMessag { _data.release(); } - _data = null; + _data = null; } public String toBodyString() throws JMSException diff --git a/java/client/src/main/java/org/apache/qpid/client/security/amqplain/AmqPlainSaslClient.java b/java/client/src/main/java/org/apache/qpid/client/security/amqplain/AmqPlainSaslClient.java index 81d3fb76d5..4291cb3259 100644 --- a/java/client/src/main/java/org/apache/qpid/client/security/amqplain/AmqPlainSaslClient.java +++ b/java/client/src/main/java/org/apache/qpid/client/security/amqplain/AmqPlainSaslClient.java @@ -21,6 +21,7 @@ package org.apache.qpid.client.security.amqplain; import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.framing.FieldTableFactory; import javax.security.sasl.SaslClient; import javax.security.sasl.SaslException; @@ -71,7 +72,7 @@ public class AmqPlainSaslClient implements SaslClient { throw new SaslException("Error handling SASL callbacks: " + e, e); } - FieldTable table = new FieldTable(); + FieldTable table = FieldTableFactory.newFieldTable(); table.put("LOGIN", nameCallback.getName()); table.put("PASSWORD", pwdCallback.getPassword()); return table.getDataAsBytes(); diff --git a/java/client/src/test/java/org/apache/qpid/framing/FieldTableTest.java b/java/client/src/test/java/org/apache/qpid/framing/FieldTableTest.java index 49e1630f15..2a7cb8be30 100644 --- a/java/client/src/test/java/org/apache/qpid/framing/FieldTableTest.java +++ b/java/client/src/test/java/org/apache/qpid/framing/FieldTableTest.java @@ -33,6 +33,33 @@ import junit.framework.TestCase; public class FieldTableTest extends TestCase { + + public void testEncoding() + { + FieldTable table = FieldTableFactory.newFieldTable(); + + String key = "String"; + String value = "Hello"; + table.put(key, value); + + //Add one for the type encoding + int size = EncodingUtils.encodedShortStringLength(key) + 1 + + EncodingUtils.encodedLongStringLength(value); + + assertEquals(table.getEncodedSize(), size); + + key = "Integer"; + Integer number = new Integer(60); + table.put(key, number); + + //Add one for the type encoding + size += EncodingUtils.encodedShortStringLength(key) + 1 + 4; + + + assertEquals(table.getEncodedSize(), size); + } + + public void testDataDump() throws IOException, AMQFrameDecodingException { byte[] data = readBase64("content.txt"); @@ -46,7 +73,7 @@ public class FieldTableTest extends TestCase ByteBuffer buffer = ByteBuffer.allocate(data.length); buffer.put(data); buffer.flip(); - FieldTable table = new FieldTable(buffer, size); + FieldTable table = FieldTableFactory.newFieldTable(buffer, size); } /* @@ -107,7 +134,7 @@ public class FieldTableTest extends TestCase FieldTable load(String name) throws IOException { - return populate(new FieldTable(), read(name)); + return populate(FieldTableFactory.newFieldTable(), read(name)); } Properties read(String name) throws IOException @@ -123,11 +150,12 @@ public class FieldTableTest extends TestCase { String key = (String) i.nextElement(); String value = properties.getProperty(key); - try{ + try + { int ival = Integer.parseInt(value); table.put(key, (long) ival); } - catch(NumberFormatException e) + catch (NumberFormatException e) { table.put(key, value); } @@ -144,7 +172,8 @@ public class FieldTableTest extends TestCase { StringBuffer buffer = new StringBuffer(); String line = in.readLine(); - while (line != null){ + while (line != null) + { buffer.append(line).append(" "); line = in.readLine(); } diff --git a/java/client/src/test/java/org/apache/qpid/headers/MessageFactory.java b/java/client/src/test/java/org/apache/qpid/headers/MessageFactory.java index f1f310c6e5..6f538d068c 100644 --- a/java/client/src/test/java/org/apache/qpid/headers/MessageFactory.java +++ b/java/client/src/test/java/org/apache/qpid/headers/MessageFactory.java @@ -22,6 +22,7 @@ package org.apache.qpid.headers; import org.apache.qpid.client.AMQSession; import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.framing.FieldTableFactory; import javax.jms.BytesMessage; import javax.jms.Destination; @@ -127,14 +128,14 @@ class MessageFactory FieldTable getConsumerBinding() { - FieldTable binding = new FieldTable(); + FieldTable binding = FieldTableFactory.newFieldTable(); binding.put("SF0000", "value"); return binding; } FieldTable getControllerBinding() { - FieldTable binding = new FieldTable(); + FieldTable binding = FieldTableFactory.newFieldTable(); binding.put("SCONTROL", "value"); return binding; } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableKeyEnumeratorTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableKeyEnumeratorTest.java index 2e740aa3eb..ad180e3a89 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableKeyEnumeratorTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableKeyEnumeratorTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.test.unit.basic; import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.framing.FieldTableFactory; import org.apache.qpid.client.message.JMSTextMessage; import org.apache.qpid.client.message.TestMessageHelper; @@ -36,7 +37,7 @@ public class FieldTableKeyEnumeratorTest extends TestCase { public void testKeyEnumeration() { - FieldTable result = new FieldTable(); + FieldTable result = FieldTableFactory.newFieldTable(); result.put("one", 1L); result.put("two", 2L); result.put("three", 3L); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java index 67b7f49565..c1ecef6b57 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java @@ -26,10 +26,12 @@ import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.message.JMSBytesMessage; import org.apache.qpid.framing.AMQFrameDecodingException; -import org.apache.qpid.framing.FieldTable; import org.apache.qpid.framing.FieldTableTest; +import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.framing.FieldTableFactory; import org.apache.qpid.test.VMBrokerSetup; import org.apache.mina.common.ByteBuffer; +import org.apache.log4j.Logger; import java.io.IOException; import java.util.ArrayList; @@ -39,6 +41,9 @@ import junit.framework.TestCase; public class FieldTableMessageTest extends TestCase implements MessageListener { + + private static final Logger _logger = Logger.getLogger(FieldTableMessageTest.class); + private AMQConnection _connection; private AMQDestination _destination; private AMQSession _session; @@ -50,7 +55,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener protected void setUp() throws Exception { super.setUp(); - init(new AMQConnection(_connectionString, "guest", "guest", randomize("Client"), "/test_path")); + init(new AMQConnection(_connectionString, "guest", "guest", randomize("Client"), "/test_path")); } protected void tearDown() throws Exception @@ -80,7 +85,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener private FieldTable load() throws IOException { - FieldTable result = new FieldTable(); + FieldTable result = FieldTableFactory.newFieldTable(); result.put("one", 1L); result.put("two", 2L); result.put("three", 3L); @@ -128,7 +133,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener for (Object m : received) { ByteBuffer buffer = ((JMSBytesMessage) m).getData(); - FieldTable actual = new FieldTable(buffer, buffer.remaining()); + FieldTable actual = FieldTableFactory.newFieldTable(buffer, buffer.remaining()); new FieldTableTest().assertEquivalent(_expected, actual); } } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTablePropertyTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTablePropertyTest.java new file mode 100644 index 0000000000..92b4831d93 --- /dev/null +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTablePropertyTest.java @@ -0,0 +1,65 @@ +/* + * + * 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.qpid.test.unit.basic; + +import org.apache.qpid.framing.PropertyFieldTable; +import org.apache.qpid.framing.FieldTable; +import org.apache.qpid.client.message.JMSTextMessage; +import org.apache.qpid.client.message.TestMessageHelper; + +import java.util.Enumeration; +import java.util.NoSuchElementException; + +import javax.jms.JMSException; + +import junit.framework.TestCase; + +public class FieldTablePropertyTest extends TestCase +{ + public void testPropertyNames() + { + try + { + JMSTextMessage text = TestMessageHelper.newJMSTextMessage(); + + text.setBooleanProperty("Boolean1", true); + text.setBooleanProperty("Boolean2", true); + text.setIntProperty("Int", 2); + text.setLongProperty("Long", 2); + + Enumeration e = text.getPropertyNames(); + + assertEquals("Boolean1", e.nextElement()); + assertTrue("Boolean2".equals(e.nextElement())); + assertTrue("Int".equals(e.nextElement())); + assertTrue("Long".equals(e.nextElement())); + } + catch (JMSException e) + { + + } + } + + public static junit.framework.Test suite() + { + return new junit.framework.TestSuite(FieldTablePropertyTest.class); + } +} diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java index a685e75a29..5353a19d13 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java @@ -47,6 +47,7 @@ public class MapMessageTest extends TestCase implements MessageListener private final List<String> messages = new ArrayList<String>(); private int _count = 100; public String _connectionString = "vm://:1"; + private byte[] _bytes = {99, 98, 97, 96, 95}; protected void setUp() throws Exception { @@ -104,9 +105,31 @@ public class MapMessageTest extends TestCase implements MessageListener MapMessage message = _session.createMapMessage(); message.setBoolean("odd", i / 2 == 0); + message.setByte("byte", (byte) Byte.MAX_VALUE); + + message.setBytes("bytes", _bytes); + message.setChar("char", (char) 'c'); + message.setDouble("double", (double) Double.MAX_VALUE); + message.setFloat("float", (float) Float.MAX_VALUE); + message.setInt("messageNumber", i); + message.setInt("int", (int) Integer.MAX_VALUE); + + message.setLong("long", (long) Long.MAX_VALUE); + message.setShort("short", (short) Short.MAX_VALUE); message.setString("message", text); + + message.setObject("object-bool", true); + message.setObject("object-byte", Byte.MAX_VALUE); + message.setObject("object-bytes", _bytes); + message.setObject("object-char", 'c'); + message.setObject("object-double", Double.MAX_VALUE); + message.setObject("object-float", Float.MAX_VALUE); + message.setObject("object-int", Integer.MAX_VALUE); + message.setObject("object-long", Long.MAX_VALUE); + message.setObject("object-short", Short.MAX_VALUE); + producer.send(message); } } @@ -130,7 +153,31 @@ public class MapMessageTest extends TestCase implements MessageListener { actual.add(m.getString("message")); assertEqual(m.getInt("messageNumber"), count); - assertEqual(m.getBoolean("odd"), count / 2 == 0); + + + assertEqual(count / 2 == 0, m.getBoolean("odd")); + assertEqual((byte) Byte.MAX_VALUE, m.getByte("byte")); + + assertBytesEqual(_bytes, m.getBytes("bytes")); + assertEqual((char) 'c', m.getChar("char")); + assertEqual((double) Double.MAX_VALUE, m.getDouble("double")); + assertEqual((float) Float.MAX_VALUE, m.getFloat("float")); + + assertEqual(count, m.getInt("messageNumber")); + assertEqual((int) Integer.MAX_VALUE, m.getInt("int")); + assertEqual((long) Long.MAX_VALUE, m.getLong("long")); + assertEqual((short) Short.MAX_VALUE, m.getShort("short")); + + assertEqual(true, m.getObject("object-bool")); + assertEqual(Byte.MAX_VALUE, m.getObject("object-byte")); + assertBytesEqual(_bytes, (byte[]) m.getObject("object-bytes")); + assertEqual('c', m.getObject("object-char")); + assertEqual(Double.MAX_VALUE, m.getObject("object-double")); + assertEqual(Float.MAX_VALUE, m.getObject("object-float")); + assertEqual(Integer.MAX_VALUE, m.getObject("object-int")); + assertEqual(Long.MAX_VALUE, m.getObject("object-long")); + assertEqual(Short.MAX_VALUE, m.getObject("object-short")); + try { @@ -153,7 +200,7 @@ public class MapMessageTest extends TestCase implements MessageListener Assert.fail("Message should be writeable"); } - //Check property write status + //Check property write status try { m.setStringProperty("test", "test"); @@ -181,6 +228,17 @@ public class MapMessageTest extends TestCase implements MessageListener assertEqual(messages.iterator(), actual.iterator()); } + private void assertBytesEqual(byte[] expected, byte[] actual) + { + Assert.assertEquals(expected.length, actual.length); + + for (int index = 0; index < expected.length; index++) + { + Assert.assertEquals(expected[index], actual[index]); + } + } + + private static void assertEqual(Iterator expected, Iterator actual) { List<String> errors = new ArrayList<String>(); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java index de7e12ac61..02f371e81b 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java @@ -20,32 +20,37 @@ */ package org.apache.qpid.test.unit.basic; +import junit.framework.Assert; +import junit.framework.TestCase; +import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.message.JMSTextMessage; import org.apache.qpid.test.VMBrokerSetup; -import org.apache.log4j.Logger; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Queue; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import javax.jms.*; - -import junit.framework.TestCase; -import junit.framework.Assert; public class PropertyValueTest extends TestCase implements MessageListener { private static final Logger _logger = Logger.getLogger(PropertyValueTest.class); + private int count = 0; private AMQConnection _connection; private Destination _destination; private AMQSession _session; private final List<JMSTextMessage> received = new ArrayList<JMSTextMessage>(); private final List<String> messages = new ArrayList<String>(); - private int _count = 1;//100; + private int _count = 100; public String _connectionString = "vm://:1"; protected void setUp() throws Exception @@ -104,25 +109,31 @@ public class PropertyValueTest extends TestCase implements MessageListener Message m = _session.createTextMessage(text); m.setBooleanProperty("Bool", true); -// m.setByteProperty("Byte", (byte) Byte.MAX_VALUE); -// m.setDoubleProperty("Double", (double) Double.MAX_VALUE); -// m.setFloatProperty("Float", (float) Float.MAX_VALUE); -// m.setIntProperty("Int", (int) Integer.MAX_VALUE); + + m.setByteProperty("Byte", (byte) Byte.MAX_VALUE); + m.setDoubleProperty("Double", (double) Double.MAX_VALUE); + m.setFloatProperty("Float", (float) Float.MAX_VALUE); + m.setIntProperty("Int", (int) Integer.MAX_VALUE); + m.setJMSCorrelationID("Correlation"); m.setJMSPriority(100); - // Set Q - //m.setJMSReplyTo(_session.Queue("TestReply")); - - // Temporary Queue - Queue q = _session.createTemporaryQueue(); - m.setJMSReplyTo(q);//Queue("TestReply")); + // Queue + Queue q = //_session.createTemporaryQueue(); + q = new AMQQueue("TestReply"); + m.setJMSReplyTo(q); m.setStringProperty("TempQueue", q.toString()); -// m.setJMSType("Test"); + + _logger.info("Message:" + m); + + Assert.assertEquals("Check temp queue has been set correctly", + m.getJMSReplyTo().toString(), m.getStringProperty("TempQueue")); + + m.setJMSType("Test"); m.setLongProperty("UnsignedInt", (long) 4294967295L); -// m.setLongProperty("Long", (long) Long.MAX_VALUE); + m.setLongProperty("Long", (long) Long.MAX_VALUE); -// m.setShortProperty("Short", (short) Short.MAX_VALUE); + m.setShortProperty("Short", (short) Short.MAX_VALUE); m.setStringProperty("String", "Test"); _logger.info("Sending Msg:" + m); @@ -152,35 +163,31 @@ public class PropertyValueTest extends TestCase implements MessageListener Assert.assertEquals("Check Boolean properties are correctly transported", true, m.getBooleanProperty("Bool")); -// Assert.assertEquals("Check Byte properties are correctly transported", -// (byte) Byte.MAX_VALUE, m.getByteProperty("Byte")); -// Assert.assertEquals("Check Double properties are correctly transported", -// (double) Double.MAX_VALUE, m.getDoubleProperty("Double")); -// Assert.assertEquals("Check Float properties are correctly transported", -// (float) Float.MAX_VALUE, m.getFloatProperty("Float")); -// Assert.assertEquals("Check Int properties are correctly transported", -// (int) Integer.MAX_VALUE, m.getIntProperty("Int")); + Assert.assertEquals("Check Byte properties are correctly transported", + (byte) Byte.MAX_VALUE, m.getByteProperty("Byte")); + Assert.assertEquals("Check Double properties are correctly transported", + (double) Double.MAX_VALUE, m.getDoubleProperty("Double")); + Assert.assertEquals("Check Float properties are correctly transported", + (float) Float.MAX_VALUE, m.getFloatProperty("Float")); + Assert.assertEquals("Check Int properties are correctly transported", + (int) Integer.MAX_VALUE, m.getIntProperty("Int")); Assert.assertEquals("Check CorrelationID properties are correctly transported", "Correlation", m.getJMSCorrelationID()); // Assert.assertEquals("Check Priority properties are correctly transported", // 100, m.getJMSPriority()); - //Set Queue -// Assert.assertEquals("Check ReplyTo properties are correctly transported", -// _session.createQueue("TestReply"), m.getJMSReplyTo()); - - //Temporary Queue + // Queue Assert.assertEquals("Check ReplyTo properties are correctly transported", m.getStringProperty("TempQueue"), m.getJMSReplyTo().toString()); // Assert.assertEquals("Check Type properties are correctly transported", // "Test", m.getJMSType()); -// Assert.assertEquals("Check Short properties are correctly transported", -// (short) Short.MAX_VALUE, m.getShortProperty("Short")); + Assert.assertEquals("Check Short properties are correctly transported", + (short) Short.MAX_VALUE, m.getShortProperty("Short")); Assert.assertEquals("Check UnsignedInt properties are correctly transported", (long) 4294967295L, m.getLongProperty("UnsignedInt")); -// Assert.assertEquals("Check Long properties are correctly transported", -// (long)Long.MAX_VALUE, m.getLongProperty("Long")); + Assert.assertEquals("Check Long properties are correctly transported", + (long) Long.MAX_VALUE, m.getLongProperty("Long")); Assert.assertEquals("Check String properties are correctly transported", "Test", m.getStringProperty("String")); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java index dfbec81549..cd3954fbcb 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java @@ -28,6 +28,7 @@ import org.apache.qpid.client.vmbroker.AMQVMBrokerCreationException; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.client.message.JMSTextMessage; import org.apache.qpid.test.VMBrokerSetup; +import org.apache.log4j.Logger; import java.util.ArrayList; import java.util.Iterator; @@ -39,6 +40,8 @@ import junit.framework.Assert; public class TextMessageTest extends TestCase implements MessageListener { + private static final Logger _logger = Logger.getLogger(TextMessageTest.class); + private AMQConnection _connection; private Destination _destination; private AMQSession _session; @@ -100,7 +103,11 @@ public class TextMessageTest extends TestCase implements MessageListener { String text = "Message " + i; messages.add(text); - producer.send(_session.createTextMessage(text)); + Message m = _session.createTextMessage(text); + m.setStringProperty("String", "hello"); + + _logger.info("Sending Msg:" + m); + producer.send(m); } } |