You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2013/05/15 15:15:05 UTC

svn commit: r1482809 - in /qpid/branches/0.22/qpid/java: ./ amqp-1-0-client-jms/ amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/ amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ amqp-1-0-client/ amqp-1-0-client/examp...

Author: rgodfrey
Date: Wed May 15 13:15:04 2013
New Revision: 1482809

URL: http://svn.apache.org/r1482809
Log:
Merge fixes for JMS AMQP 1-0 client from trunk to 0.22 release

Added:
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/MessageRejectedException.java
      - copied unchanged from r1481321, qpid/trunk/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/MessageRejectedException.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/LinkDetachedException.java
      - copied unchanged from r1481321, qpid/trunk/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/LinkDetachedException.java
Modified:
    qpid/branches/0.22/qpid/java/   (props changed)
    qpid/branches/0.22/qpid/java/amqp-1-0-client/   (props changed)
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/   (props changed)
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryTopicImpl.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Demo.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Dump.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Filesender.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Request.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Respond.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Send.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java
    qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Sender.java
    qpid/branches/0.22/qpid/java/amqp-1-0-common/   (props changed)
    qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundWriter.java
    qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/UnsignedLongWriter.java
    qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/codec/AMQPDescribedTypeRegistry.java
    qpid/branches/0.22/qpid/java/broker/   (props changed)
    qpid/branches/0.22/qpid/java/broker/bin/   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_1_0.java   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java   (props changed)
    qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java   (props changed)
    qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java   (props changed)
    qpid/branches/0.22/qpid/java/perftests/etc/   (props changed)
    qpid/branches/0.22/qpid/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java   (props changed)
    qpid/branches/0.22/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/CPPExcludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/Excludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/JavaBDBExcludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/JavaExcludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/JavaPre010Excludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/JavaTransientExcludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/XAExcludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.async.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.cluster.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.noprefetch.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.ssl.excludes   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.ssl.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/cpp.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-bdb.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-dby.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/java-mms.0-9-1.testprofile   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/log4j-test.xml   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/test-provider.properties   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/test_resources/   (props changed)
    qpid/branches/0.22/qpid/java/test-profiles/testprofile.defaults   (props changed)

Propchange: qpid/branches/0.22/qpid/java/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/amqp-1-0-client/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/amqp-1-0-client:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/amqp-1-0-client-jms:r1480584,1481290,1481321,1482609,1482729,1482770

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionFactoryImpl.java Wed May 15 13:15:04 2013
@@ -45,6 +45,7 @@ public class ConnectionFactoryImpl imple
 
     private String _queuePrefix;
     private String _topicPrefix;
+    private boolean _useBinaryMessageId;
 
     public ConnectionFactoryImpl(final String host,
                                  final int port,
@@ -100,6 +101,7 @@ public class ConnectionFactoryImpl imple
         ConnectionImpl connection = new ConnectionImpl(_host, _port, username, password, _clientId, _remoteHost, _ssl);
         connection.setQueuePrefix(_queuePrefix);
         connection.setTopicPrefix(_topicPrefix);
+        connection.setUseBinaryMessageId(_useBinaryMessageId);
         return connection;
     }
 
@@ -149,6 +151,9 @@ public class ConnectionFactoryImpl imple
         String password = null;
         String clientId = null;
         String remoteHost = null;
+
+        boolean binaryMessageId = true;
+
         if(userInfo != null)
         {
             String[] components = userInfo.split(":",2);
@@ -161,22 +166,26 @@ public class ConnectionFactoryImpl imple
         String query = url.getQuery();
         if(query != null)
         {
-           for(String param : query.split("&"))
-           {
-               String[] keyValuePair = param.split("=",2);
-               if(keyValuePair[0].equalsIgnoreCase("clientid"))
-               {
-                   clientId = keyValuePair[1];
-               }
-               else if(keyValuePair[0].equalsIgnoreCase("ssl"))
-               {
-                   ssl = Boolean.valueOf(keyValuePair[1]);
-               }
-               else if(keyValuePair[0].equalsIgnoreCase("remote-host"))
-               {
-                   remoteHost = keyValuePair[1];
-               }
-           }
+            for(String param : query.split("&"))
+            {
+                String[] keyValuePair = param.split("=",2);
+                if(keyValuePair[0].equalsIgnoreCase("clientid"))
+                {
+                    clientId = keyValuePair[1];
+                }
+                else if(keyValuePair[0].equalsIgnoreCase("ssl"))
+                {
+                    ssl = Boolean.valueOf(keyValuePair[1]);
+                }
+                else if(keyValuePair[0].equalsIgnoreCase("remote-host"))
+                {
+                    remoteHost = keyValuePair[1];
+                }
+                else if (keyValuePair[0].equalsIgnoreCase("binary-messageid"))
+                {
+                    binaryMessageId = Boolean.parseBoolean(keyValuePair[1]);
+                }
+            }
         }
 
         if(remoteHost == null)
@@ -184,7 +193,11 @@ public class ConnectionFactoryImpl imple
             remoteHost = host;
         }
 
-        return new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl);
+        ConnectionFactoryImpl connectionFactory =
+                new ConnectionFactoryImpl(host, port, username, password, clientId, remoteHost, ssl);
+        connectionFactory.setUseBinaryMessageId(binaryMessageId);
+
+        return connectionFactory;
 
     }
 
