You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ra...@apache.org on 2012/09/28 19:27:51 UTC
svn commit: r1391565 - in /qpid/trunk/qpid/java:
client/example/src/main/java/org/apache/qpid/example/
client/src/main/java/org/apache/qpid/client/
client/src/main/java/org/apache/qpid/client/message/
client/src/main/java/org/apache/qpid/jms/ common/sr...
Author: rajith
Date: Fri Sep 28 17:27:50 2012
New Revision: 1391565
URL: http://svn.apache.org/viewvc?rev=1391565&view=rev
Log:
QPID-3906 List Message support for JMS.
Added:
qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListReceiver.java
qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListSender.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessage.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessageFactory.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ListMessage.java
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/Session.java
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
Added: qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListReceiver.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListReceiver.java?rev=1391565&view=auto
==============================================================================
--- qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListReceiver.java (added)
+++ qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListReceiver.java Fri Sep 28 17:27:50 2012
@@ -0,0 +1,101 @@
+/*
+ *
+ * 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.example;
+
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.MapMessage;
+import javax.jms.StreamMessage;
+import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.jms.MessageEOFException;
+
+import org.apache.qpid.client.AMQAnyDestination;
+import org.apache.qpid.client.AMQConnection;
+
+import org.apache.qpid.jms.ListMessage;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+
+public class ListReceiver {
+
+ public static void main(String[] args) throws Exception
+ {
+ if (args.length != 1) {
+ System.out.println("Usage: java org.apache.qpid.example.ListReceiver <-l | -m | -s>");
+ System.out.println("where:");
+ System.out.println("\t-l\tAccept ListMessage and print it");
+ System.out.println("\t-m\tAccept ListMessage as a MapMessage");
+ System.out.println("\t-s\tAccept ListMessage as a StreamMessage");
+ return;
+ }
+
+ Connection connection =
+ new AMQConnection("amqp://guest:guest@test/?brokerlist='tcp://localhost:5672'");
+
+ connection.start();
+
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Destination queue = new AMQAnyDestination("ADDR:message_queue; {create: always}");
+ MessageConsumer consumer = session.createConsumer(queue);
+
+ if (args[0].equals("-l")) {
+ System.out.println("Receiving as ListMessage");
+ ListMessage m = (ListMessage)consumer.receive();
+ System.out.println(m);
+ System.out.println("==========================================");
+ System.out.println("Printing list contents:");
+ Iterator i = m.iterator();
+ while(i.hasNext())
+ System.out.println(i.next());
+ }
+ else if (args[0].equals("-m")) {
+ System.out.println("Receiving as MapMessage");
+ MapMessage m = (MapMessage)consumer.receive();
+ System.out.println(m);
+ System.out.println("==========================================");
+ System.out.println("Printing map contents:");
+ Enumeration keys = m.getMapNames();
+ while(keys.hasMoreElements()) {
+ String key = (String)keys.nextElement();
+ System.out.println(key + " => " + m.getObject(key));
+ }
+ }
+ else if (args[0].equals("-s")) {
+ System.out.println("Receiving as StreamMessage");
+ StreamMessage m = (StreamMessage)consumer.receive();
+ System.out.println(m);
+ System.out.println("==========================================");
+ System.out.println("Printing stream contents:");
+ try {
+ while(true)
+ System.out.println(m.readObject());
+ }
+ catch (MessageEOFException e) {
+ // DONE
+ }
+ }
+
+ connection.close();
+ }
+}
Added: qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListSender.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListSender.java?rev=1391565&view=auto
==============================================================================
--- qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListSender.java (added)
+++ qpid/trunk/qpid/java/client/example/src/main/java/org/apache/qpid/example/ListSender.java Fri Sep 28 17:27:50 2012
@@ -0,0 +1,86 @@
+/*
+ *
+ * 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.example;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+
+import org.apache.qpid.client.AMQAnyDestination;
+import org.apache.qpid.client.AMQConnection;
+
+import org.apache.qpid.jms.ListMessage;
+
+
+public class ListSender {
+
+ public static void main(String[] args) throws Exception
+ {
+ Connection connection =
+ new AMQConnection("amqp://guest:guest@test/?brokerlist='tcp://localhost:5672'");
+
+ Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ Destination queue = new AMQAnyDestination("ADDR:message_queue; {create: always}");
+ MessageProducer producer = session.createProducer(queue);
+
+ ListMessage m = ((org.apache.qpid.jms.Session)session).createListMessage();
+ m.setIntProperty("Id", 987654321);
+ m.setStringProperty("name", "Widget");
+ m.setDoubleProperty("price", 0.99);
+
+ List<String> colors = new ArrayList<String>();
+ colors.add("red");
+ colors.add("green");
+ colors.add("white");
+ m.add(colors);
+
+ Map<String,Double> dimensions = new HashMap<String,Double>();
+ dimensions.put("length",10.2);
+ dimensions.put("width",5.1);
+ dimensions.put("depth",2.0);
+ m.add(dimensions);
+
+ List<List<Integer>> parts = new ArrayList<List<Integer>>();
+ parts.add(Arrays.asList(new Integer[] {1,2,5}));
+ parts.add(Arrays.asList(new Integer[] {8,2,5}));
+ m.add(parts);
+
+ Map<String,Object> specs = new HashMap<String,Object>();
+ specs.put("colours", colors);
+ specs.put("dimensions", dimensions);
+ specs.put("parts", parts);
+ m.add(specs);
+
+ producer.send((Message)m);
+ System.out.println("Sent: " + m);
+ connection.close();
+ }
+
+}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java Fri Sep 28 17:27:50 2012
@@ -179,6 +179,10 @@ public class AMQConnection extends Close
// new amqp-0-10 encoded format.
private boolean _useLegacyMapMessageFormat;
+ // Indicates whether to use the old stream message format or the
+ // new amqp-0-10 list encoded format.
+ private boolean _useLegacyStreamMessageFormat;
+
//used to track the last failover time for
//Address resolution purposes
private volatile long _lastFailoverTime = 0;
@@ -294,6 +298,17 @@ public class AMQConnection extends Close
_useLegacyMapMessageFormat = Boolean.getBoolean(ClientProperties.USE_LEGACY_MAP_MESSAGE_FORMAT);
}
+ if (connectionURL.getOption(ConnectionURL.OPTIONS_USE_LEGACY_STREAM_MESSAGE_FORMAT) != null)
+ {
+ _useLegacyStreamMessageFormat = Boolean.parseBoolean(
+ connectionURL.getOption(ConnectionURL.OPTIONS_USE_LEGACY_STREAM_MESSAGE_FORMAT));
+ }
+ else
+ {
+ // use the default value set for all connections
+ _useLegacyStreamMessageFormat = Boolean.getBoolean(ClientProperties.USE_LEGACY_STREAM_MESSAGE_FORMAT);
+ }
+
String amqpVersion = System.getProperty((ClientProperties.AMQP_VERSION), "0-10");
if (_logger.isDebugEnabled())
{
@@ -1498,6 +1513,11 @@ public class AMQConnection extends Close
return _useLegacyMapMessageFormat;
}
+ public boolean isUseLegacyStreamMessageFormat()
+ {
+ return _useLegacyStreamMessageFormat;
+ }
+
private void verifyClientID() throws AMQException
{
if (Boolean.getBoolean(ClientProperties.QPID_VERIFY_CLIENT_ID))
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java Fri Sep 28 17:27:50 2012
@@ -35,6 +35,7 @@ import org.apache.qpid.client.failover.F
import org.apache.qpid.client.failover.FailoverRetrySupport;
import org.apache.qpid.client.message.AMQMessageDelegateFactory;
import org.apache.qpid.client.message.AMQPEncodedMapMessage;
+import org.apache.qpid.client.message.AMQPEncodedListMessage;
import org.apache.qpid.client.message.AbstractJMSMessage;
import org.apache.qpid.client.message.CloseConsumerMessage;
import org.apache.qpid.client.message.JMSBytesMessage;
@@ -50,6 +51,7 @@ import org.apache.qpid.configuration.Cli
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.jms.Session;
+import org.apache.qpid.jms.ListMessage;
import org.apache.qpid.protocol.AMQConstant;
import org.apache.qpid.thread.Threading;
import org.apache.qpid.transport.SessionException;
@@ -123,6 +125,8 @@ public abstract class AMQSession<C exten
private final boolean _useAMQPEncodedMapMessage;
+ private final boolean _useAMQPEncodedStreamMessage;
+
/**
* Flag indicating to start dispatcher as a daemon thread
*/
@@ -398,6 +402,7 @@ public abstract class AMQSession<C exten
MessageFactoryRegistry messageFactoryRegistry, int defaultPrefetchHighMark, int defaultPrefetchLowMark)
{
_useAMQPEncodedMapMessage = con == null ? true : !con.isUseLegacyMapMessageFormat();
+ _useAMQPEncodedStreamMessage = con == null ? true : !con.isUseLegacyStreamMessageFormat();
_strictAMQP = Boolean.parseBoolean(System.getProperties().getProperty(STRICT_AMQP, STRICT_AMQP_DEFAULT));
_strictAMQPFATAL =
Boolean.parseBoolean(System.getProperties().getProperty(STRICT_AMQP_FATAL, STRICT_AMQP_FATAL_DEFAULT));
@@ -1111,6 +1116,14 @@ public abstract class AMQSession<C exten
}
}
+ public ListMessage createListMessage() throws JMSException
+ {
+ checkNotClosed();
+ AMQPEncodedListMessage msg = new AMQPEncodedListMessage(getMessageDelegateFactory());
+ msg.setAMQSession(this);
+ return msg;
+ }
+
public MapMessage createMapMessage() throws JMSException
{
checkNotClosed();
@@ -1353,17 +1366,15 @@ public abstract class AMQSession<C exten
public StreamMessage createStreamMessage() throws JMSException
{
- // This method needs to be improved. Throwables only arrive here from the mina : exceptionRecived
- // calls through connection.closeAllSessions which is also called by the public connection.close()
- // with a null cause
- // When we are closing the Session due to a protocol session error we simply create a new AMQException
- // with the correct error code and text this is cleary WRONG as the instanceof check below will fail.
- // We need to determin here if the connection should be
-
- synchronized (getFailoverMutex())
+ checkNotClosed();
+ if (_useAMQPEncodedMapMessage)
+ {
+ AMQPEncodedListMessage msg = new AMQPEncodedListMessage(getMessageDelegateFactory());
+ msg.setAMQSession(this);
+ return msg;
+ }
+ else
{
- checkNotClosed();
-
JMSStreamMessage msg = new JMSStreamMessage(getMessageDelegateFactory());
msg.setAMQSession(this);
return msg;
Added: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessage.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessage.java?rev=1391565&view=auto
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessage.java (added)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessage.java Fri Sep 28 17:27:50 2012
@@ -0,0 +1,949 @@
+/*
+ * 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.client.message;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.AMQException;
+
+import org.apache.qpid.transport.codec.BBDecoder;
+import org.apache.qpid.transport.codec.BBEncoder;
+
+import javax.jms.JMSException;
+import javax.jms.MessageFormatException;
+import javax.jms.MessageEOFException;
+import java.lang.NumberFormatException;
+import java.nio.ByteBuffer;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+public class AMQPEncodedListMessage extends JMSStreamMessage implements
+ org.apache.qpid.jms.ListMessage, javax.jms.MapMessage
+{
+ private static final Logger _logger = LoggerFactory
+ .getLogger(AMQPEncodedListMessage.class);
+
+ public static final String MIME_TYPE = "amqp/list";
+
+ private List<Object> _list = new ArrayList<Object>();
+
+ public AMQPEncodedListMessage(AMQMessageDelegateFactory delegateFactory) throws JMSException
+ {
+ super(delegateFactory);
+ currentIndex = 0;
+ }
+
+ AMQPEncodedListMessage(AMQMessageDelegate delegate, ByteBuffer data)
+ throws AMQException
+ {
+ super(delegate, data);
+ if (data != null)
+ {
+ try
+ {
+ populateListFromData(data);
+ }
+ catch (JMSException je)
+ {
+ throw new AMQException(null,
+ "Error populating ListMessage from ByteBuffer", je);
+ }
+ }
+ currentIndex = 0;
+ }
+
+ public String toBodyString() throws JMSException
+ {
+ return _list == null ? "" : _list.toString();
+ }
+
+ protected String getMimeType()
+ {
+ return MIME_TYPE;
+ }
+
+ /* ListMessage Implementation. */
+ public boolean add(Object a) throws JMSException
+ {
+ checkWritable();
+ checkAllowedValue(a);
+ checkIfElementIsOfCorrectType(a);
+ try
+ {
+ return _list.add(a);
+ }
+ catch (Exception e)
+ {
+ MessageFormatException ex = new MessageFormatException("Error adding to ListMessage");
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+
+ }
+ }
+
+ public void add(int index, Object element) throws JMSException
+ {
+ checkWritable();
+ checkAllowedValue(element);
+ try
+ {
+ _list.add(index, element);
+ }
+ catch (Exception e)
+ {
+ MessageFormatException ex = new MessageFormatException("Error adding to ListMessage at "
+ + index);
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ }
+
+ public boolean contains(Object o) throws JMSException
+ {
+ try
+ {
+ return _list.contains(o);
+ }
+ catch (Exception e)
+ {
+ JMSException ex = new JMSException("Error when looking up object");
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ }
+
+ public Object get(int index) throws JMSException
+ {
+ try
+ {
+ return _list.get(index);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ MessageFormatException ex = new MessageFormatException(
+ "Error getting ListMessage element at " + index);
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ }
+
+ public int indexOf(Object o)
+ {
+ return _list.indexOf(o);
+ }
+
+ public Iterator iterator()
+ {
+ return _list.iterator();
+ }
+
+ public Object remove(int index) throws JMSException
+ {
+ checkWritable();
+ try
+ {
+ return _list.remove(index);
+ }
+ catch (IndexOutOfBoundsException e)
+ {
+ MessageFormatException ex = new MessageFormatException(
+ "Error removing ListMessage element at " + index);
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ }
+
+ public boolean remove(Object o) throws JMSException
+ {
+ checkWritable();
+ return _list.remove(o);
+ }
+
+ public Object set(int index, Object element) throws JMSException
+ {
+ checkWritable();
+ checkAllowedValue(element);
+ try
+ {
+ return _list.set(index, element);
+ }
+ catch (Exception e)
+ {
+ MessageFormatException ex = new MessageFormatException(
+ "Error setting ListMessage element at " + index);
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ }
+
+ public int size()
+ {
+ return _list.size();
+ }
+
+ public Object[] toArray()
+ {
+ return _list.toArray();
+ }
+
+ /* MapMessage Implementation */
+ private boolean isValidIndex(int index)
+ {
+ if (index >= 0 && index < size())
+ return true;
+
+ return false;
+ }
+
+ private int getValidIndex(String indexStr) throws JMSException
+ {
+ if ((indexStr == null) || indexStr.equals(""))
+ {
+ throw new IllegalArgumentException(
+ "Property name cannot be null, or the empty String.");
+ }
+
+ int index = 0;
+ try
+ {
+ index = Integer.parseInt(indexStr);
+ }
+ catch (NumberFormatException e)
+ {
+ JMSException ex = new JMSException("Invalid index string");
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+ if (isValidIndex(index))
+ return index;
+
+ throw new MessageFormatException("Property " + indexStr
+ + " should be a valid index into the list of size " + size());
+ }
+
+ private void setGenericForMap(String propName, Object o)
+ throws JMSException
+ {
+ checkWritable();
+ int index = 0;
+ try
+ {
+ index = Integer.parseInt(propName);
+ }
+ catch (NumberFormatException e)
+ {
+ JMSException ex = new JMSException("The property name should be a valid index");
+ ex.initCause(e);
+ ex.setLinkedException(e);
+ throw ex;
+ }
+
+ if (isValidIndex(index))
+ remove(index);
+ add(index, o);
+ }
+
+ public boolean getBoolean(String propName) throws JMSException
+ {
+ return getBooleanImpl(getValidIndex(propName));
+ }
+
+ public byte getByte(String propName) throws JMSException
+ {
+ return getByteImpl(getValidIndex(propName));
+ }
+
+ public short getShort(String propName) throws JMSException
+ {
+ return getShortImpl(getValidIndex(propName));
+ }
+
+ public int getInt(String propName) throws JMSException
+ {
+ return getIntImpl(getValidIndex(propName));
+ }
+
+ public long getLong(String propName) throws JMSException
+ {
+ return getLongImpl(getValidIndex(propName));
+ }
+
+ public char getChar(String propName) throws JMSException
+ {
+ return getCharImpl(getValidIndex(propName));
+
+ }
+
+ public float getFloat(String propName) throws JMSException
+ {
+ return getFloatImpl(getValidIndex(propName));
+ }
+
+ public double getDouble(String propName) throws JMSException
+ {
+ return getDoubleImpl(getValidIndex(propName));
+ }
+
+ public String getString(String propName) throws JMSException
+ {
+ return getStringImpl(getValidIndex(propName));
+ }
+
+ public byte[] getBytes(String propName) throws JMSException
+ {
+ return getBytesImpl(getValidIndex(propName));
+ }
+
+ public Object getObject(String propName) throws JMSException
+ {
+ return get(getValidIndex(propName));
+ }
+
+ public Enumeration getMapNames() throws JMSException
+ {
+ List<String> names = new ArrayList<String>();
+ int i = 0;
+
+ while (i < size())
+ names.add(Integer.toString(i++));
+
+ return Collections.enumeration(names);
+ }
+
+ public void setBoolean(String propName, boolean b) throws JMSException
+ {
+ setGenericForMap(propName, b);
+ }
+
+ public void setByte(String propName, byte b) throws JMSException
+ {
+ setGenericForMap(propName, b);
+ }
+
+ public void setShort(String propName, short i) throws JMSException
+ {
+ setGenericForMap(propName, i);
+ }
+
+ public void setChar(String propName, char c) throws JMSException
+ {
+ setGenericForMap(propName, c);
+ }
+
+ public void setInt(String propName, int i) throws JMSException
+ {
+ setGenericForMap(propName, i);
+ }
+
+ public void setLong(String propName, long l) throws JMSException
+ {
+ setGenericForMap(propName, l);
+ }
+
+ public void setFloat(String propName, float v) throws JMSException
+ {
+ setGenericForMap(propName, v);
+ }
+
+ public void setDouble(String propName, double v) throws JMSException
+ {
+ setGenericForMap(propName, v);
+ }
+
+ public void setString(String propName, String string1) throws JMSException
+ {
+ setGenericForMap(propName, string1);
+ }
+
+ public void setBytes(String propName, byte[] bytes) throws JMSException
+ {
+ setGenericForMap(propName, bytes);
+ }
+
+ public void setBytes(String propName, byte[] bytes, int offset, int length)
+ throws JMSException
+ {
+ if ((offset == 0) && (length == bytes.length))
+ {
+ setBytes(propName, bytes);
+ }
+ else
+ {
+ byte[] newBytes = new byte[length];
+ System.arraycopy(bytes, offset, newBytes, 0, length);
+ setBytes(propName, newBytes);
+ }
+ }
+
+ public void setObject(String propName, Object value) throws JMSException
+ {
+ checkAllowedValue(value);
+ setGenericForMap(propName, value);
+ }
+
+ public boolean itemExists(String propName) throws JMSException
+ {
+ return isValidIndex(Integer.parseInt(propName));
+ }
+
+ // StreamMessage methods
+
+ private int currentIndex;
+
+ private static final String MESSAGE_EOF_EXCEPTION = "End of Stream (ListMessage) at index: ";
+
+ private void setGenericForStream(Object o) throws JMSException
+ {
+ checkWritable();
+ add(o);
+ currentIndex++;
+ }
+
+ @Override
+ public boolean readBoolean() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getBooleanImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public byte readByte() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getByteImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public int readBytes(byte[] value) throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ {
+ ByteBuffer res = ByteBuffer.wrap(getBytesImpl(currentIndex++));
+ res.get(value);
+ return value.length;
+ }
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public char readChar() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getCharImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public double readDouble() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getDoubleImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public float readFloat() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getFloatImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public int readInt() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getIntImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public long readLong() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getLongImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public Object readObject() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return get(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public short readShort() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getShortImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public String readString() throws JMSException
+ {
+ checkReadable();
+ if (isValidIndex(currentIndex))
+ return getStringImpl(currentIndex++);
+
+ throw new MessageEOFException(MESSAGE_EOF_EXCEPTION + currentIndex);
+ }
+
+ @Override
+ public void writeBoolean(boolean value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeByte(byte value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeBytes(byte[] value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeBytes(byte[] value, int offset, int length)
+ throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeChar(char value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeDouble(double value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeFloat(float value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeInt(int value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeLong(long value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeObject(Object value) throws JMSException
+ {
+ checkAllowedValue(value);
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeShort(short value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ @Override
+ public void writeString(String value) throws JMSException
+ {
+ setGenericForStream(value);
+ }
+
+ // Common methods
+
+ private void checkAllowedValue(Object value) throws MessageFormatException
+ {
+ if (((value instanceof Boolean) || (value instanceof Byte)
+ || (value instanceof Short) || (value instanceof Integer)
+ || (value instanceof Long) || (value instanceof Character)
+ || (value instanceof Float) || (value instanceof Double)
+ || (value instanceof String) || (value instanceof byte[])
+ || (value instanceof List) || (value instanceof Map)
+ || (value instanceof UUID) || (value == null)) == false)
+ {
+ throw new MessageFormatException("Invalid value " + value
+ + "of type " + value.getClass().getName() + ".");
+ }
+ }
+
+ @Override
+ public void reset()
+ {
+ currentIndex = 0;
+ setReadable(true);
+ }
+
+ @Override
+ public void clearBody() throws JMSException
+ {
+ super.clearBody();
+ _list.clear();
+ currentIndex = 0;
+ setReadable(false);
+ }
+
+ private boolean getBooleanImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Boolean)
+ {
+ return ((Boolean) value).booleanValue();
+ }
+ else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Boolean.valueOf((String) value);
+ }
+ catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName()
+ + " cannot be converted to boolean.");
+ }
+
+ private byte getByteImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Byte)
+ {
+ return ((Byte) value).byteValue();
+ }
+ else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Byte.valueOf((String) value).byteValue();
+ } catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName() + " cannot be converted to byte.");
+ }
+
+ private short getShortImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Short)
+ {
+ return ((Short) value).shortValue();
+ }
+ else if (value instanceof Byte)
+ {
+ return ((Byte) value).shortValue();
+ }
+ else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Short.valueOf((String) value).shortValue();
+ } catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName() + " cannot be converted to short.");
+ }
+
+ private int getIntImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Integer)
+ {
+ return ((Integer) value).intValue();
+ }
+
+ if (value instanceof Short)
+ {
+ return ((Short) value).intValue();
+ }
+
+ if (value instanceof Byte)
+ {
+ return ((Byte) value).intValue();
+ }
+
+ if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Integer.valueOf((String) value).intValue();
+ }
+ catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName() + " cannot be converted to int.");
+ }
+
+ private long getLongImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Long)
+ {
+ return ((Long) value).longValue();
+ } else if (value instanceof Integer)
+ {
+ return ((Integer) value).longValue();
+ }
+
+ if (value instanceof Short)
+ {
+ return ((Short) value).longValue();
+ }
+
+ if (value instanceof Byte)
+ {
+ return ((Byte) value).longValue();
+ } else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Long.valueOf((String) value).longValue();
+ } catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName() + " cannot be converted to long.");
+ }
+
+ private char getCharImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Character)
+ {
+ return ((Character) value).charValue();
+ } else if (value == null)
+ {
+ throw new NullPointerException("Property at " + index
+ + " has null value and therefore cannot "
+ + "be converted to char.");
+ } else
+ {
+ throw new MessageFormatException("Property at " + index
+ + " of type " + value.getClass().getName()
+ + " cannot be converted to a char.");
+ }
+ }
+
+ private float getFloatImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Float)
+ {
+ return ((Float) value).floatValue();
+ }
+ else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Float.valueOf((String) value).floatValue();
+ }
+ catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName() + " cannot be converted to float.");
+ }
+
+ private double getDoubleImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if (value instanceof Double)
+ {
+ return ((Double) value).doubleValue();
+ }
+ else if (value instanceof Float)
+ {
+ return ((Float) value).doubleValue();
+ }
+ else if ((value instanceof String) || (value == null))
+ {
+ try
+ {
+ return Double.valueOf((String) value).doubleValue();
+ }
+ catch (NumberFormatException e)
+ {
+ // FALLTHROUGH to exception
+ }
+ }
+
+ throw new MessageFormatException("Property at " + index + " of type "
+ + value.getClass().getName()
+ + " cannot be converted to double.");
+ }
+
+ private String getStringImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if ((value instanceof String) || (value == null))
+ {
+ return (String) value;
+ } else if (value instanceof byte[])
+ {
+ throw new MessageFormatException("Property at " + index
+ + " of type byte[] " + "cannot be converted to String.");
+ } else
+ {
+ return value.toString();
+ }
+ }
+
+ private byte[] getBytesImpl(int index) throws JMSException
+ {
+ Object value = get(index);
+
+ if ((value instanceof byte[]) || (value == null))
+ {
+ return (byte[]) value;
+ }
+ else
+ {
+ throw new MessageFormatException("Property at " + index
+ + " of type " + value.getClass().getName()
+ + " cannot be converted to byte[].");
+ }
+ }
+
+ protected void populateListFromData(ByteBuffer data) throws JMSException
+ {
+ if (data != null)
+ {
+ data.rewind();
+ BBDecoder decoder = new BBDecoder();
+ decoder.init(data);
+ _list = decoder.readList();
+ }
+ else
+ {
+ _list.clear();
+ }
+ }
+
+ public ByteBuffer getData() throws JMSException
+ {
+ BBEncoder encoder = new BBEncoder(1024);
+ encoder.writeList(_list);
+ return encoder.segment();
+ }
+
+ public void setList(List<Object> l)
+ {
+ _list = l;
+ }
+
+ public List<Object> asList()
+ {
+ return _list;
+ }
+
+ private void checkIfElementIsOfCorrectType(Object obj) throws JMSException
+ {
+ if (!_list.isEmpty())
+ {
+ if (obj.getClass() != _list.get(0).getClass())
+ {
+ throw new MessageFormatException("List can only contain elements of the same type."+
+ " The first element of the list is of type " + _list.get(0).getClass() +
+ " ,while the element suplied here is of type " + obj.getClass());
+ }
+ }
+ }
+}
Added: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessageFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessageFactory.java?rev=1391565&view=auto
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessageFactory.java (added)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQPEncodedListMessageFactory.java Fri Sep 28 17:27:50 2012
@@ -0,0 +1,44 @@
+package org.apache.qpid.client.message;
+/*
+ *
+ * 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.
+ *
+ */
+
+
+import org.apache.qpid.AMQException;
+
+import javax.jms.JMSException;
+import java.nio.ByteBuffer;
+
+public class AMQPEncodedListMessageFactory extends AbstractJMSMessageFactory
+{
+ @Override
+ protected AbstractJMSMessage createMessage(AMQMessageDelegate delegate,
+ ByteBuffer data) throws AMQException
+ {
+ return new AMQPEncodedListMessage(delegate,data);
+ }
+
+
+ public AbstractJMSMessage createMessage(
+ AMQMessageDelegateFactory delegateFactory) throws JMSException
+ {
+ return new AMQPEncodedListMessage(delegateFactory);
+ }
+}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/JMSStreamMessage.java Fri Sep 28 17:27:50 2012
@@ -44,7 +44,12 @@ public class JMSStreamMessage extends Ab
}
+ JMSStreamMessage(AMQMessageDelegateFactory delegateFactory, ByteBuffer data) throws AMQException
+ {
+ super(delegateFactory, data!=null);
+ _typedBytesContentWriter = new TypedBytesContentWriter();
+ }
JMSStreamMessage(AMQMessageDelegate delegate, ByteBuffer data) throws AMQException
{
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/MessageFactoryRegistry.java Fri Sep 28 17:27:50 2012
@@ -66,6 +66,7 @@ public class MessageFactoryRegistry
mf.registerFactory(JMSObjectMessage.MIME_TYPE, new JMSObjectMessageFactory());
mf.registerFactory(JMSStreamMessage.MIME_TYPE, new JMSStreamMessageFactory());
mf.registerFactory(AMQPEncodedMapMessage.MIME_TYPE, new AMQPEncodedMapMessageFactory());
+ mf.registerFactory(AMQPEncodedListMessage.MIME_TYPE, new AMQPEncodedListMessageFactory());
mf.registerFactory(null, mf._default);
return mf;
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ConnectionURL.java Fri Sep 28 17:27:50 2012
@@ -38,6 +38,7 @@ public interface ConnectionURL
public static final String OPTIONS_SYNC_ACK = "sync_ack";
public static final String OPTIONS_SYNC_PUBLISH = "sync_publish";
public static final String OPTIONS_USE_LEGACY_MAP_MESSAGE_FORMAT = "use_legacy_map_msg_format";
+ public static final String OPTIONS_USE_LEGACY_STREAM_MESSAGE_FORMAT = "use_legacy_stream_msg_format";
public static final String OPTIONS_BROKERLIST = "brokerlist";
public static final String OPTIONS_FAILOVER = "failover";
public static final String OPTIONS_FAILOVER_CYCLE = "cyclecount";
Added: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ListMessage.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ListMessage.java?rev=1391565&view=auto
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ListMessage.java (added)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/ListMessage.java Fri Sep 28 17:27:50 2012
@@ -0,0 +1,55 @@
+/*
+ *
+ * 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.jms;
+
+import javax.jms.JMSException;
+
+import java.util.Iterator;
+import java.util.List;
+
+public interface ListMessage extends javax.jms.StreamMessage
+{
+ boolean add(Object e) throws JMSException;
+
+ void add(int index, Object e) throws JMSException;
+
+ boolean contains(Object e) throws JMSException;
+
+ Object get(int index) throws JMSException;
+
+ int indexOf(Object e) throws JMSException;
+
+ Iterator<Object> iterator() throws JMSException;
+
+ Object remove(int index) throws JMSException;
+
+ boolean remove(Object e)throws JMSException;
+
+ Object set(int index, Object e) throws JMSException;
+
+ int size() throws JMSException;
+
+ Object[] toArray() throws JMSException;
+
+ List<Object> asList() throws JMSException;
+
+ void setList(List<Object> l) throws JMSException;
+}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/Session.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/Session.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/Session.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/jms/Session.java Fri Sep 28 17:27:50 2012
@@ -21,6 +21,7 @@
package org.apache.qpid.jms;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.jms.ListMessage;
import javax.jms.Destination;
import javax.jms.JMSException;
@@ -100,4 +101,6 @@ public interface Session extends TopicSe
AMQShortString getDefaultTopicExchangeName();
AMQShortString getTemporaryQueueExchangeName();
+
+ ListMessage createListMessage() throws JMSException;
}
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java?rev=1391565&r1=1391564&r2=1391565&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/configuration/ClientProperties.java Fri Sep 28 17:27:50 2012
@@ -87,6 +87,8 @@ public class ClientProperties
public static final String USE_LEGACY_MAP_MESSAGE_FORMAT = "qpid.use_legacy_map_message";
+ public static final String USE_LEGACY_STREAM_MESSAGE_FORMAT = "qpid.use_legacy_stream_message";
+
public static final String AMQP_VERSION = "qpid.amqp.version";
public static final String QPID_VERIFY_CLIENT_ID = "qpid.verify_client_id";
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org