You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/07/20 16:39:36 UTC
svn commit: r1612097 - in /qpid/trunk/qpid/java:
client/src/main/java/org/apache/qpid/client/
client/src/main/java/org/apache/qpid/client/message/
client/src/test/java/org/apache/qpid/client/
client/src/test/java/org/apache/qpid/test/unit/client/connec...
Author: kwall
Date: Sun Jul 20 14:39:35 2014
New Revision: 1612097
URL: http://svn.apache.org/r1612097
Log:
QPID-2969: Make AMQConnectionFactory and AMQDestination (and subclasses) serializable
Modified:
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQAnyDestination.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQHeadersExchange.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQQueue.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQUndefinedDestination.java
qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/messaging/Address.java
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidQueueImpl.java
qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidTopicImpl.java
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQAnyDestination.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQAnyDestination.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQAnyDestination.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQAnyDestination.java Sun Jul 20 14:39:35 2014
@@ -40,6 +40,8 @@ import java.net.URISyntaxException;
*/
public class AMQAnyDestination extends AMQDestination implements Queue, Topic
{
+ private static final long serialVersionUID = 2853054849716163231L;
+
protected AMQAnyDestination()
{
super();
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQBrokerDetails.java Sun Jul 20 14:39:35 2014
@@ -25,13 +25,16 @@ import org.apache.qpid.transport.Connect
import org.apache.qpid.url.URLHelper;
import org.apache.qpid.url.URLSyntaxException;
+import java.io.Serializable;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
-public class AMQBrokerDetails implements BrokerDetails
+public class AMQBrokerDetails implements BrokerDetails, Serializable
{
+ private static final long serialVersionUID = 8450786374975932890L;
+
private String _host;
private int _port;
private String _transport;
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionFactory.java Sun Jul 20 14:39:35 2014
@@ -45,6 +45,8 @@ import javax.naming.Reference;
import javax.naming.Referenceable;
import javax.naming.StringRefAddr;
import javax.naming.spi.ObjectFactory;
+
+import java.io.Serializable;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Hashtable;
@@ -53,10 +55,11 @@ import java.util.UUID;
public class AMQConnectionFactory implements ConnectionFactory, QueueConnectionFactory, TopicConnectionFactory,
ObjectFactory, Referenceable, XATopicConnectionFactory,
- XAQueueConnectionFactory, XAConnectionFactory
+ XAQueueConnectionFactory, XAConnectionFactory, Serializable
{
protected static final String NO_URL_CONFIGURED = "The connection factory wasn't created with a proper URL, the connection details are empty";
+
private ConnectionURL _connectionDetails;
// The default constructor is necessary to allow AMQConnectionFactory to be deserialised from JNDI
@@ -412,4 +415,42 @@ public class AMQConnectionFactory implem
{
return (XAQueueConnection) createXAConnection(username, password);
}
+
+ @Override
+ public boolean equals(final Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final AMQConnectionFactory that = (AMQConnectionFactory) o;
+
+ if (_connectionDetails != null
+ ? !_connectionDetails.equals(that._connectionDetails)
+ : that._connectionDetails != null)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return _connectionDetails != null ? _connectionDetails.hashCode() : 0;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "AMQConnectionFactory{" +
+ "_connectionDetails=" + _connectionDetails +
+ '}';
+ }
}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQConnectionURL.java Sun Jul 20 14:39:35 2014
@@ -27,13 +27,16 @@ import org.apache.qpid.jms.ConnectionURL
import org.apache.qpid.url.URLHelper;
import org.apache.qpid.url.URLSyntaxException;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-public class AMQConnectionURL implements ConnectionURL
+public class AMQConnectionURL implements ConnectionURL, Serializable
{
+ private static final long serialVersionUID = -5102704772070465832L;
+
private String _url;
private String _failoverMethod;
private Map<String, String> _failoverOptions;
@@ -43,10 +46,10 @@ public class AMQConnectionURL implements
private String _username;
private String _password;
private String _virtualHost;
- private AMQShortString _defaultQueueExchangeName;
- private AMQShortString _defaultTopicExchangeName;
- private AMQShortString _temporaryTopicExchangeName;
- private AMQShortString _temporaryQueueExchangeName;
+ private String _defaultQueueExchangeName;
+ private String _defaultTopicExchangeName;
+ private String _temporaryTopicExchangeName;
+ private String _temporaryQueueExchangeName;
public AMQConnectionURL(String fullURL) throws URLSyntaxException
{
@@ -183,47 +186,145 @@ public class AMQConnectionURL implements
public AMQShortString getDefaultQueueExchangeName()
{
- return _defaultQueueExchangeName;
+ return _defaultQueueExchangeName == null ? null : new AMQShortString(_defaultQueueExchangeName);
}
public void setDefaultQueueExchangeName(AMQShortString defaultQueueExchangeName)
{
- _defaultQueueExchangeName = defaultQueueExchangeName;
+ _defaultQueueExchangeName = defaultQueueExchangeName == null ? null : defaultQueueExchangeName.asString();
}
public AMQShortString getDefaultTopicExchangeName()
{
- return _defaultTopicExchangeName;
+ return _defaultTopicExchangeName == null ? null : new AMQShortString(_defaultTopicExchangeName);
}
public void setDefaultTopicExchangeName(AMQShortString defaultTopicExchangeName)
{
- _defaultTopicExchangeName = defaultTopicExchangeName;
+ _defaultTopicExchangeName = defaultTopicExchangeName == null ? null : defaultTopicExchangeName.asString();
}
public AMQShortString getTemporaryQueueExchangeName()
{
- return _temporaryQueueExchangeName;
+ return _temporaryQueueExchangeName == null ? null : new AMQShortString(_temporaryQueueExchangeName);
}
public void setTemporaryQueueExchangeName(AMQShortString temporaryQueueExchangeName)
{
- _temporaryQueueExchangeName = temporaryQueueExchangeName;
+ _temporaryQueueExchangeName = temporaryQueueExchangeName == null ? null : temporaryQueueExchangeName.asString();
}
public AMQShortString getTemporaryTopicExchangeName()
{
- return _temporaryTopicExchangeName;
+ return _temporaryTopicExchangeName == null ? null : new AMQShortString(_temporaryTopicExchangeName);
}
public void setTemporaryTopicExchangeName(AMQShortString temporaryTopicExchangeName)
{
- _temporaryTopicExchangeName = temporaryTopicExchangeName;
+ _temporaryTopicExchangeName = temporaryTopicExchangeName == null ? null : temporaryTopicExchangeName.asString() ;
+ }
+
+ @Override
+ public boolean equals(final Object o)
+ {
+ if (this == o)
+ {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass())
+ {
+ return false;
+ }
+
+ final AMQConnectionURL that = (AMQConnectionURL) o;
+
+ if (_brokers != null ? !_brokers.equals(that._brokers) : that._brokers != null)
+ {
+ return false;
+ }
+ if (_clientName != null ? !_clientName.equals(that._clientName) : that._clientName != null)
+ {
+ return false;
+ }
+ if (_defaultQueueExchangeName != null
+ ? !_defaultQueueExchangeName.equals(that._defaultQueueExchangeName)
+ : that._defaultQueueExchangeName != null)
+ {
+ return false;
+ }
+ if (_defaultTopicExchangeName != null
+ ? !_defaultTopicExchangeName.equals(that._defaultTopicExchangeName)
+ : that._defaultTopicExchangeName != null)
+ {
+ return false;
+ }
+ if (_failoverMethod != null ? !_failoverMethod.equals(that._failoverMethod) : that._failoverMethod != null)
+ {
+ return false;
+ }
+ if (_failoverOptions != null ? !_failoverOptions.equals(that._failoverOptions) : that._failoverOptions != null)
+ {
+ return false;
+ }
+ if (_options != null ? !_options.equals(that._options) : that._options != null)
+ {
+ return false;
+ }
+ if (_password != null ? !_password.equals(that._password) : that._password != null)
+ {
+ return false;
+ }
+ if (_temporaryQueueExchangeName != null
+ ? !_temporaryQueueExchangeName.equals(that._temporaryQueueExchangeName)
+ : that._temporaryQueueExchangeName != null)
+ {
+ return false;
+ }
+ if (_temporaryTopicExchangeName != null
+ ? !_temporaryTopicExchangeName.equals(that._temporaryTopicExchangeName)
+ : that._temporaryTopicExchangeName != null)
+ {
+ return false;
+ }
+ if (_url != null ? !_url.equals(that._url) : that._url != null)
+ {
+ return false;
+ }
+ if (_username != null ? !_username.equals(that._username) : that._username != null)
+ {
+ return false;
+ }
+ if (_virtualHost != null ? !_virtualHost.equals(that._virtualHost) : that._virtualHost != null)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode()
+ {
+ int result = _url != null ? _url.hashCode() : 0;
+ result = 31 * result + (_failoverMethod != null ? _failoverMethod.hashCode() : 0);
+ result = 31 * result + (_failoverOptions != null ? _failoverOptions.hashCode() : 0);
+ result = 31 * result + (_options != null ? _options.hashCode() : 0);
+ result = 31 * result + (_brokers != null ? _brokers.hashCode() : 0);
+ result = 31 * result + (_clientName != null ? _clientName.hashCode() : 0);
+ result = 31 * result + (_username != null ? _username.hashCode() : 0);
+ result = 31 * result + (_password != null ? _password.hashCode() : 0);
+ result = 31 * result + (_virtualHost != null ? _virtualHost.hashCode() : 0);
+ result = 31 * result + (_defaultQueueExchangeName != null ? _defaultQueueExchangeName.hashCode() : 0);
+ result = 31 * result + (_defaultTopicExchangeName != null ? _defaultTopicExchangeName.hashCode() : 0);
+ result = 31 * result + (_temporaryTopicExchangeName != null ? _temporaryTopicExchangeName.hashCode() : 0);
+ result = 31 * result + (_temporaryQueueExchangeName != null ? _temporaryQueueExchangeName.hashCode() : 0);
+ return result;
}
+ @Override
public String toString()
{
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
sb.append(AMQ_PROTOCOL);
sb.append("://");
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java Sun Jul 20 14:39:35 2014
@@ -39,14 +39,20 @@ import javax.naming.NamingException;
import javax.naming.Reference;
import javax.naming.Referenceable;
import javax.naming.StringRefAddr;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.net.URISyntaxException;
import java.util.Map;
import java.util.concurrent.atomic.AtomicLong;
-public abstract class AMQDestination implements Destination, Referenceable
+public abstract class AMQDestination implements Destination, Referenceable, Externalizable
{
private static final Logger _logger = LoggerFactory.getLogger(AMQDestination.class);
+ private static final long serialVersionUID = -3716263015355017537L;
private AMQShortString _exchangeName;
@@ -996,4 +1002,50 @@ public abstract class AMQDestination imp
{
return _rejectBehaviour;
}
+
+ @Override
+ public void writeExternal(final ObjectOutput out) throws IOException
+ {
+ out.writeObject(_destSyntax);
+ if (_destSyntax == DestSyntax.BURL)
+ {
+ out.writeObject(toURL());
+ }
+ else
+ {
+ out.writeObject(_address);
+ }
+ }
+
+ @Override
+ public void readExternal(final ObjectInput in) throws IOException, ClassNotFoundException
+ {
+ _destSyntax = (DestSyntax) in.readObject();
+ if (_destSyntax == DestSyntax.BURL)
+ {
+ String burl = (String) in.readObject();
+ final AMQBindingURL binding;
+ try
+ {
+ binding = new AMQBindingURL(burl);
+ }
+ catch (URISyntaxException e)
+ {
+ throw new IllegalStateException("Cannot convert url " + burl + " into a BindingURL", e);
+ }
+ getInfoFromBindingURL(binding);
+ }
+ else
+ {
+ _address = (Address) in.readObject();
+ try
+ {
+ getInfoFromAddress();
+ }
+ catch (Exception e)
+ {
+ throw new IllegalStateException("Cannot convert get info from " + _address, e);
+ }
+ }
+ }
}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQHeadersExchange.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQHeadersExchange.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQHeadersExchange.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQHeadersExchange.java Sun Jul 20 14:39:35 2014
@@ -29,6 +29,8 @@ import org.apache.qpid.url.BindingURL;
*/
public class AMQHeadersExchange extends AMQDestination
{
+ private static final long serialVersionUID = 2187866678283988301L;
+
public AMQHeadersExchange(BindingURL binding)
{
super(binding);
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQQueue.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQQueue.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQQueue.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQQueue.java Sun Jul 20 14:39:35 2014
@@ -29,7 +29,9 @@ import java.net.URISyntaxException;
public class AMQQueue extends AMQDestination implements Queue
{
- protected AMQQueue()
+ private static final long serialVersionUID = -1283142598932655606L;
+
+ public AMQQueue()
{
super();
}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryQueue.java Sun Jul 20 14:39:35 2014
@@ -29,8 +29,7 @@ import java.util.UUID;
/** AMQ implementation of a TemporaryQueue. */
final class AMQTemporaryQueue extends AMQQueue implements TemporaryQueue, TemporaryDestination
{
-
-
+ private static final long serialVersionUID = -5457866720195625708L;
private final AMQSession _session;
private boolean _deleted;
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTemporaryTopic.java Sun Jul 20 14:39:35 2014
@@ -32,6 +32,7 @@ import java.util.UUID;
class AMQTemporaryTopic extends AMQTopic implements TemporaryTopic, TemporaryDestination
{
+ private static final long serialVersionUID = -4990099300883216207L;
private final AMQSession _session;
private boolean _deleted;
/**
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQTopic.java Sun Jul 20 14:39:35 2014
@@ -33,6 +33,8 @@ import java.net.URISyntaxException;
public class AMQTopic extends AMQDestination implements Topic
{
+ private static final long serialVersionUID = -4773561540716587036L;
+
public AMQTopic(String address) throws URISyntaxException
{
super(address);
@@ -43,7 +45,7 @@ public class AMQTopic extends AMQDestina
super(address);
}
- protected AMQTopic()
+ public AMQTopic()
{
super();
}
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQUndefinedDestination.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQUndefinedDestination.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQUndefinedDestination.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/AMQUndefinedDestination.java Sun Jul 20 14:39:35 2014
@@ -26,6 +26,7 @@ public class AMQUndefinedDestination ext
{
private static final AMQShortString UNKNOWN_EXCHANGE_CLASS = new AMQShortString("unknown");
+ private static final long serialVersionUID = -1487224209485888847L;
public AMQUndefinedDestination(AMQShortString exchange, AMQShortString routingKey, AMQShortString queueName)
Modified: qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java (original)
+++ qpid/trunk/qpid/java/client/src/main/java/org/apache/qpid/client/message/AMQMessageDelegate_0_8.java Sun Jul 20 14:39:35 2014
@@ -27,7 +27,6 @@ import org.apache.qpid.client.AMQSession
import org.apache.qpid.client.AMQSession_0_8;
import org.apache.qpid.client.AMQTopic;
import org.apache.qpid.client.CustomJMSXProperty;
-import org.apache.qpid.client.JMSAMQException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.BasicContentHeaderProperties;
import org.apache.qpid.url.AMQBindingURL;
@@ -611,6 +610,8 @@ public class AMQMessageDelegate_0_8 exte
private static class DefaultRouterDestination extends AMQDestination implements Queue
{
+ private static final long serialVersionUID = -5042408431861384536L;
+
public DefaultRouterDestination(final String replyToEncoding)
{
super(AMQShortString.EMPTY_STRING,
@@ -634,6 +635,8 @@ public class AMQMessageDelegate_0_8 exte
private static class NonBURLReplyToDestination extends AMQDestination implements Queue
{
+ private static final long serialVersionUID = 122897705932489259L;
+
public NonBURLReplyToDestination(final String exchange, final String routingKey)
{
super(AMQShortString.valueOf(exchange),
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQConnectionFactoryTest.java Sun Jul 20 14:39:35 2014
@@ -20,6 +20,12 @@
*/
package org.apache.qpid.client;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
import javax.jms.JMSException;
import junit.framework.TestCase;
@@ -76,4 +82,25 @@ public class AMQConnectionFactoryTest ex
assertEquals("Unexpected exception", AMQConnectionFactory.NO_URL_CONFIGURED, e.getMessage());
}
}
+
+ public void testSerialization() throws Exception
+ {
+ AMQConnectionFactory factory = new AMQConnectionFactory();
+ assertTrue(factory instanceof Serializable);
+ factory.setConnectionURLString("amqp://guest:guest@clientID/test?brokerlist='tcp://localhost:5672'");
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(factory);
+ oos.close();
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bis);
+ Object deserializedObject = ois.readObject();
+ ois.close();
+
+ AMQConnectionFactory deserialisedFactory = (AMQConnectionFactory) deserializedObject;
+ assertEquals(factory, deserialisedFactory);
+ assertEquals(factory.hashCode(), deserialisedFactory.hashCode());
+ }
}
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java Sun Jul 20 14:39:35 2014
@@ -20,10 +20,19 @@
*/
package org.apache.qpid.client;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import javax.jms.Destination;
+import javax.jms.Queue;
+import javax.jms.Topic;
+
import junit.framework.TestCase;
public class AMQDestinationTest extends TestCase
@@ -132,11 +141,12 @@ public class AMQDestinationTest extends
assertEmptyLinkBindingsAndSubscriptionArgs(new AMQAnyDestination(xSubscribeAddr));
}
- private void assertEmptyLinkBindingsAndSubscriptionArgs(AMQDestination dest) {
+ private void assertEmptyLinkBindingsAndSubscriptionArgs(AMQDestination dest)
+ {
assertEquals("Default link subscription arguments should be the constant Collections empty map.",
Collections.emptyMap(), dest.getLink().getSubscription().getArgs());
assertSame("Defaultl link bindings should be the constant Collections empty list.",
- Collections.emptyList(), dest.getLink().getBindings());
+ Collections.emptyList(), dest.getLink().getBindings());
}
/**
@@ -152,10 +162,69 @@ public class AMQDestinationTest extends
assertEmptyNodeBindings(new AMQAnyDestination("ADDR:testDest3; {node: {type: topic}}"));
}
+ public void testSerializeAMQQueue_BURL() throws Exception
+ {
+ Queue queue = new AMQQueue("BURL:direct://amq.direct/test-route/Foo?routingkey='Foo'");
+ assertTrue(queue instanceof Serializable);
+
+ Queue deserialisedQueue = (Queue) serialiseDeserialiseDestination(queue);
+
+ assertEquals(queue, deserialisedQueue);
+ assertEquals(queue.hashCode(), deserialisedQueue.hashCode());
+ }
+
+ public void testSerializeAMQQueue_ADDR() throws Exception
+ {
+ Queue queue = new AMQQueue("ADDR:testDest2; {node: {type: queue}}");
+ assertTrue(queue instanceof Serializable);
+
+ Queue deserialisedQueue = (Queue) serialiseDeserialiseDestination(queue);
+
+ assertEquals(queue, deserialisedQueue);
+ assertEquals(queue.hashCode(), deserialisedQueue.hashCode());
+ }
+
+ public void testSerializeAMQTopic_BURL() throws Exception
+ {
+ Topic topic = new AMQTopic("BURL:topic://amq.topic/mytopic/?routingkey='mytopic'");
+ assertTrue(topic instanceof Serializable);
+
+ Topic deserialisedTopic = (Topic) serialiseDeserialiseDestination(topic);
+
+ assertEquals(topic, deserialisedTopic);
+ assertEquals(topic.hashCode(), deserialisedTopic.hashCode());
+ }
+
+ public void testSerializeAMQTopic_ADDR() throws Exception
+ {
+ Topic topic = new AMQTopic("ADDR:my-topic; {assert: always, node:{ type: topic }}");
+ assertTrue(topic instanceof Serializable);
+
+ Topic deserialisedTopic = (Topic) serialiseDeserialiseDestination(topic);
+
+ assertEquals(topic, deserialisedTopic);
+ assertEquals(topic.hashCode(), deserialisedTopic.hashCode());
+ }
+
private void assertEmptyNodeBindings(AMQDestination dest)
{
assertSame("Empty node bindings should refer to the constant Collections empty list.",
Collections.emptyList(), dest.getNode().getBindings());
}
+ private Destination serialiseDeserialiseDestination(final Destination dest) throws Exception
+ {
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(dest);
+ oos.close();
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bis);
+ Object deserializedObject = ois.readObject();
+ ois.close();
+ return (Destination)deserializedObject;
+ }
+
+
}
Modified: qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java (original)
+++ qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/client/connectionurl/ConnectionURLTest.java Sun Jul 20 14:39:35 2014
@@ -20,6 +20,12 @@
*/
package org.apache.qpid.test.unit.client.connectionurl;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+
import junit.framework.TestCase;
import org.apache.qpid.client.AMQBrokerDetails;
@@ -620,5 +626,29 @@ public class ConnectionURLTest extends T
assertFalse("value should be false", Boolean.valueOf(connectionURL.getOption(ConnectionURL.OPTIONS_VERIFY_QUEUE_ON_SEND)));
}
+
+ public void testSerialization() throws Exception
+ {
+ String url = "amqp://ritchiem:bob@/test?brokerlist='tcp://localhost:5672'";
+ ConnectionURL connectionurl = new AMQConnectionURL(url);
+
+
+ assertTrue(connectionurl instanceof Serializable);
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutputStream oos = new ObjectOutputStream(bos);
+ oos.writeObject(connectionurl);
+ oos.close();
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+ ObjectInputStream ois = new ObjectInputStream(bis);
+ Object deserializedObject = ois.readObject();
+ ois.close();
+
+ ConnectionURL deserialisedConnectionUrl = (AMQConnectionURL) deserializedObject;
+ assertEquals(connectionurl, deserialisedConnectionUrl);
+ assertEquals(connectionurl.hashCode(), deserialisedConnectionUrl.hashCode());
+
+ }
}
Modified: qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/messaging/Address.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/messaging/Address.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/messaging/Address.java (original)
+++ qpid/trunk/qpid/java/common/src/main/java/org/apache/qpid/messaging/Address.java Sun Jul 20 14:39:35 2014
@@ -24,6 +24,7 @@ import org.apache.qpid.messaging.util.Ad
import static org.apache.qpid.messaging.util.PyPrint.pprint;
+import java.io.Serializable;
import java.util.Map;
@@ -32,9 +33,11 @@ import java.util.Map;
*
*/
-public class Address
+public class Address implements Serializable
{
+ private static final long serialVersionUID = 6096143531336726036L;
+
private String _name;
private String _subject;
private Map _options;
Modified: qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidQueueImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidQueueImpl.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidQueueImpl.java (original)
+++ qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidQueueImpl.java Sun Jul 20 14:39:35 2014
@@ -33,6 +33,7 @@ import org.apache.qpid.client.AMQQueue;
public class QpidQueueImpl extends AMQQueue implements QpidQueue, Externalizable
{
+ private static final long serialVersionUID = 7952672727182960611L;
private String _url;
public QpidQueueImpl()
@@ -71,6 +72,7 @@ public class QpidQueueImpl extends AMQQu
return this._url;
}
+ @Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
this._url = (String)in.readObject();
@@ -86,6 +88,7 @@ public class QpidQueueImpl extends AMQQu
}
}
+ @Override
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeObject(this._url);
Modified: qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidTopicImpl.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidTopicImpl.java?rev=1612097&r1=1612096&r2=1612097&view=diff
==============================================================================
--- qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidTopicImpl.java (original)
+++ qpid/trunk/qpid/java/jca/src/main/java/org/apache/qpid/ra/admin/QpidTopicImpl.java Sun Jul 20 14:39:35 2014
@@ -34,6 +34,7 @@ import org.apache.qpid.ra.inflow.QpidAct
public class QpidTopicImpl extends AMQTopic implements QpidTopic, Externalizable
{
+ private static final long serialVersionUID = -2872685901706214228L;
private String _url;
public QpidTopicImpl()
@@ -71,6 +72,7 @@ public class QpidTopicImpl extends AMQTo
return this._url;
}
+ @Override
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
this._url = (String)in.readObject();
@@ -86,6 +88,7 @@ public class QpidTopicImpl extends AMQTo
}
}
+ @Override
public void writeExternal(ObjectOutput out) throws IOException
{
out.writeObject(this._url);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org