@@ -235,4 +248,9 @@ public class ConnectionFactoryImpl imple
     {
         _queuePrefix = queuePrefix;
     }
+
+    public void setUseBinaryMessageId(boolean useBinaryMessageId)
+    {
+        _useBinaryMessageId = useBinaryMessageId;
+    }
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/ConnectionImpl.java Wed May 15 13:15:04 2013
@@ -56,7 +56,7 @@ public class ConnectionImpl implements C
     private String _clientId;
     private String _queuePrefix;
     private String _topicPrefix;
-
+    private boolean _useBinaryMessageId = Boolean.parseBoolean(System.getProperty("qpid.use_binary_message_id", "true"));
 
     private static enum State
     {
@@ -163,6 +163,7 @@ public class ConnectionImpl implements C
                 connect();
                 started = true;
             }
+
             try
             {
                 SessionImpl session = new SessionImpl(this, acknowledgeMode);
@@ -170,6 +171,11 @@ public class ConnectionImpl implements C
                 session.setTopicSession(_isTopicConnection);
                 _sessions.add(session);
 
+                if(_state == State.STARTED)
+                {
+                    session.start();
+                }
+
                 return session;
             }
             catch(JMSException e)
@@ -191,9 +197,17 @@ public class ConnectionImpl implements C
                     throw e;
                 }
             }
-
         }
 
+
+    }
+
+    void removeSession(SessionImpl session)
+    {
+        synchronized (_lock)
+        {
+            _sessions.remove(session);
+        }
     }
 
     private void reconnect(String networkHost, int port, String hostName)
@@ -410,10 +424,7 @@ public class ConnectionImpl implements C
 
     public boolean isStarted()
     {
-        synchronized (_lock)
-        {
-            return _state == State.STARTED;
-        }
+        return _state == State.STARTED;
     }
 
     void setQueueConnection(final boolean queueConnection)
@@ -499,4 +510,15 @@ public class ConnectionImpl implements C
         return new DecodedDestination(address, kind);
     }
 
+    void setUseBinaryMessageId(boolean useBinaryMessageId)
+    {
+        _useBinaryMessageId = useBinaryMessageId;
+    }
+
+    boolean useBinaryMessageId()
+    {
+        return _useBinaryMessageId;
+    }
+
+
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageConsumerImpl.java Wed May 15 13:15:04 2013
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import javax.jms.Destination;
+import javax.jms.ExceptionListener;
 import javax.jms.IllegalStateException;
 import javax.jms.InvalidDestinationException;
 import javax.jms.InvalidSelectorException;
@@ -117,6 +118,29 @@ public class MessageConsumerImpl impleme
         _session = session;
 
         _receiver = createClientReceiver();
+        _receiver.setRemoteErrorListener(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                try
+                {
+                    final ExceptionListener exceptionListener = _session.getConnection().getExceptionListener();
+
+                    if(exceptionListener != null)
+                    {
+                        final Error receiverError = _receiver.getError();
+                        exceptionListener.onException(new JMSException(receiverError.getDescription(),
+                                receiverError.getCondition().getValue().toString()));
+
+                    }
+                }
+                catch (JMSException e)
+                {
+
+                }
+            }
+        });
 
 
     }
@@ -125,8 +149,8 @@ public class MessageConsumerImpl impleme
     {
         try
         {
-            return _session.getClientSession(). createReceiver(_session.toAddress(_destination), AcknowledgeMode.ALO,
-                                                               _linkName, _durable, getFilters(), null);
+            return _session.getClientSession().createReceiver(_session.toAddress(_destination), AcknowledgeMode.ALO,
+                    _linkName, _durable, getFilters(), null);
         }
         catch (ConnectionErrorException e)
         {
@@ -188,15 +212,16 @@ public class MessageConsumerImpl impleme
     {
         checkClosed();
         _messageListener = messageListener;
-        _session.messageListenerSet( this );
         _receiver.setMessageArrivalListener(new Receiver.MessageArrivalListener()
-        {
+                {
+
+                    public void messageArrived(final Receiver receiver)
+                    {
+                        _session.messageArrived(MessageConsumerImpl.this);
+                    }
+                });
+        _session.messageListenerSet( this );
 
-            public void messageArrived(final Receiver receiver)
-            {
-                _session.messageArrived(MessageConsumerImpl.this);
-            }
-        });
     }
 
     public MessageImpl receive() throws JMSException
@@ -219,12 +244,14 @@ public class MessageConsumerImpl impleme
         return receiveImpl(0L);
     }
 
-    private MessageImpl receiveImpl(long timeout) throws IllegalStateException
+    private MessageImpl receiveImpl(long timeout) throws JMSException
     {
+
         org.apache.qpid.amqp_1_0.client.Message msg;
         boolean redelivery;
         if(_replaymessages.isEmpty())
         {
+            checkReceiverError();
             msg = receive0(timeout);
             redelivery = false;
         }
@@ -241,8 +268,21 @@ public class MessageConsumerImpl impleme
         return createJMSMessage(msg, redelivery);
     }
 
+    void checkReceiverError() throws JMSException
+    {
+        final Error receiverError = _receiver.getError();
+        if(receiverError != null)
+        {
+            JMSException jmsException =
+                    new JMSException(receiverError.getDescription(), receiverError.getCondition().toString());
+
+            throw jmsException;
+        }
+    }
+
     Message receive0(final long timeout)
     {
+
         Message message = _receiver.receive(timeout);
         if(_session.getAckModeEnum() == Session.AcknowledgeMode.CLIENT_ACKNOWLEDGE)
         {

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/MessageProducerImpl.java Wed May 15 13:15:04 2013
@@ -19,17 +19,22 @@
 package org.apache.qpid.amqp_1_0.jms.impl;
 
 import org.apache.qpid.amqp_1_0.client.ConnectionClosedException;
+import org.apache.qpid.amqp_1_0.client.LinkDetachedException;
 import org.apache.qpid.amqp_1_0.client.Sender;
 import org.apache.qpid.amqp_1_0.jms.MessageProducer;
+import org.apache.qpid.amqp_1_0.jms.MessageRejectedException;
 import org.apache.qpid.amqp_1_0.jms.QueueSender;
 import org.apache.qpid.amqp_1_0.jms.TemporaryDestination;
 import org.apache.qpid.amqp_1_0.jms.TopicPublisher;
 import org.apache.qpid.amqp_1_0.type.Binary;
+import org.apache.qpid.amqp_1_0.type.Outcome;
 import org.apache.qpid.amqp_1_0.type.UnsignedInteger;
 
 import javax.jms.*;
 import javax.jms.IllegalStateException;
 import java.util.UUID;
+import org.apache.qpid.amqp_1_0.type.messaging.Accepted;
+import org.apache.qpid.amqp_1_0.type.transport.*;
 
 public class MessageProducerImpl implements MessageProducer, QueueSender, TopicPublisher
 {
@@ -43,6 +48,8 @@ public class MessageProducerImpl impleme
     private SessionImpl _session;
     private Sender _sender;
     private boolean _closed;
+    private boolean _syncPublish = Boolean.getBoolean("qpid.sync_publish");
+    private long _syncPublishTimeout = Long.getLong("qpid.sync_publish_timeout", 30000l);
 
     protected MessageProducerImpl(final Destination destination,
                                final SessionImpl session) throws JMSException
@@ -81,6 +88,29 @@ public class MessageProducerImpl impleme
                 jmsEx.setLinkedException(e);
                 throw jmsEx;
             }
+            _sender.setRemoteErrorListener(new Runnable()
+                    {
+                        @Override
+                        public void run()
+                        {
+                            try
+                            {
+                                final ExceptionListener exceptionListener = _session.getConnection().getExceptionListener();
+
+                                if(exceptionListener != null)
+                                {
+                                    final org.apache.qpid.amqp_1_0.type.transport.Error receiverError = _sender.getError();
+                                    exceptionListener.onException(new JMSException(receiverError.getDescription(),
+                                            receiverError.getCondition().getValue().toString()));
+
+                                }
+                            }
+                            catch (JMSException e)
+                            {
+
+                            }
+                        }
+                    });
         }
     }
 
@@ -234,7 +264,7 @@ public class MessageProducerImpl impleme
 
         if(!getDisableMessageID() && msg.getMessageId() == null)
         {
-            final Binary messageId = generateMessageId();
+            final Object messageId = generateMessageId();
             msg.setMessageId(messageId);
 
         }
@@ -251,7 +281,28 @@ public class MessageProducerImpl impleme
 
         final org.apache.qpid.amqp_1_0.client.Message clientMessage = new org.apache.qpid.amqp_1_0.client.Message(msg.getSections());
 
-        _sender.send(clientMessage, _session.getTxn());
+        DispositionAction action = null;
+
+        if(_syncPublish)
+        {
+            action = new DispositionAction(_sender);
+        }
+
+        try
+        {
+            _sender.send(clientMessage, _session.getTxn(), action);
+        }
+        catch (LinkDetachedException e)
+        {
+            JMSException jmsException = new InvalidDestinationException("Sender has been closed");
+            jmsException.setLinkedException(e);
+            throw jmsException;
+        }
+
+        if(_syncPublish && !action.wasAccepted(_syncPublishTimeout + System.currentTimeMillis()))
+        {
+            throw new MessageRejectedException("Message was rejected");
+        }
 
         if(getDestination() != null)
         {
@@ -270,10 +321,11 @@ public class MessageProducerImpl impleme
         send((Destination)queue, message, deliveryMode, priority, ttl);
     }
 
-    private Binary generateMessageId()
+    private Object generateMessageId()
     {
         UUID uuid = UUID.randomUUID();
-        return new Binary(uuid.toString().getBytes());
+        final String messageIdString = uuid.toString();
+        return _session.getConnection().useBinaryMessageId() ? new Binary(messageIdString.getBytes()) : messageIdString;
     }
 
     public void send(final Destination destination, final Message message) throws JMSException
@@ -377,4 +429,61 @@ public class MessageProducerImpl impleme
     {
         send(topic, message, deliveryMode, priority, ttl);
     }
+
+    private static class DispositionAction implements Sender.OutcomeAction
+    {
+        private final Sender _sender;
+        private final Object _lock;
+        private Outcome _outcome;
+
+        public DispositionAction(Sender sender)
+        {
+            _sender = sender;
+            _lock = sender.getEndpoint().getLock();
+        }
+
+        @Override
+        public void onOutcome(Binary deliveryTag, Outcome outcome)
+        {
+            synchronized (_lock)
+            {
+                _outcome = outcome;
+                _lock.notifyAll();
+            }
+        }
+
+        public boolean wasAccepted(long timeout) throws JMSException
+        {
+            synchronized(_lock)
+            {
+                while(_outcome == null && !_sender.getEndpoint().isDetached())
+                {
+                    try
+                    {
+                        _lock.wait(timeout - System.currentTimeMillis());
+                    }
+                    catch (InterruptedException e)
+                    {
+                        Thread.currentThread().interrupt();
+                    }
+                }
+                if(_outcome == null)
+                {
+
+                    if(_sender.getEndpoint().isDetached())
+                    {
+                        throw new JMSException("Link was detached");
+                    }
+                    else
+                    {
+                        throw new JMSException("Timed out waiting for message acceptance");
+                    }
+                }
+                else
+                {
+                    return _outcome instanceof Accepted;
+                }
+            }
+        }
+    }
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/SessionImpl.java Wed May 15 13:15:04 2013
@@ -21,10 +21,12 @@ package org.apache.qpid.amqp_1_0.jms.imp
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
 import javax.jms.BytesMessage;
 import javax.jms.Destination;
+import javax.jms.ExceptionListener;
 import javax.jms.IllegalStateException;
 import javax.jms.InvalidDestinationException;
 import javax.jms.JMSException;
@@ -52,9 +54,11 @@ import org.apache.qpid.amqp_1_0.jms.Temp
 import org.apache.qpid.amqp_1_0.jms.TopicPublisher;
 import org.apache.qpid.amqp_1_0.jms.TopicSession;
 import org.apache.qpid.amqp_1_0.jms.TopicSubscriber;
+import org.apache.qpid.amqp_1_0.transport.SessionEventListener;
 import org.apache.qpid.amqp_1_0.type.messaging.Source;
 import org.apache.qpid.amqp_1_0.type.messaging.Target;
-import org.apache.qpid.amqp_1_0.type.transport.AmqpError;
+import org.apache.qpid.amqp_1_0.type.transport.*;
+import org.apache.qpid.amqp_1_0.type.transport.Error;
 
 public class SessionImpl implements Session, QueueSession, TopicSession
 {
@@ -90,6 +94,45 @@ public class SessionImpl implements Sess
             jmsException.setLinkedException(e);
             throw jmsException;
         }
+        _session.getEndpoint().setSessionEventListener(new SessionEventListener.DefaultSessionEventListener()
+        {
+            @Override
+            public void remoteEnd(End end)
+            {
+                if(!_closed)
+                {
+                    try
+                    {
+                        close();
+                    }
+                    catch (JMSException e)
+                    {
+                    }
+                    try
+                    {
+                        final Error error = end.getError();
+                        final ExceptionListener exceptionListener = _connection.getExceptionListener();
+                        if(exceptionListener != null)
+                        {
+                            if(error != null)
+                            {
+                                exceptionListener.onException(new JMSException(error.getDescription(),
+                                        error.getCondition().getValue().toString()));
+                            }
+                            else
+                            {
+                                exceptionListener.onException(new JMSException("Session remotely closed"));
+                            }
+                        }
+                    }
+                    catch (JMSException e)
+                    {
+
+                    }
+
+                }
+            }
+        });
         if(_acknowledgeMode == AcknowledgeMode.SESSION_TRANSACTED)
         {
             _txn = _session.createSessionLocalTransaction();
@@ -230,6 +273,7 @@ public class SessionImpl implements Sess
                 producer.close();
             }
             _session.close();
+            _connection.removeSession(this);
         }
     }
 
@@ -765,7 +809,6 @@ public class SessionImpl implements Sess
         return _txn;
     }
 
-
     private class Dispatcher implements Runnable
     {
 
@@ -816,7 +859,6 @@ public class SessionImpl implements Sess
                             msg = consumer.receive0(0L);
                         }
 
-
                         MessageListener listener = consumer._messageListener;
 
                         MessageImpl message = consumer.createJMSMessage(msg, recoveredMessage);
@@ -847,7 +889,28 @@ public class SessionImpl implements Sess
                         }
 
                     }
+                    Iterator<MessageConsumerImpl> consumers = _consumers.iterator();
+                    while(consumers.hasNext())
+                    {
+                        MessageConsumerImpl consumer = consumers.next();
+                        try
+                        {
+                            consumer.checkReceiverError();
+                        }
+                        catch (JMSException e)
+                        {
 
+                            consumers.remove();
+                            try
+                            {
+                                _connection.getExceptionListener().onException(e);
+                                consumer.close();
+                            }
+                            catch (JMSException e1)
+                            {
+                            }
+                        }
+                    }
 
                 }
             }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryQueueImpl.java Wed May 15 13:15:04 2013
@@ -34,6 +34,7 @@ public class TemporaryQueueImpl extends 
     private SessionImpl _session;
     private final Set<MessageConsumer> _consumers =
             Collections.synchronizedSet(new HashSet<MessageConsumer>());
+    private boolean _deleted;
 
     protected TemporaryQueueImpl(String address, Sender sender, SessionImpl session)
     {
@@ -56,7 +57,8 @@ public class TemporaryQueueImpl extends 
     {
         if(_consumers.isEmpty())
         {
-           close();
+            close();
+            _deleted = true;
         }
         else
         {
@@ -100,6 +102,6 @@ public class TemporaryQueueImpl extends 
 
     public boolean isDeleted()
     {
-        return _sender == null;
+        return _deleted;
     }
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryTopicImpl.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryTopicImpl.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryTopicImpl.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client-jms/src/main/java/org/apache/qpid/amqp_1_0/jms/impl/TemporaryTopicImpl.java Wed May 15 13:15:04 2013
@@ -34,6 +34,7 @@ public class TemporaryTopicImpl extends 
     private SessionImpl _session;
     private final Set<MessageConsumer> _consumers =
             Collections.synchronizedSet(new HashSet<MessageConsumer>());
+    private boolean _deleted;
 
     protected TemporaryTopicImpl(String address, Sender sender, SessionImpl session)
     {
@@ -57,6 +58,7 @@ public class TemporaryTopicImpl extends 
     {
         if(_consumers.isEmpty())
         {
+            _deleted = true;
             close();
         }
         else
@@ -105,6 +107,6 @@ public class TemporaryTopicImpl extends 
 
     public boolean isDeleted()
     {
-        return _sender == null;
+        return _deleted;
     }
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Demo.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Demo.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Demo.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Demo.java Wed May 15 13:15:04 2013
@@ -173,7 +173,14 @@ public class Demo extends Util
             Section[] sections = { properties, appProperties, amqpValue};
             final Message message1 = new Message(Arrays.asList(sections));
 
-            s.send(message1);
+            try
+            {
+                s.send(message1);
+            }
+            catch (Exception e)
+            {
+                throw new RuntimeException(e);
+            }
 
             Map<Object, Sender> sendingLinks = new HashMap<Object, Sender>();
             Map<Object, Receiver> receivingLinks = new HashMap<Object, Receiver>();
@@ -295,7 +302,14 @@ public class Demo extends Util
                         m2propmap.put(VENDOR, vendor);
                         ApplicationProperties m2appProps = new ApplicationProperties(m2propmap);
                         Message m2 = new Message(Arrays.asList(m2props, m2appProps, new AmqpValue("AMQP-"+messageId)));
-                        sender.send(m2);
+                        try
+                        {
+                            sender.send(m2);
+                        }
+                        catch (Exception e)
+                        {
+                            throw new RuntimeException(e);
+                        }
 
                         Map m3propmap = new HashMap();
                         m3propmap.put(OPCODE, LOG);
@@ -307,8 +321,14 @@ public class Demo extends Util
 
                         Message m3 = new Message(Arrays.asList(new ApplicationProperties(m3propmap),
                                                                new AmqpValue("AMQP-"+messageId)));
-                        s.send(m3);
-
+                        try
+                        {
+                            s.send(m3);
+                        }
+                        catch (Exception e)
+                        {
+                            throw new RuntimeException(e);
+                        }
                     }
 
                     responseReceiver.acknowledge(m);
@@ -336,7 +356,14 @@ public class Demo extends Util
 
                             Message m3 = new Message(Arrays.asList(new ApplicationProperties(m3propmap),
                                                                    new AmqpValue("AMQP-"+mp.getMessageId())));
-                            s.send(m3);
+                            try
+                            {
+                                s.send(m3);
+                            }
+                            catch (Exception e)
+                            {
+                                throw new RuntimeException(e);
+                            }
 
                             entry.getValue().acknowledge(m);
                         }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Dump.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Dump.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Dump.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Dump.java Wed May 15 13:15:04 2013
@@ -121,14 +121,7 @@ public class Dump extends Util
             session.close();
             conn.close();
 
-        } catch (ConnectionException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
-        catch (Sender.SenderCreationException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        } catch (Sender.SenderClosingException e)
+        } catch (Exception e)
         {
             e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Filesender.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Filesender.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Filesender.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Filesender.java Wed May 15 13:15:04 2013
@@ -248,27 +248,10 @@ public class Filesender extends Util
             session.close();
             conn.close();
         }
-        catch (ConnectionException e)
+        catch (Exception e)
         {
             e.printStackTrace();
         }
-        catch (Sender.SenderCreationException e)
-        {
-            e.printStackTrace();
-        } catch (FileNotFoundException e)
-        {
-            e.printStackTrace();
-        } catch (IOException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        } catch (NoSuchAlgorithmException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        } catch (Sender.SenderClosingException e)
-        {
-            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-        }
-
     }
 
     private Message createMessageFromFile(MessageDigest md5, String fileName, File file) throws IOException

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Request.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Request.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Request.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Request.java Wed May 15 13:15:04 2013
@@ -216,23 +216,10 @@ public class Request extends Util
                 conn2.close();
             }
         }
-        catch (ConnectionException e)
+        catch (Exception e)
         {
             e.printStackTrace();  //TODO.
         }
-        catch (Sender.SenderClosingException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-        catch (Sender.SenderCreationException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-        catch (AmqpErrorException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-
     }
 
     protected boolean hasSingleLinkPerConnectionMode()

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Respond.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Respond.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Respond.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Respond.java Wed May 15 13:15:04 2013
@@ -274,21 +274,13 @@ public class Respond extends Util
             _conn.close();
             System.out.println("Received: " + receivedCount);
         }
-        catch (ConnectionException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-        catch (Sender.SenderClosingException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-        catch (Sender.SenderCreationException e)
+        catch (Exception e)
         {
             e.printStackTrace();  //TODO.
         }
     }
 
-    private void respond(Message m) throws Sender.SenderCreationException, ConnectionClosedException
+    private void respond(Message m) throws Sender.SenderCreationException, ConnectionClosedException, LinkDetachedException
     {
         List<Section> sections = m.getPayload();
         String replyTo = null;

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Send.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Send.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Send.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/example/src/main/java/org/apache/qpid/amqp_1_0/client/Send.java Wed May 15 13:15:04 2013
@@ -219,19 +219,10 @@ public class Send extends Util
             session.close();
             conn.close();
         }
-        catch (Sender.SenderClosingException e)
+        catch (Exception e)
         {
             e.printStackTrace();  //TODO.
         }
-        catch (ConnectionException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-        catch (Sender.SenderCreationException e)
-        {
-            e.printStackTrace();  //TODO.
-        }
-
 
     }
 

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Receiver.java Wed May 15 13:15:04 2013
@@ -50,6 +50,7 @@ public class Receiver implements Deliver
     private Map<Binary, SettledAction> _unsettledMap = new HashMap<Binary, SettledAction>();
     private MessageArrivalListener _messageArrivalListener;
     private org.apache.qpid.amqp_1_0.type.transport.Error _error;
+    private Runnable _remoteErrorTask;
 
     public Receiver(final Session session,
                     final String linkName,
@@ -125,6 +126,10 @@ public class Receiver implements Deliver
             public void remoteDetached(final LinkEndpoint endpoint, final Detach detach)
             {
                 _error = detach.getError();
+                if(detach.getError()!=null)
+                {
+                    remoteError();
+                }
                 super.remoteDetached(endpoint, detach);
             }
         });
@@ -171,6 +176,14 @@ public class Receiver implements Deliver
         }
     }
 
+    private void remoteError()
+    {
+        if(_remoteErrorTask != null)
+        {
+            _remoteErrorTask.run();
+        }
+    }
+
     private void postPrefetchAction()
     {
         if(_messageArrivalListener != null)
@@ -566,6 +579,11 @@ public class Receiver implements Deliver
         synchronized(_endpoint.getLock())
         {
             _messageArrivalListener = messageArrivalListener;
+            int prefetchSize = _prefetchQueue.size();
+            for(int i = 0; i < prefetchSize; i++)
+            {
+                postPrefetchAction();
+            }
         }
     }
 
@@ -590,4 +608,8 @@ public class Receiver implements Deliver
         void messageArrived(Receiver receiver);
     }
 
+    public void setRemoteErrorListener(Runnable listener)
+    {
+        _remoteErrorTask = listener;
+    }
 }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Sender.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Sender.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Sender.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-client/src/main/java/org/apache/qpid/amqp_1_0/client/Sender.java Wed May 15 13:15:04 2013
@@ -22,7 +22,9 @@ package org.apache.qpid.amqp_1_0.client;
 
 import org.apache.qpid.amqp_1_0.messaging.SectionEncoder;
 import org.apache.qpid.amqp_1_0.transport.DeliveryStateHandler;
+import org.apache.qpid.amqp_1_0.transport.LinkEndpoint;
 import org.apache.qpid.amqp_1_0.transport.SendingLinkEndpoint;
+import org.apache.qpid.amqp_1_0.transport.SendingLinkListener;
 import org.apache.qpid.amqp_1_0.type.*;
 import org.apache.qpid.amqp_1_0.type.Source;
 import org.apache.qpid.amqp_1_0.type.Target;
@@ -35,6 +37,7 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.qpid.amqp_1_0.type.transport.Error;
 
 public class Sender implements DeliveryStateHandler
 {
@@ -44,6 +47,8 @@ public class Sender implements DeliveryS
     private int _windowSize;
     private Map<Binary, OutcomeAction> _outcomeActions = Collections.synchronizedMap(new HashMap<Binary, OutcomeAction>());
     private boolean _closed;
+    private Error _error;
+    private Runnable _remoteErrorTask;
 
     public Sender(final Session session, final String linkName, final String targetAddr, final String sourceAddr)
             throws SenderCreationException, ConnectionClosedException
@@ -166,6 +171,21 @@ public class Sender implements DeliveryS
                 throw new SenderCreationException("Peer did not create remote endpoint for link, target: " + target.getAddress());
             };
         }
+
+        _endpoint.setLinkEventListener(new SendingLinkListener.DefaultLinkEventListener()
+        {
+
+            @Override
+            public void remoteDetached(final LinkEndpoint endpoint, final Detach detach)
+            {
+                _error = detach.getError();
+                if(_error != null)
+                {
+                    remoteError();
+                }
+                super.remoteDetached(endpoint, detach);
+            }
+        });
     }
 
     public Source getSource()
@@ -178,22 +198,22 @@ public class Sender implements DeliveryS
         return _endpoint.getTarget();
     }
 
-    public void send(Message message)
+    public void send(Message message) throws LinkDetachedException
     {
         send(message, null, null);
     }
 
-    public void send(Message message, final OutcomeAction action)
+    public void send(Message message, final OutcomeAction action) throws LinkDetachedException
     {
         send(message, null, action);
     }
 
-    public void send(Message message, final Transaction txn)
+    public void send(Message message, final Transaction txn) throws LinkDetachedException
     {
         send(message, txn, null);
     }
 
-    public void send(Message message, final Transaction txn, OutcomeAction action)
+    public void send(Message message, final Transaction txn, OutcomeAction action) throws LinkDetachedException
     {
 
         List<Section> sections = message.getPayload();
@@ -245,7 +265,7 @@ public class Sender implements DeliveryS
         final Object lock = _endpoint.getLock();
         synchronized(lock)
         {
-            while(!_endpoint.hasCreditToSend())
+            while(!_endpoint.hasCreditToSend() && !_endpoint.isDetached())
             {
                 try
                 {
@@ -256,6 +276,10 @@ public class Sender implements DeliveryS
                     e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                 }
             }
+            if(_endpoint.isDetached())
+            {
+                throw new LinkDetachedException(_error);
+            }
             if(action != null)
             {
                 _outcomeActions.put(message.getDeliveryTag(), action);
@@ -352,6 +376,21 @@ public class Sender implements DeliveryS
                 _endpoint.updateDisposition(deliveryTag, state, true);
             }
         }
+        else if(state instanceof TransactionalState)
+        {
+            OutcomeAction action;
+
+            if((action = _outcomeActions.remove(deliveryTag)) != null)
+            {
+                action.onOutcome(deliveryTag, ((TransactionalState) state).getOutcome());
+            }
+
+        }
+    }
+
+    public SendingLinkEndpoint getEndpoint()
+    {
+        return _endpoint;
     }
 
     public Map<Binary, DeliveryState> getRemoteUnsettled()
@@ -364,6 +403,26 @@ public class Sender implements DeliveryS
         return _session;
     }
 
+
+    private void remoteError()
+    {
+        if(_remoteErrorTask != null)
+        {
+            _remoteErrorTask.run();
+        }
+    }
+
+
+    public void setRemoteErrorListener(Runnable listener)
+    {
+        _remoteErrorTask = listener;
+    }
+
+    public Error getError()
+    {
+        return _error;
+    }
+
     public class SenderCreationException extends Exception
     {
         public SenderCreationException(Throwable e)

Propchange: qpid/branches/0.22/qpid/java/amqp-1-0-common/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/amqp-1-0-common:r1480584,1481290,1481321,1482609,1482729,1482770

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundWriter.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundWriter.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundWriter.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundWriter.java Wed May 15 13:15:04 2013
@@ -31,7 +31,6 @@ public abstract class CompoundWriter<V> 
     private Registry _registry;
     private static final int LARGE_COMPOUND_THRESHOLD_COUNT = 25;
     private ValueWriter _delegate;
-    private Map<Class, ValueWriter> _writerCache = new HashMap<Class, ValueWriter>();
 
     public CompoundWriter(final Registry registry)
     {
@@ -305,7 +304,7 @@ public abstract class CompoundWriter<V> 
         for(int i = 0; i < getCount(); i++)
         {
             Object val = next();
-            ValueWriter writer = _registry.getValueWriter(val, _writerCache);
+            ValueWriter writer = _registry.getValueWriter(val);
             if(writer == null)
             {
                 // TODO

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/UnsignedLongWriter.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/UnsignedLongWriter.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/UnsignedLongWriter.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/UnsignedLongWriter.java Wed May 15 13:15:04 2013
@@ -127,7 +127,7 @@ public class UnsignedLongWriter implemen
         {
             _delegate = _zeroByteWriter;
         }
-        else if(ulong.compareTo(UnsignedLong.valueOf(256))<0)
+        else if((ulong.longValue() & 0xffL) == ulong.longValue())
         {
             _delegate = _oneByteWriter;
         }

Modified: qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/codec/AMQPDescribedTypeRegistry.java
URL: http://svn.apache.org/viewvc/qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/codec/AMQPDescribedTypeRegistry.java?rev=1482809&r1=1482808&r2=1482809&view=diff
==============================================================================
--- qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/codec/AMQPDescribedTypeRegistry.java (original)
+++ qpid/branches/0.22/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/type/codec/AMQPDescribedTypeRegistry.java Wed May 15 13:15:04 2013
@@ -298,102 +298,71 @@ public class AMQPDescribedTypeRegistry i
 
 
     private final Map<Class, ValueWriter.Factory> _writerMap = new HashMap<Class, ValueWriter.Factory>();
-    private final Map<Class, ValueWriter> _cachedWriters = new HashMap<Class,ValueWriter>();
 
     public <V extends Object> ValueWriter<V> getValueWriter(V value, Map<Class, ValueWriter> localCache)
     {
-        Class<? extends Object> clazz = value == null ? Void.TYPE : value.getClass();
-        ValueWriter writer = null; // TODO localCache.get(clazz);
-        if(writer == null || !writer.isComplete())
-        {
-            writer = getValueWriter(value);
-            localCache.put(clazz, writer);
-        }
-        else
-        {
-            writer.setValue(value);
-        }
+        return getValueWriter(value);
 
-
-        return writer;
     }
 
 
     public <V extends Object> ValueWriter<V> getValueWriter(V value)
     {
+        ValueWriter writer;
 
         Class<? extends Object> clazz = value == null ? Void.TYPE : value.getClass();
 
-        ValueWriter writer = null; // TODO _cachedWriters.get(clazz);
-        if(writer == null || !writer.isComplete())
+        ValueWriter.Factory<V> factory = (ValueWriter.Factory<V>) (_writerMap.get(clazz));
+
+        if(factory == null)
         {
-            ValueWriter.Factory<V> factory = (ValueWriter.Factory<V>) (_writerMap.get(clazz));
+            if(value instanceof List)
+            {
+                factory = _writerMap.get(List.class);
+                _writerMap.put(value.getClass(), factory);
+                writer = factory.newInstance(this);
+                writer.setValue(value);
 
-            if(factory == null)
+            }
+            else if(value instanceof Map)
             {
-                if(value instanceof List)
-                {
-                    factory = _writerMap.get(List.class);
-                    _writerMap.put(value.getClass(), factory);
-                    writer = factory.newInstance(this);
-                    if(writer.isCacheable())
-                    {
-                        _cachedWriters.put(clazz, writer);
-                    }
-                    writer.setValue(value);
+                factory = _writerMap.get(Map.class);
+                _writerMap.put(value.getClass(), factory);
+                writer = factory.newInstance(this);
+                writer.setValue(value);
 
-                }
-                else if(value instanceof Map)
+            }
+            else if(value.getClass().isArray())
+            {
+                if(RestrictedType.class.isAssignableFrom(value.getClass().getComponentType()))
                 {
-                    factory = _writerMap.get(Map.class);
-                    _writerMap.put(value.getClass(), factory);
-                    writer = factory.newInstance(this);
-                    if(writer.isCacheable())
+                    RestrictedType[] restrictedTypes = (RestrictedType[]) value;
+                    Object[] newVals = (Object[]) Array.newInstance(restrictedTypes[0].getValue().getClass(),
+                                                                    restrictedTypes.length);
+                    for(int i = 0; i < restrictedTypes.length; i++)
                     {
-                        _cachedWriters.put(clazz, writer);
+                        newVals[i] = restrictedTypes[i].getValue();
                     }
-                    writer.setValue(value);
-
+                    return (ValueWriter<V>) getValueWriter(newVals);
                 }
-                else if(value.getClass().isArray())
-                {
-                    if(RestrictedType.class.isAssignableFrom(value.getClass().getComponentType()))
-                    {
-                        RestrictedType[] restrictedTypes = (RestrictedType[]) value;
-                        Object[] newVals = (Object[]) Array.newInstance(restrictedTypes[0].getValue().getClass(),
-                                                                        restrictedTypes.length);
-                        for(int i = 0; i < restrictedTypes.length; i++)
-                        {
-                            newVals[i] = restrictedTypes[i].getValue();
-                        }
-                        return (ValueWriter<V>) getValueWriter(newVals);
-                    }
-                    // TODO primitive array types
-                    factory = _writerMap.get(List.class);
-                    writer = factory.newInstance(this);
-                    writer.setValue(Arrays.asList((Object[])value));
+                // TODO primitive array types
+                factory = _writerMap.get(List.class);
+                writer = factory.newInstance(this);
+                writer.setValue(Arrays.asList((Object[])value));
 
-                }
-                else
-                {
-                    return null;
-                }
             }
             else
             {
-                writer = factory.newInstance(this);
-                if(writer.isCacheable())
-                {
-                    _cachedWriters.put(clazz, writer);
-                }
-                writer.setValue(value);
+                return null;
             }
         }
         else
         {
+            writer = factory.newInstance(this);
             writer.setValue(value);
         }
 
+
         return writer;
 
     }

Propchange: qpid/branches/0.22/qpid/java/broker/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/bin/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/bin:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_1_0.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/message/MessageMetaData_1_0.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/ProtocolEngine_1_0_0_SASL.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/protocol/v1_0:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/queue/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/queue:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/LoggingManagement.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedBroker.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedConnection.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedExchange.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/ManagedQueue.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/UserManagement.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanAttribute.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanConstructor.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanDescription.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperation.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/management/common/src/main/java/org/apache/qpid/management/common/mbeans/annotations/MBeanOperationParameter.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/perftests/etc/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/perftests/etc:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/SupportedProtocolVersionsTest.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/CPPExcludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/CPPExcludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/Excludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/Excludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/JavaBDBExcludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/JavaBDBExcludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/JavaExcludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/JavaExcludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/JavaPre010Excludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/JavaPre010Excludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/JavaTransientExcludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/XAExcludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/XAExcludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.async.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.async.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.cluster.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.cluster.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.noprefetch.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.noprefetch.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.ssl.excludes
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.ssl.excludes:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.ssl.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.ssl.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/cpp.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/cpp.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-bdb-spawn.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-bdb.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-bdb.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-dby-spawn.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-dby.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-dby.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-mms-spawn.0-10.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-mms-spawn.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/java-mms.0-9-1.testprofile
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/java-mms.0-9-1.testprofile:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/log4j-test.xml
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/log4j-test.xml:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/test-provider.properties
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/test-provider.properties:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/test_resources/
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/test_resources:r1480584,1481290,1481321,1482609,1482729,1482770

Propchange: qpid/branches/0.22/qpid/java/test-profiles/testprofile.defaults
------------------------------------------------------------------------------
  Merged /qpid/trunk/qpid/java/test-profiles/testprofile.defaults:r1480584,1481290,1481321,1482609,1482729,1482770



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org