diff options
author | Rupert Smith <rupertlssmith@apache.org> | 2007-06-11 16:43:57 +0000 |
---|---|---|
committer | Rupert Smith <rupertlssmith@apache.org> | 2007-06-11 16:43:57 +0000 |
commit | 9889573f94c99b252395262f73afe1c9055d59e7 (patch) | |
tree | 9633f0ed0430f8c09eab9b9bfc37291f0a43d677 | |
parent | a1b3eef439d082d62d2dc1188c14e795418c8416 (diff) | |
download | qpid-python-9889573f94c99b252395262f73afe1c9055d59e7.tar.gz |
Removed log4j dependency from client. Using slf4j instead, end-user to supply logging implementation as desired. Log4j used for tests.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@546190 13f79535-47bb-0310-9956-ffa450edef68
104 files changed, 2381 insertions, 2248 deletions
diff --git a/java/broker/pom.xml b/java/broker/pom.xml index b0203e95f9..1de5e5ff10 100644 --- a/java/broker/pom.xml +++ b/java/broker/pom.xml @@ -15,7 +15,7 @@ KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - --> +--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> @@ -44,6 +44,11 @@ </dependency> <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + + <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> </dependency> @@ -58,7 +63,14 @@ <artifactId>commons-lang</artifactId> </dependency> - <!-- Test Dependencies --> + <!-- Test Dependencies --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.0</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> @@ -168,8 +180,8 @@ <tasks> <condition property="broker.dir" - else="${user.dir}${file.separator}broker" - value="${user.dir}"> + else="${user.dir}${file.separator}broker" + value="${user.dir}"> <contains string="${user.dir}" substring="broker" /> </condition> @@ -179,7 +191,7 @@ <property name="command" value="python run-tests -v -I java_failing.txt"/> - <!--value="bash -c 'python run-tests -v -I java_failing.txt'"/>--> + <!--value="bash -c 'python run-tests -v -I java_failing.txt'"/>--> <ant antfile="python-test.xml" inheritRefs="true"> <target name="run-tests" /> diff --git a/java/client/example/pom.xml b/java/client/example/pom.xml index c9d69c52a8..50680666e1 100644 --- a/java/client/example/pom.xml +++ b/java/client/example/pom.xml @@ -43,12 +43,18 @@ <groupId>org.apache.qpid</groupId> <artifactId>qpid-common</artifactId> </dependency> + <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-client</artifactId> </dependency> <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + + <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> </dependency> diff --git a/java/client/pom.xml b/java/client/pom.xml index 221763649f..c36c54a10f 100644 --- a/java/client/pom.xml +++ b/java/client/pom.xml @@ -48,6 +48,12 @@ <artifactId>qpid-common</artifactId> </dependency> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.4.0</version> + </dependency> + <dependency> <groupId>org.apache.geronimo.specs</groupId> <artifactId>geronimo-jms_1.1_spec</artifactId> @@ -56,13 +62,6 @@ <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> - <!-- commons collection exports log4j v1.2.7 which doesn't have trace()--> - <exclusions> - <exclusion> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </exclusion> - </exclusions> </dependency> <dependency> @@ -76,6 +75,13 @@ </dependency> <!-- Test Dependencies --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.0</version> + <scope>test</scope> + </dependency> + <dependency> <!-- for inVm Broker --> <groupId>org.apache.qpid</groupId> <artifactId>qpid-broker</artifactId> @@ -83,19 +89,6 @@ </dependency> <dependency> - <groupId>jmscts</groupId> - <artifactId>jmscts</artifactId> - <version>0.5-b2</version> - <scope>test</scope> - <exclusions> - <exclusion> - <groupId>jms</groupId> - <artifactId>jms</artifactId> - </exclusion> - </exclusions> - </dependency> - - <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java index 674f205af6..8989394125 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQConnection.java @@ -20,8 +20,6 @@ */ package org.apache.qpid.client; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQConnectionFailureException; import org.apache.qpid.AMQException; import org.apache.qpid.AMQUndeliveredException; @@ -48,6 +46,9 @@ import org.apache.qpid.jms.ConnectionURL; import org.apache.qpid.jms.FailoverPolicy; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.*; import javax.jms.IllegalStateException; import javax.naming.NamingException; @@ -71,7 +72,7 @@ import java.util.concurrent.atomic.AtomicInteger; public class AMQConnection extends Closeable implements Connection, QueueConnection, TopicConnection, Referenceable { - private static final Logger _logger = Logger.getLogger(AMQConnection.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQConnection.class); private AtomicInteger _idFactory = new AtomicInteger(0); diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java b/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java index 4662f80c5b..28e5992b26 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java @@ -20,9 +20,8 @@ */ package org.apache.qpid.client; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.concurrent.atomic.AtomicBoolean; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.IllegalStateException; import javax.jms.JMSException; @@ -30,12 +29,13 @@ import javax.jms.Message; import javax.jms.Queue; import javax.jms.QueueBrowser; -import org.apache.log4j.Logger; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.concurrent.atomic.AtomicBoolean; public class AMQQueueBrowser implements QueueBrowser { - private static final Logger _logger = Logger.getLogger(AMQQueueBrowser.class); - + private static final Logger _logger = LoggerFactory.getLogger(AMQQueueBrowser.class); private AtomicBoolean _isClosed = new AtomicBoolean(); private final AMQSession _session; @@ -43,20 +43,21 @@ public class AMQQueueBrowser implements QueueBrowser private final ArrayList<BasicMessageConsumer> _consumers = new ArrayList<BasicMessageConsumer>(); private final String _messageSelector; - AMQQueueBrowser(AMQSession session, AMQQueue queue, String messageSelector) throws JMSException { _session = session; _queue = queue; - _messageSelector = (messageSelector == null) || (messageSelector.trim().length() == 0) ? null : messageSelector; + _messageSelector = ((messageSelector == null) || (messageSelector.trim().length() == 0)) ? null : messageSelector; // Create Consumer to verify message selector. - BasicMessageConsumer consumer = (BasicMessageConsumer) _session.createBrowserConsumer(_queue, _messageSelector, false); - consumer.close(); + BasicMessageConsumer consumer = + (BasicMessageConsumer) _session.createBrowserConsumer(_queue, _messageSelector, false); + consumer.close(); } public Queue getQueue() throws JMSException { checkState(); + return _queue; } @@ -66,6 +67,7 @@ public class AMQQueueBrowser implements QueueBrowser { throw new IllegalStateException("Queue Browser"); } + if (_session.isClosed()) { throw new IllegalStateException("Session is closed"); @@ -77,47 +79,48 @@ public class AMQQueueBrowser implements QueueBrowser { checkState(); + return _messageSelector; } public Enumeration getEnumeration() throws JMSException { checkState(); - final BasicMessageConsumer consumer = (BasicMessageConsumer) _session.createBrowserConsumer(_queue, _messageSelector, false); + final BasicMessageConsumer consumer = + (BasicMessageConsumer) _session.createBrowserConsumer(_queue, _messageSelector, false); _consumers.add(consumer); return new Enumeration() - { - - - Message _nextMessage = consumer.receive(); - - - public boolean hasMoreElements() { - _logger.info("QB:hasMoreElements:" + (_nextMessage != null)); - return (_nextMessage != null); - } - public Object nextElement() - { - Message msg = _nextMessage; - try + Message _nextMessage = consumer.receive(); + + public boolean hasMoreElements() { - _logger.info("QB:nextElement about to receive"); + _logger.info("QB:hasMoreElements:" + (_nextMessage != null)); - _nextMessage = consumer.receive(); - _logger.info("QB:nextElement received:" + _nextMessage); + return (_nextMessage != null); } - catch (JMSException e) + + public Object nextElement() { - _logger.warn("Exception caught while queue browsing", e); - _nextMessage = null; + Message msg = _nextMessage; + try + { + _logger.info("QB:nextElement about to receive"); + + _nextMessage = consumer.receive(); + _logger.info("QB:nextElement received:" + _nextMessage); + } + catch (JMSException e) + { + _logger.warn("Exception caught while queue browsing", e); + _nextMessage = null; + } + + return msg; } - - return msg; - } - }; + }; } public void close() throws JMSException @@ -126,8 +129,8 @@ public class AMQQueueBrowser implements QueueBrowser { consumer.close(); } + _consumers.clear(); } - } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java index 25c2d94377..edb018f602 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQSession.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQSession.java @@ -20,8 +20,6 @@ */ package org.apache.qpid.client; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.AMQInvalidArgumentException; import org.apache.qpid.AMQInvalidRoutingKeyException; @@ -75,6 +73,9 @@ import org.apache.qpid.protocol.AMQMethodEvent; import org.apache.qpid.url.AMQBindingURL; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.BytesMessage; import javax.jms.Destination; import javax.jms.IllegalStateException; @@ -111,14 +112,30 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; /** + * + * <p/><table id="crc"><caption>CRC Card</caption> + * <tr><th> Responsibilities <th> Collaborations + * <tr><td> + * </table> + * + * @todo Different FailoverSupport implementation are needed on the same method call, in different situations. For + * example, when failing-over and reestablishing the bindings, the bind cannot be interrupted by a second + * fail-over, if it fails with an exception, the fail-over process should also fail. When binding outside of + * the fail-over process, the retry handler could be used to automatically retry the operation once the connection + * has been reestablished. All fail-over protected operations should be placed in private methods, with + * FailoverSupport passed in by the caller to provide the correct support for the calling context. Sometimes the + * fail-over process sets a nowait flag and uses an async method call instead. + * + * @todo Two new objects created on every failover supported method call. Consider more efficient ways of doing this, + * after looking at worse bottlenecks first. */ public class AMQSession extends Closeable implements Session, QueueSession, TopicSession { /** Used for debugging. */ - private static final Logger _logger = Logger.getLogger(AMQSession.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQSession.class); /** Used for debugging in the dispatcher. */ - private static final Logger _dispatcherLogger = Logger.getLogger(Dispatcher.class); + private static final Logger _dispatcherLogger = LoggerFactory.getLogger(Dispatcher.class); /** The default maximum number of prefetched message at which to suspend the channel. */ public static final int DEFAULT_PREFETCH_HIGH_MARK = 5000; @@ -365,6 +382,28 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi defaultPrefetchLow); } + // ===== JMS Session methods. + + /** + * Closes the session with no timeout. + * + * @throws JMSException If the JMS provider fails to close the session due to some internal error. + */ + public void close() throws JMSException + { + close(-1); + } + + public BytesMessage createBytesMessage() throws JMSException + { + synchronized (_connection.getFailoverMutex()) + { + checkNotClosed(); + + return new JMSBytesMessage(); + } + } + /** * Acknowledges all unacknowledged messages on the session, for all message consumers on the session. * @@ -447,16 +486,6 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi } /** - * Closes the session with no timeout. - * - * @throws JMSException If the JMS provider fails to close the session due to some internal error. - */ - public void close() throws JMSException - { - close(-1); - } - - /** * Closes the session. * * <p/>Note that this operation succeeds automatically if a fail-over interupts the sycnronous request to close @@ -680,16 +709,6 @@ public class AMQSession extends Closeable implements Session, QueueSession, Topi messageSelector, null, true, true); } - public BytesMessage createBytesMessage() throws JMSException - { - synchronized (_connection.getFailoverMutex()) - { - checkNotClosed(); - - return new JMSBytesMessage(); - } - } - public MessageConsumer createConsumer(Destination destination) throws JMSException { checkValidDestination(destination); diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java index 3a31eda754..dfac0d45a8 100644 --- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java +++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageConsumer.java @@ -20,8 +20,6 @@ */ package org.apache.qpid.client; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.client.failover.FailoverException; import org.apache.qpid.client.message.AbstractJMSMessage; @@ -36,6 +34,9 @@ import org.apache.qpid.framing.FieldTable; import org.apache.qpid.jms.MessageConsumer; import org.apache.qpid.jms.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; @@ -51,7 +52,7 @@ import java.util.concurrent.atomic.AtomicReference; public class BasicMessageConsumer extends Closeable implements MessageConsumer { - private static final Logger _logger = Logger.getLogger(BasicMessageConsumer.class); + private static final Logger _logger = LoggerFactory.getLogger(BasicMessageConsumer.class); /** The connection being used by this consumer */ private AMQConnection _connection; diff --git a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java index bd7cc94582..0ee4882ec2 100644 --- a/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java +++ b/java/client/src/main/java/org/apache/qpid/client/BasicMessageProducer.java @@ -20,8 +20,23 @@ */ package org.apache.qpid.client; -import java.io.UnsupportedEncodingException; -import java.util.UUID; +import org.apache.mina.common.ByteBuffer; + +import org.apache.qpid.AMQException; +import org.apache.qpid.client.message.AbstractJMSMessage; +import org.apache.qpid.client.message.MessageConverter; +import org.apache.qpid.client.protocol.AMQProtocolHandler; +import org.apache.qpid.framing.AMQFrame; +import org.apache.qpid.framing.BasicConsumeBody; +import org.apache.qpid.framing.BasicContentHeaderProperties; +import org.apache.qpid.framing.BasicPublishBody; +import org.apache.qpid.framing.CompositeAMQDataBlock; +import org.apache.qpid.framing.ContentBody; +import org.apache.qpid.framing.ContentHeaderBody; +import org.apache.qpid.framing.ExchangeDeclareBody; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.BytesMessage; import javax.jms.DeliveryMode; @@ -36,24 +51,12 @@ import javax.jms.StreamMessage; import javax.jms.TextMessage; import javax.jms.Topic; -import org.apache.log4j.Logger; -import org.apache.mina.common.ByteBuffer; -import org.apache.qpid.AMQException; -import org.apache.qpid.client.message.AbstractJMSMessage; -import org.apache.qpid.client.message.MessageConverter; -import org.apache.qpid.client.protocol.AMQProtocolHandler; -import org.apache.qpid.framing.AMQFrame; -import org.apache.qpid.framing.BasicConsumeBody; -import org.apache.qpid.framing.BasicContentHeaderProperties; -import org.apache.qpid.framing.BasicPublishBody; -import org.apache.qpid.framing.CompositeAMQDataBlock; -import org.apache.qpid.framing.ContentBody; -import org.apache.qpid.framing.ContentHeaderBody; -import org.apache.qpid.framing.ExchangeDeclareBody; +import java.io.UnsupportedEncodingException; +import java.util.UUID; public class BasicMessageProducer extends Closeable implements org.apache.qpid.jms.MessageProducer { - protected final Logger _logger = Logger.getLogger(getClass()); + protected final Logger _logger = LoggerFactory.getLogger(getClass()); private AMQConnection _connection; @@ -119,14 +122,14 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j private final boolean _mandatory; private final boolean _waitUntilSent; - + private boolean _disableMessageId; - + private static final ContentBody[] NO_CONTENT_BODIES = new ContentBody[0]; protected BasicMessageProducer(AMQConnection connection, AMQDestination destination, boolean transacted, int channelId, - AMQSession session, AMQProtocolHandler protocolHandler, long producerId, - boolean immediate, boolean mandatory, boolean waitUntilSent) + AMQSession session, AMQProtocolHandler protocolHandler, long producerId, boolean immediate, boolean mandatory, + boolean waitUntilSent) { _connection = connection; _destination = destination; @@ -160,15 +163,15 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j // TODO: Be aware of possible changes to parameter order as versions change. AMQFrame declare = ExchangeDeclareBody.createAMQFrame(_channelId, _protocolHandler.getProtocolMajorVersion(), - _protocolHandler.getProtocolMinorVersion(), null, // arguments - false, // autoDelete - false, // durable - destination.getExchangeName(), // exchange - false, // internal - true, // nowait - false, // passive - _session.getTicket(), // ticket - destination.getExchangeClass()); // type + _protocolHandler.getProtocolMinorVersion(), null, // arguments + false, // autoDelete + false, // durable + destination.getExchangeName(), // exchange + false, // internal + true, // nowait + false, // passive + _session.getTicket(), // ticket + destination.getExchangeClass()); // type _protocolHandler.writeFrame(declare); } @@ -205,7 +208,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j if ((i != DeliveryMode.NON_PERSISTENT) && (i != DeliveryMode.PERSISTENT)) { throw new JMSException("DeliveryMode must be either NON_PERSISTENT or PERSISTENT. Value of " + i - + " is illegal"); + + " is illegal"); } _deliveryMode = i; @@ -317,12 +320,12 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j { validateDestination(destination); sendImpl((AMQDestination) destination, message, _deliveryMode, _messagePriority, _timeToLive, _mandatory, - _immediate); + _immediate); } } public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) - throws JMSException + throws JMSException { checkPreConditions(); checkDestination(destination); @@ -334,7 +337,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j } public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, - boolean mandatory) throws JMSException + boolean mandatory) throws JMSException { checkPreConditions(); checkDestination(destination); @@ -346,7 +349,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j } public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, - boolean mandatory, boolean immediate) throws JMSException + boolean mandatory, boolean immediate) throws JMSException { checkPreConditions(); checkDestination(destination); @@ -358,7 +361,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j } public void send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive, - boolean mandatory, boolean immediate, boolean waitUntilSent) throws JMSException + boolean mandatory, boolean immediate, boolean waitUntilSent) throws JMSException { checkPreConditions(); checkDestination(destination); @@ -366,7 +369,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j { validateDestination(destination); sendImpl((AMQDestination) destination, message, deliveryMode, priority, timeToLive, mandatory, immediate, - waitUntilSent); + waitUntilSent); } } @@ -412,7 +415,7 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j else { throw new JMSException("Unable to send message, due to class conversion error: " - + message.getClass().getName()); + + message.getClass().getName()); } } } @@ -422,14 +425,14 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j if (!(destination instanceof AMQDestination)) { throw new JMSException("Unsupported destination class: " - + ((destination != null) ? destination.getClass() : null)); + + ((destination != null) ? destination.getClass() : null)); } declareDestination((AMQDestination) destination); } protected void sendImpl(AMQDestination destination, Message message, int deliveryMode, int priority, long timeToLive, - boolean mandatory, boolean immediate) throws JMSException + boolean mandatory, boolean immediate) throws JMSException { sendImpl(destination, message, deliveryMode, priority, timeToLive, mandatory, immediate, _waitUntilSent); } @@ -447,23 +450,23 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j * @throws JMSException */ protected void sendImpl(AMQDestination destination, Message origMessage, int deliveryMode, int priority, long timeToLive, - boolean mandatory, boolean immediate, boolean wait) throws JMSException + boolean mandatory, boolean immediate, boolean wait) throws JMSException { checkTemporaryDestination(destination); origMessage.setJMSDestination(destination); AbstractJMSMessage message = convertToNativeMessage(origMessage); - - if(_disableMessageId) + + if (_disableMessageId) { - message.setJMSMessageID(null); + message.setJMSMessageID(null); } else { - if (message.getJMSMessageID() == null) - { - message.setJMSMessageID(UUID.randomUUID().toString()); - } + if (message.getJMSMessageID() == null) + { + message.setJMSMessageID(UUID.randomUUID().toString()); + } } int type; @@ -486,9 +489,8 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j // TODO: Connect this to the session version obtained from ProtocolInitiation for this session. // Be aware of possible changes to parameter order as versions change. AMQFrame publishFrame = - BasicPublishBody.createAMQFrame( - _channelId, _protocolHandler.getProtocolMajorVersion(), _protocolHandler.getProtocolMinorVersion(), - destination.getExchangeName(), // exchange + BasicPublishBody.createAMQFrame(_channelId, _protocolHandler.getProtocolMajorVersion(), + _protocolHandler.getProtocolMinorVersion(), destination.getExchangeName(), // exchange immediate, // immediate mandatory, // mandatory destination.getRoutingKey(), // routingKey @@ -535,9 +537,8 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j // TODO: Connect this to the session version obtained from ProtocolInitiation for this session. AMQFrame contentHeaderFrame = ContentHeaderBody.createAMQFrame(_channelId, - BasicConsumeBody.getClazz(_protocolHandler.getProtocolMajorVersion(), - _protocolHandler.getProtocolMinorVersion()), 0, - contentHeaderProperties, size); + BasicConsumeBody.getClazz(_protocolHandler.getProtocolMajorVersion(), + _protocolHandler.getProtocolMinorVersion()), 0, contentHeaderProperties, size); if (_logger.isDebugEnabled()) { _logger.debug("Sending content header frame to " + destination); @@ -685,6 +686,6 @@ public class BasicMessageProducer extends Closeable implements org.apache.qpid.j public boolean isBound(AMQDestination destination) throws JMSException { - return _session.isQueueBound(destination.getExchangeName(),null,destination.getRoutingKey()); + return _session.isQueueBound(destination.getExchangeName(), null, destination.getRoutingKey()); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/Closeable.java b/java/client/src/main/java/org/apache/qpid/client/Closeable.java index d246dc3931..7e119343a1 100644 --- a/java/client/src/main/java/org/apache/qpid/client/Closeable.java +++ b/java/client/src/main/java/org/apache/qpid/client/Closeable.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,12 +20,29 @@ */ package org.apache.qpid.client; -import java.util.concurrent.atomic.AtomicBoolean; - import javax.jms.IllegalStateException; import javax.jms.JMSException; -/** Provides support for orderly shutdown of an object. */ +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Captures the 'closed' state of an object, that is initially open, can be tested to see if it is closed, and provides + * a 'close' method to close it. + * + * <p/><table id="crc"><caption>CRC Card</caption> + * <tr><th> Responsibilities <th> Collaborations + * <tr><td> Mark an object as closed. + * <tr><td> Check if an object is closed. + * <tr><td> Raise a JMS exception if an object is closed. + * </table> + * + * @todo Might be better to make this an interface. This whole class doesn't really encapsulate a terribly neat + * piece of re-usable functionality. A simple interface defining a close method would suffice. + * + * @todo The convenience method {@link #checkNotClosed} is not that helpfull, what if the caller wants to do something + * other than throw an exception? It doesn't really represent a very usefull re-usable piece of code. Consider + * inlining it and dropping the method. + */ public abstract class Closeable { /** @@ -34,6 +51,11 @@ public abstract class Closeable */ protected final AtomicBoolean _closed = new AtomicBoolean(false); + /** + * Checks if this is closed, and raises a JMSException if it is. + * + * @throws JMSException If this is closed. + */ protected void checkNotClosed() throws JMSException { if (isClosed()) @@ -42,13 +64,20 @@ public abstract class Closeable } } + /** + * Checks if this is closed. + * + * @return <tt>true</tt> if this is closed, <tt>false</tt> otherwise. + */ public boolean isClosed() { -// synchronized (_closed) - { - return _closed.get(); - } + return _closed.get(); } + /** + * Closes this object. + * + * @throws JMSException If this cannot be closed for any reason. + */ public abstract void close() throws JMSException; } diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverHandler.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverHandler.java index dbbceff523..5303993331 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverHandler.java @@ -20,14 +20,15 @@ */ package org.apache.qpid.client.failover; -import org.apache.log4j.Logger; - import org.apache.mina.common.IoSession; import org.apache.qpid.AMQDisconnectedException; import org.apache.qpid.client.protocol.AMQProtocolHandler; import org.apache.qpid.client.state.AMQStateManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.concurrent.CountDownLatch; /** @@ -78,7 +79,7 @@ import java.util.concurrent.CountDownLatch; public class FailoverHandler implements Runnable { /** Used for debugging. */ - private static final Logger _logger = Logger.getLogger(FailoverHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(FailoverHandler.class); /** Holds the MINA session for the connection that has failed, not the connection that is being failed onto. */ private final IoSession _session; diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverNoopSupport.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverNoopSupport.java index dece1b6c3f..8c05db3232 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverNoopSupport.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverNoopSupport.java @@ -7,11 +7,11 @@ import org.apache.qpid.client.AMQConnection; * at all. It wraps a {@link FailoverProtectedOperation} but should that operation throw {@link FailoverException} this
* support class simply re-raises that exception as an IllegalStateException. This support wrapper should only be
* used where the caller can be certain that the failover protected operation cannot acutally throw a failover exception,
- * for example, because the caller already holds locks preventing that condition from arising.
+ * for example, because the caller already holds a lock preventing that condition from arising.
*
* <p><table id="crc"><caption>CRC Card</caption>
* <tr><th> Responsibilities <th> Collaborations
- * <tr><td> Perform a fail-over protected operation with no handling of fail-over conditions.
+ * <tr><td> Perform a fail-over protected operation raising providing no handling of fail-over conditions.
* </table>
*/
public class FailoverNoopSupport<T, E extends Exception> implements FailoverSupport<T, E>
@@ -48,7 +48,7 @@ public class FailoverNoopSupport<T, E extends Exception> implements FailoverSupp catch (FailoverException e)
{
throw new IllegalStateException("Fail-over interupted no-op failover support. "
- + "No-op support should only be used where the caller is certaing fail-over cannot occur.", e);
+ + "No-op support should only be used where the caller is certain fail-over cannot occur.", e);
}
}
}
diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverProtectedOperation.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverProtectedOperation.java index efb7bf8aed..054add07f7 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverProtectedOperation.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverProtectedOperation.java @@ -1,7 +1,5 @@ package org.apache.qpid.client.failover;
-import org.apache.qpid.AMQException;
-
/**
* FailoverProtectedOperation is a continuation for an operation that may throw a {@link FailoverException} because
* it has been interrupted by the fail-over process. The {@link FailoverRetrySupport} class defines support wrappers
diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverRetrySupport.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverRetrySupport.java index 1e4908976b..120a07f0fc 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverRetrySupport.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverRetrySupport.java @@ -20,12 +20,10 @@ */
package org.apache.qpid.client.failover;
-import org.apache.log4j.Logger;
-
-import org.apache.qpid.AMQException;
import org.apache.qpid.client.AMQConnection;
-import javax.jms.JMSException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* FailoverRetrySupport is a continuation that wraps another continuation, delaying its execution until it is notified
@@ -72,7 +70,7 @@ import javax.jms.JMSException; public class FailoverRetrySupport<T, E extends Exception> implements FailoverSupport<T, E>
{
/** Used for debugging. */
- private static final Logger _log = Logger.getLogger(FailoverRetrySupport.class);
+ private static final Logger _log = LoggerFactory.getLogger(FailoverRetrySupport.class);
/** The protected operation that is to be retried in the event of fail-over. */
FailoverProtectedOperation<T, E> operation;
@@ -97,7 +95,7 @@ public class FailoverRetrySupport<T, E extends Exception> implements FailoverSup *
* @return The result of executing the continuation.
*
- * @throws AMQException Any underlying exception is allowed to fall through.
+ * @throws E Any underlying exception is allowed to fall through.
*/
public T execute() throws E
{
diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverState.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverState.java index e5787439ec..807a5f7d13 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverState.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverState.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -21,27 +21,42 @@ package org.apache.qpid.client.failover; /** - * Enumeration of failover states. Used to handle failover from within AMQProtocolHandler where MINA events need to be - * dealt with and can happen during failover. + * Defines the possible states of the failover process; not started, in progress, failed. + * + * <p/><table id="crc"><caption>CRC Card</caption> + * <tr><th> Responsibilities <th> Collaborations + * <tr><td> Represent a one of the states of the fail-over process. + * </table> */ public final class FailoverState { + /** The string description on this state. */ private final String _state; - /** Failover has not yet been attempted on this connection */ + /** Failover has not yet been attempted on this connection. */ public static final FailoverState NOT_STARTED = new FailoverState("NOT STARTED"); - /** Failover has been requested on this connection but has not completed */ + /** Failover has been requested on this connection but has not completed. */ public static final FailoverState IN_PROGRESS = new FailoverState("IN PROGRESS"); - /** Failover has been attempted and failed */ + /** Failover has been attempted and failed. */ public static final FailoverState FAILED = new FailoverState("FAILED"); + /** + * Creates a type safe enumeration of a fail-over state. + * + * @param state The fail-over state description string. + */ private FailoverState(String state) { _state = state; } + /** + * Prints this state, mainly for debugging purposes. + * + * @return The string description of this state. + */ public String toString() { return "FailoverState: " + _state; diff --git a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverSupport.java b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverSupport.java index 41bac34a34..478482741c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/failover/FailoverSupport.java +++ b/java/client/src/main/java/org/apache/qpid/client/failover/FailoverSupport.java @@ -1,7 +1,5 @@ package org.apache.qpid.client.failover; -import org.apache.qpid.client.AMQConnection; - /** * FailoverSupport defines an interface for different types of fail-over handlers, that provide different types of * behaviour for handling fail-overs during operations that can be interrupted by the fail-over process. For example, diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/BasicCancelOkMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/BasicCancelOkMethodHandler.java index bd8177feb6..8f0ee05b3e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/BasicCancelOkMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/BasicCancelOkMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; @@ -28,9 +27,13 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.BasicCancelOkBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class BasicCancelOkMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(BasicCancelOkMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(BasicCancelOkMethodHandler.class); + private static final BasicCancelOkMethodHandler _instance = new BasicCancelOkMethodHandler(); public static BasicCancelOkMethodHandler getInstance() @@ -39,10 +42,10 @@ public class BasicCancelOkMethodHandler implements StateAwareMethodListener } private BasicCancelOkMethodHandler() - { - } + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { BasicCancelOkBody body = (BasicCancelOkBody) evt.getMethod(); diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/BasicDeliverMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/BasicDeliverMethodHandler.java index d34d6688c1..51120da55c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/BasicDeliverMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/BasicDeliverMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.message.UnprocessedMessage; import org.apache.qpid.client.protocol.AMQProtocolSession; @@ -29,9 +28,12 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.BasicDeliverBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class BasicDeliverMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(BasicDeliverMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(BasicDeliverMethodHandler.class); private static final BasicDeliverMethodHandler _instance = new BasicDeliverMethodHandler(); @@ -40,7 +42,8 @@ public class BasicDeliverMethodHandler implements StateAwareMethodListener return _instance; } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { final UnprocessedMessage msg = new UnprocessedMessage(evt.getChannelId(), (BasicDeliverBody) evt.getMethod()); _logger.debug("New JmsDeliver method received"); diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/BasicReturnMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/BasicReturnMethodHandler.java index 02573c5d00..0f00c6a26e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/BasicReturnMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/BasicReturnMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.message.UnprocessedMessage; import org.apache.qpid.client.protocol.AMQProtocolSession; @@ -29,9 +28,12 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.BasicReturnBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class BasicReturnMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(BasicReturnMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(BasicReturnMethodHandler.class); private static final BasicReturnMethodHandler _instance = new BasicReturnMethodHandler(); @@ -40,10 +42,11 @@ public class BasicReturnMethodHandler implements StateAwareMethodListener return _instance; } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.debug("New JmsBounce method received"); - final UnprocessedMessage msg = new UnprocessedMessage(evt.getChannelId(),(BasicReturnBody)evt.getMethod()); + final UnprocessedMessage msg = new UnprocessedMessage(evt.getChannelId(), (BasicReturnBody) evt.getMethod()); protocolSession.unprocessedMessageReceived(msg); } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseMethodHandler.java index f62baf2c3a..139a32370e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQChannelClosedException; import org.apache.qpid.AMQException; import org.apache.qpid.AMQInvalidRoutingKeyException; @@ -36,9 +35,12 @@ import org.apache.qpid.framing.ChannelCloseOkBody; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ChannelCloseMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ChannelCloseMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(ChannelCloseMethodHandler.class); private static ChannelCloseMethodHandler _handler = new ChannelCloseMethodHandler(); @@ -47,7 +49,8 @@ public class ChannelCloseMethodHandler implements StateAwareMethodListener return _handler; } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.debug("ChannelClose method received"); ChannelCloseBody method = (ChannelCloseBody) evt.getMethod(); @@ -68,6 +71,7 @@ public class ChannelCloseMethodHandler implements StateAwareMethodListener { _logger.debug("Channel close received with errorCode " + errorCode + ", and reason " + reason); } + if (errorCode == AMQConstant.NO_CONSUMERS) { throw new AMQNoConsumersException("Error: " + reason, null); @@ -94,7 +98,7 @@ public class ChannelCloseMethodHandler implements StateAwareMethodListener } } - //fixme why is this only done when the close is expected... + // fixme why is this only done when the close is expected... // should the above forced closes not also cause a close? protocolSession.channelClosed(evt.getChannelId(), errorCode, String.valueOf(reason)); } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseOkMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseOkMethodHandler.java index 0826deb2f4..e1fe2697e5 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseOkMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelCloseOkMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,16 +20,18 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ChannelCloseOkMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ChannelCloseOkMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(ChannelCloseOkMethodHandler.class); private static final ChannelCloseOkMethodHandler _instance = new ChannelCloseOkMethodHandler(); @@ -38,10 +40,11 @@ public class ChannelCloseOkMethodHandler implements StateAwareMethodListener return _instance; } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.info("Received channel-close-ok for channel-id " + evt.getChannelId()); - //todo this should do the local closure + // todo this should do the local closure } } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelFlowOkMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelFlowOkMethodHandler.java index 1f003649c0..ca3f46d08b 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ChannelFlowOkMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ChannelFlowOkMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; @@ -28,23 +27,26 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.ChannelFlowOkBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ChannelFlowOkMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ChannelFlowOkMethodHandler.class); - private static final ChannelFlowOkMethodHandler _instance = new ChannelFlowOkMethodHandler(); + private static final Logger _logger = LoggerFactory.getLogger(ChannelFlowOkMethodHandler.class); + private static final ChannelFlowOkMethodHandler _instance = new ChannelFlowOkMethodHandler(); - public static ChannelFlowOkMethodHandler getInstance() - { - return _instance; - } + public static ChannelFlowOkMethodHandler getInstance() + { + return _instance; + } - private ChannelFlowOkMethodHandler() - { - } + private ChannelFlowOkMethodHandler() + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException - { - ChannelFlowOkBody method = (ChannelFlowOkBody) evt.getMethod(); - _logger.debug("Received Channel.Flow-Ok message, active = " + method.active); - } + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException + { + ChannelFlowOkBody method = (ChannelFlowOkBody) evt.getMethod(); + _logger.debug("Received Channel.Flow-Ok message, active = " + method.active); + } } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionCloseMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionCloseMethodHandler.java index 9c8e9188ec..df096d3c4e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionCloseMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionCloseMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQConnectionClosedException; import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQAuthenticationException; @@ -34,9 +33,12 @@ import org.apache.qpid.framing.ConnectionCloseOkBody; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ConnectionCloseMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ConnectionCloseMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(ConnectionCloseMethodHandler.class); private static ConnectionCloseMethodHandler _handler = new ConnectionCloseMethodHandler(); @@ -46,16 +48,16 @@ public class ConnectionCloseMethodHandler implements StateAwareMethodListener } private ConnectionCloseMethodHandler() - { - } + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.info("ConnectionClose frame received"); ConnectionCloseBody method = (ConnectionCloseBody) evt.getMethod(); // does it matter - //stateManager.changeState(AMQState.CONNECTION_CLOSING); + // stateManager.changeState(AMQState.CONNECTION_CLOSING); AMQConstant errorCode = AMQConstant.getConstant(method.replyCode); AMQShortString reason = method.replyText; @@ -64,7 +66,8 @@ public class ConnectionCloseMethodHandler implements StateAwareMethodListener { // TODO: check whether channel id of zero is appropriate // Be aware of possible changes to parameter order as versions change. - protocolSession.writeFrame(ConnectionCloseOkBody.createAMQFrame((short) 0, method.getMajor(), method.getMinor())); + protocolSession.writeFrame(ConnectionCloseOkBody.createAMQFrame((short) 0, method.getMajor(), + method.getMinor())); if (errorCode != AMQConstant.REPLY_SUCCESS) { @@ -74,16 +77,15 @@ public class ConnectionCloseMethodHandler implements StateAwareMethodListener protocolSession.closeProtocolSession(); - //todo this is a bit of a fudge (could be conssidered such as each new connection needs a new state manager or at least a fresh state. + // todo this is a bit of a fudge (could be conssidered such as each new connection needs a new state manager or at least a fresh state. stateManager.changeState(AMQState.CONNECTION_NOT_STARTED); - throw new AMQAuthenticationException(errorCode, reason == null ? null : reason.toString()); + throw new AMQAuthenticationException(errorCode, (reason == null) ? null : reason.toString()); } else { _logger.info("Connection close received with error code " + errorCode); - throw new AMQConnectionClosedException(errorCode, "Error: " + reason); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionRedirectMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionRedirectMethodHandler.java index 866f65b384..213c0eba6e 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionRedirectMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionRedirectMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; @@ -28,9 +27,12 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.ConnectionRedirectBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ConnectionRedirectMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ConnectionRedirectMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(ConnectionRedirectMethodHandler.class); private static final int DEFAULT_REDIRECT_PORT = 5672; @@ -42,10 +44,10 @@ public class ConnectionRedirectMethodHandler implements StateAwareMethodListener } private ConnectionRedirectMethodHandler() - { - } + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.info("ConnectionRedirect frame received"); ConnectionRedirectBody method = (ConnectionRedirectBody) evt.getMethod(); @@ -65,6 +67,7 @@ public class ConnectionRedirectMethodHandler implements StateAwareMethodListener host = host.substring(0, portIndex); } + protocolSession.failover(host, port); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java index 28c0c4f3c9..f14e256172 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionStartMethodHandler.java @@ -20,16 +20,6 @@ */ package org.apache.qpid.client.handler; -import java.io.UnsupportedEncodingException; -import java.util.HashSet; -import java.util.StringTokenizer; - -import javax.security.sasl.Sasl; -import javax.security.sasl.SaslClient; -import javax.security.sasl.SaslException; - -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.security.AMQCallbackHandler; @@ -47,9 +37,20 @@ import org.apache.qpid.framing.FieldTableFactory; import org.apache.qpid.framing.ProtocolVersion; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.security.sasl.Sasl; +import javax.security.sasl.SaslClient; +import javax.security.sasl.SaslException; + +import java.io.UnsupportedEncodingException; +import java.util.HashSet; +import java.util.StringTokenizer; + public class ConnectionStartMethodHandler implements StateAwareMethodListener { - private static final Logger _log = Logger.getLogger(ConnectionStartMethodHandler.class); + private static final Logger _log = LoggerFactory.getLogger(ConnectionStartMethodHandler.class); private static final ConnectionStartMethodHandler _instance = new ConnectionStartMethodHandler(); @@ -62,15 +63,14 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener { } public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) - throws AMQException + throws AMQException { _log.debug("public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, " - + "AMQMethodEvent evt): called"); + + "AMQMethodEvent evt): called"); ConnectionStartBody body = (ConnectionStartBody) evt.getMethod(); - ProtocolVersion pv = new ProtocolVersion((byte) body.versionMajor,(byte) body.versionMinor); - + ProtocolVersion pv = new ProtocolVersion((byte) body.versionMajor, (byte) body.versionMinor); // For the purposes of interop, we can make the client accept the broker's version string. // If it does, it then internally records the version as being the latest one that it understands. @@ -110,7 +110,7 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener { SaslClient sc = Sasl.createSaslClient(new String[] { mechanism }, null, "AMQP", "localhost", null, - createCallbackHandler(mechanism, protocolSession)); + createCallbackHandler(mechanism, protocolSession)); if (sc == null) { throw new AMQException( @@ -149,23 +149,22 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener FieldTable clientProperties = FieldTableFactory.newFieldTable(); clientProperties.setString(new AMQShortString(ClientProperties.instance.toString()), - protocolSession.getClientID()); + protocolSession.getClientID()); clientProperties.setString(new AMQShortString(ClientProperties.product.toString()), - QpidProperties.getProductName()); + QpidProperties.getProductName()); clientProperties.setString(new AMQShortString(ClientProperties.version.toString()), - QpidProperties.getReleaseVersion()); + QpidProperties.getReleaseVersion()); clientProperties.setString(new AMQShortString(ClientProperties.platform.toString()), getFullSystemInfo()); // AMQP version change: Hardwire the version to 0-8 (major=8, minor=0) // TODO: Connect this to the session version obtained from ProtocolInitiation for this session. // Be aware of possible changes to parameter order as versions change. protocolSession.writeFrame(ConnectionStartOkBody.createAMQFrame(evt.getChannelId(), - protocolSession.getProtocolMajorVersion(), - protocolSession.getProtocolMinorVersion(), - clientProperties, // clientProperties - new AMQShortString(selectedLocale), // locale - new AMQShortString(mechanism), // mechanism - saslResponse)); // response + protocolSession.getProtocolMajorVersion(), protocolSession.getProtocolMinorVersion(), + clientProperties, // clientProperties + new AMQShortString(selectedLocale), // locale + new AMQShortString(mechanism), // mechanism + saslResponse)); // response } catch (UnsupportedEncodingException e) @@ -176,13 +175,12 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener else { _log.error("Broker requested Protocol [" + body.versionMajor + "-" + body.versionMinor - + "] which is not supported by this version of the client library"); + + "] which is not supported by this version of the client library"); protocolSession.closeProtocolSession(); } } - private String getFullSystemInfo() { StringBuffer fullSystemInfo = new StringBuffer(); @@ -222,7 +220,7 @@ public class ConnectionStartMethodHandler implements StateAwareMethodListener } private AMQCallbackHandler createCallbackHandler(String mechanism, AMQProtocolSession protocolSession) - throws AMQException + throws AMQException { Class mechanismClass = CallbackHandlerRegistry.getInstance().getCallbackHandlerClass(mechanism); try diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionTuneMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionTuneMethodHandler.java index 67f1a6519f..68556991d7 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionTuneMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ConnectionTuneMethodHandler.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.ConnectionTuneParameters; import org.apache.qpid.client.protocol.AMQProtocolSession; @@ -34,9 +33,12 @@ import org.apache.qpid.framing.ConnectionTuneBody; import org.apache.qpid.framing.ConnectionTuneOkBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ConnectionTuneMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ConnectionTuneMethodHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(ConnectionTuneMethodHandler.class); private static final ConnectionTuneMethodHandler _instance = new ConnectionTuneMethodHandler(); @@ -46,10 +48,10 @@ public class ConnectionTuneMethodHandler implements StateAwareMethodListener } protected ConnectionTuneMethodHandler() - { - } + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.debug("ConnectionTune frame received"); ConnectionTuneBody frame = (ConnectionTuneBody) evt.getMethod(); @@ -60,38 +62,36 @@ public class ConnectionTuneMethodHandler implements StateAwareMethodListener params = new ConnectionTuneParameters(); } - params.setFrameMax(frame.frameMax); + params.setFrameMax(frame.frameMax); params.setChannelMax(frame.channelMax); params.setHeartbeat(Integer.getInteger("amqj.heartbeat.delay", frame.heartbeat)); protocolSession.setConnectionTuneParameters(params); stateManager.changeState(AMQState.CONNECTION_NOT_OPENED); - protocolSession.writeFrame(createTuneOkFrame(evt.getChannelId(), params,frame.getMajor(), frame.getMinor())); + protocolSession.writeFrame(createTuneOkFrame(evt.getChannelId(), params, frame.getMajor(), frame.getMinor())); String host = protocolSession.getAMQConnection().getVirtualHost(); AMQShortString virtualHost = new AMQShortString("/" + host); - - protocolSession.writeFrame(createConnectionOpenFrame(evt.getChannelId(), virtualHost, null, true,frame.getMajor(), frame.getMinor())); + protocolSession.writeFrame(createConnectionOpenFrame(evt.getChannelId(), virtualHost, null, true, frame.getMajor(), + frame.getMinor())); } - protected AMQFrame createConnectionOpenFrame(int channel, AMQShortString path, AMQShortString capabilities, boolean insist, byte major, byte minor) + protected AMQFrame createConnectionOpenFrame(int channel, AMQShortString path, AMQShortString capabilities, + boolean insist, byte major, byte minor) { // Be aware of possible changes to parameter order as versions change. - return ConnectionOpenBody.createAMQFrame(channel, - major, minor, // AMQP version (major, minor) - capabilities, // capabilities - insist, // insist - path); // virtualHost + return ConnectionOpenBody.createAMQFrame(channel, major, minor, // AMQP version (major, minor) + capabilities, // capabilities + insist, // insist + path); // virtualHost } protected AMQFrame createTuneOkFrame(int channel, ConnectionTuneParameters params, byte major, byte minor) { // Be aware of possible changes to parameter order as versions change. - return ConnectionTuneOkBody.createAMQFrame(channel, - major, minor, - params.getChannelMax(), // channelMax - params.getFrameMax(), // frameMax - params.getHeartbeat()); // heartbeat + return ConnectionTuneOkBody.createAMQFrame(channel, major, minor, params.getChannelMax(), // channelMax + params.getFrameMax(), // frameMax + params.getHeartbeat()); // heartbeat } } diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/ExchangeBoundOkMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/ExchangeBoundOkMethodHandler.java index 146c705c00..8f9a84a3a6 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/ExchangeBoundOkMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/ExchangeBoundOkMethodHandler.java @@ -17,7 +17,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; @@ -25,32 +24,33 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.ExchangeBoundOkBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * @author Apache Software Foundation */ public class ExchangeBoundOkMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ExchangeBoundOkMethodHandler.class); - private static final ExchangeBoundOkMethodHandler _instance = new ExchangeBoundOkMethodHandler(); + private static final Logger _logger = LoggerFactory.getLogger(ExchangeBoundOkMethodHandler.class); + private static final ExchangeBoundOkMethodHandler _instance = new ExchangeBoundOkMethodHandler(); - public static ExchangeBoundOkMethodHandler getInstance() - { - return _instance; - } + public static ExchangeBoundOkMethodHandler getInstance() + { + return _instance; + } - private ExchangeBoundOkMethodHandler() - { - } + private ExchangeBoundOkMethodHandler() + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException - { - if (_logger.isDebugEnabled()) - { + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException + { + if (_logger.isDebugEnabled()) + { ExchangeBoundOkBody body = (ExchangeBoundOkBody) evt.getMethod(); - _logger.debug("Received Exchange.Bound-Ok message, response code: " + body.replyCode + " text: " + - body.replyText); - } - } + _logger.debug("Received Exchange.Bound-Ok message, response code: " + body.replyCode + " text: " + + body.replyText); + } + } } - - diff --git a/java/client/src/main/java/org/apache/qpid/client/handler/QueueDeleteOkMethodHandler.java b/java/client/src/main/java/org/apache/qpid/client/handler/QueueDeleteOkMethodHandler.java index eaf4721445..81228b4cdc 100644 --- a/java/client/src/main/java/org/apache/qpid/client/handler/QueueDeleteOkMethodHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/handler/QueueDeleteOkMethodHandler.java @@ -17,7 +17,6 @@ */ package org.apache.qpid.client.handler; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.protocol.AMQProtocolSession; import org.apache.qpid.client.state.AMQStateManager; @@ -25,31 +24,32 @@ import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.QueueDeleteOkBody; import org.apache.qpid.protocol.AMQMethodEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * @author Apache Software Foundation */ public class QueueDeleteOkMethodHandler implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(QueueDeleteOkMethodHandler.class); - private static final QueueDeleteOkMethodHandler _instance = new QueueDeleteOkMethodHandler(); + private static final Logger _logger = LoggerFactory.getLogger(QueueDeleteOkMethodHandler.class); + private static final QueueDeleteOkMethodHandler _instance = new QueueDeleteOkMethodHandler(); - public static QueueDeleteOkMethodHandler getInstance() - { - return _instance; - } + public static QueueDeleteOkMethodHandler getInstance() + { + return _instance; + } - private QueueDeleteOkMethodHandler() - { - } + private QueueDeleteOkMethodHandler() + { } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException - { - if (_logger.isDebugEnabled()) - { + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException + { + if (_logger.isDebugEnabled()) + { QueueDeleteOkBody body = (QueueDeleteOkBody) evt.getMethod(); _logger.debug("Received Queue.Delete-Ok message, message count: " + body.messageCount); - } - } + } + } } - - diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java index e60539c064..2dfeb19268 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessage.java @@ -20,18 +20,10 @@ */ package org.apache.qpid.client.message; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Map; -import java.util.UUID; - -import javax.jms.Destination; -import javax.jms.JMSException; -import javax.jms.MessageNotReadableException; -import javax.jms.MessageNotWriteableException; - import org.apache.commons.collections.map.ReferenceMap; + import org.apache.mina.common.ByteBuffer; + import org.apache.qpid.AMQException; import org.apache.qpid.client.*; import org.apache.qpid.framing.AMQShortString; @@ -41,6 +33,16 @@ import org.apache.qpid.url.AMQBindingURL; import org.apache.qpid.url.BindingURL; import org.apache.qpid.url.URLSyntaxException; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.MessageNotReadableException; +import javax.jms.MessageNotWriteableException; + +import java.util.Collections; +import java.util.Enumeration; +import java.util.Map; +import java.util.UUID; + public abstract class AbstractJMSMessage extends AMQMessage implements org.apache.qpid.jms.Message { private static final Map _destinationCache = Collections.synchronizedMap(new ReferenceMap()); @@ -70,33 +72,32 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach _changedData = (data == null); _headerAdapter = new JMSHeaderAdapter(((BasicContentHeaderProperties) _contentHeaderProperties).getHeaders()); - _strictAMQP = Boolean.parseBoolean(System.getProperties().getProperty(AMQSession.STRICT_AMQP, AMQSession.STRICT_AMQP_DEFAULT)); + _strictAMQP = + Boolean.parseBoolean(System.getProperties().getProperty(AMQSession.STRICT_AMQP, AMQSession.STRICT_AMQP_DEFAULT)); } protected AbstractJMSMessage(long deliveryTag, BasicContentHeaderProperties contentHeader, AMQShortString exchange, - AMQShortString routingKey, ByteBuffer data) throws AMQException + AMQShortString routingKey, ByteBuffer data) throws AMQException { this(contentHeader, deliveryTag); Integer type = contentHeader.getHeaders().getInteger(CustomJMSXProperty.JMS_QPID_DESTTYPE.getShortStringName()); - AMQDestination dest; - - if(AMQDestination.QUEUE_TYPE.equals(type)) + if (AMQDestination.QUEUE_TYPE.equals(type)) { - dest = new AMQQueue(exchange, routingKey, routingKey); + dest = new AMQQueue(exchange, routingKey, routingKey); } - else if(AMQDestination.TOPIC_TYPE.equals(type)) + else if (AMQDestination.TOPIC_TYPE.equals(type)) { - dest = new AMQTopic(exchange, routingKey, null); + dest = new AMQTopic(exchange, routingKey, null); } else { - dest = new AMQUndefinedDestination(exchange, routingKey, null); + dest = new AMQUndefinedDestination(exchange, routingKey, null); } - //Destination dest = AMQDestination.createDestination(url); + // Destination dest = AMQDestination.createDestination(url); setJMSDestination(dest); _data = data; @@ -200,7 +201,7 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach if (!(destination instanceof AMQDestination)) { throw new IllegalArgumentException( - "ReplyTo destination may only be an AMQDestination - passed argument was type " + destination.getClass()); + "ReplyTo destination may only be an AMQDestination - passed argument was type " + destination.getClass()); } final AMQDestination amqd = (AMQDestination) destination; @@ -612,7 +613,6 @@ public abstract class AbstractJMSMessage extends AMQMessage implements org.apach getContentHeaderProperties().setHeaders(messageProperties); } - public JMSHeaderAdapter getJmsHeaders() { return _headerAdapter; diff --git a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java index 5deaec4c17..87df7e1337 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/AbstractJMSMessageFactory.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,51 +20,53 @@ */ package org.apache.qpid.client.message; -import java.util.Iterator; -import java.util.List; - -import javax.jms.JMSException; - -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; + import org.apache.qpid.AMQException; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.ContentBody; import org.apache.qpid.framing.ContentHeaderBody; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; + +import java.util.Iterator; +import java.util.List; + public abstract class AbstractJMSMessageFactory implements MessageFactory { - private static final Logger _logger = Logger.getLogger(AbstractJMSMessageFactory.class); - + private static final Logger _logger = LoggerFactory.getLogger(AbstractJMSMessageFactory.class); - protected abstract AbstractJMSMessage createMessage(long messageNbr, ByteBuffer data, - AMQShortString exchange, AMQShortString routingKey, - ContentHeaderBody contentHeader) throws AMQException; + protected abstract AbstractJMSMessage createMessage(long messageNbr, ByteBuffer data, AMQShortString exchange, + AMQShortString routingKey, ContentHeaderBody contentHeader) throws AMQException; - protected AbstractJMSMessage createMessageWithBody(long messageNbr, - ContentHeaderBody contentHeader, - AMQShortString exchange, AMQShortString routingKey, - List bodies) throws AMQException + protected AbstractJMSMessage createMessageWithBody(long messageNbr, ContentHeaderBody contentHeader, + AMQShortString exchange, AMQShortString routingKey, List bodies) throws AMQException { ByteBuffer data; final boolean debug = _logger.isDebugEnabled(); // we optimise the non-fragmented case to avoid copying - if (bodies != null && bodies.size() == 1) + if ((bodies != null) && (bodies.size() == 1)) { - if(debug) + if (debug) { - _logger.debug("Non-fragmented message body (bodySize=" + contentHeader.bodySize +")"); + _logger.debug("Non-fragmented message body (bodySize=" + contentHeader.bodySize + ")"); } - data = ((ContentBody)bodies.get(0)).payload; + + data = ((ContentBody) bodies.get(0)).payload; } else if (bodies != null) { - if(debug) + if (debug) { - _logger.debug("Fragmented message body (" + bodies.size() + " frames, bodySize=" + contentHeader.bodySize + ")"); + _logger.debug("Fragmented message body (" + bodies.size() + " frames, bodySize=" + contentHeader.bodySize + + ")"); } - data = ByteBuffer.allocate((int)contentHeader.bodySize); // XXX: Is cast a problem? + + data = ByteBuffer.allocate((int) contentHeader.bodySize); // XXX: Is cast a problem? final Iterator it = bodies.iterator(); while (it.hasNext()) { @@ -72,27 +74,29 @@ public abstract class AbstractJMSMessageFactory implements MessageFactory data.put(cb.payload); cb.payload.release(); } + data.flip(); } else // bodies == null { data = ByteBuffer.allocate(0); } - if(debug) + + if (debug) { - _logger.debug("Creating message from buffer with position=" + data.position() + " and remaining=" + data.remaining()); + _logger.debug("Creating message from buffer with position=" + data.position() + " and remaining=" + + data.remaining()); } return createMessage(messageNbr, data, exchange, routingKey, contentHeader); } - public AbstractJMSMessage createMessage(long messageNbr, boolean redelivered, - ContentHeaderBody contentHeader, - AMQShortString exchange, AMQShortString routingKey, - List bodies) throws JMSException, AMQException + public AbstractJMSMessage createMessage(long messageNbr, boolean redelivered, ContentHeaderBody contentHeader, + AMQShortString exchange, AMQShortString routingKey, List bodies) throws JMSException, AMQException { final AbstractJMSMessage msg = createMessageWithBody(messageNbr, contentHeader, exchange, routingKey, bodies); msg.setJMSRedelivered(redelivered); + return msg; } diff --git a/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java b/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java index 63b16ebbd6..a70acbabbe 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/JMSMapMessage.java @@ -14,36 +14,38 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.client.message; +import org.apache.mina.common.ByteBuffer; + +import org.apache.qpid.AMQException; +import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.framing.ContentHeaderBody; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.MessageFormatException; + import java.nio.charset.CharacterCodingException; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; -import javax.jms.JMSException; -import javax.jms.MessageFormatException; - -import org.apache.log4j.Logger; -import org.apache.mina.common.ByteBuffer; -import org.apache.qpid.AMQException; -import org.apache.qpid.framing.AMQShortString; -import org.apache.qpid.framing.ContentHeaderBody; - public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jms.MapMessage { - private static final Logger _logger = Logger.getLogger(JMSMapMessage.class); - + private static final Logger _logger = LoggerFactory.getLogger(JMSMapMessage.class); public static final String MIME_TYPE = "jms/map-message"; private static final AMQShortString MIME_TYPE_SHORT_STRING = new AMQShortString(MIME_TYPE); - private Map<String,Object> _map = new HashMap<String, Object>(); + private Map<String, Object> _map = new HashMap<String, Object>(); public JMSMapMessage() throws JMSException { @@ -56,24 +58,22 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm populateMapFromData(); } - - JMSMapMessage(long messageNbr, ContentHeaderBody contentHeader, AMQShortString exchange, - AMQShortString routingKey, ByteBuffer data) throws AMQException + JMSMapMessage(long messageNbr, ContentHeaderBody contentHeader, AMQShortString exchange, AMQShortString routingKey, + ByteBuffer data) throws AMQException { super(messageNbr, contentHeader, exchange, routingKey, data); try { populateMapFromData(); - } + } catch (JMSException je) { throw new AMQException("Error populating MapMessage from ByteBuffer", je); - + } } - public String toBodyString() throws JMSException { return _map.toString(); @@ -84,16 +84,14 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm return MIME_TYPE_SHORT_STRING; } - public ByteBuffer getData() { - //What if _data is null? + // What if _data is null? writeMapToData(); + return super.getData(); } - - @Override public void clearBodyImpl() throws JMSException { @@ -105,18 +103,18 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(value instanceof Boolean) + if (value instanceof Boolean) { - return ((Boolean)value).booleanValue(); + return ((Boolean) value).booleanValue(); } - else if((value instanceof String) || (value == null)) + else if ((value instanceof String) || (value == null)) { - return Boolean.valueOf((String)value); + return Boolean.valueOf((String) value); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to boolean."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to boolean."); } } @@ -125,18 +123,18 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(value instanceof Byte) + if (value instanceof Byte) { - return ((Byte)value).byteValue(); + return ((Byte) value).byteValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Byte.valueOf((String)value).byteValue(); + return Byte.valueOf((String) value).byteValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to byte."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to byte."); } } @@ -144,51 +142,50 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(value instanceof Short) + if (value instanceof Short) { - return ((Short)value).shortValue(); + return ((Short) value).shortValue(); } - else if(value instanceof Byte) + else if (value instanceof Byte) { - return ((Byte)value).shortValue(); + return ((Byte) value).shortValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Short.valueOf((String)value).shortValue(); + return Short.valueOf((String) value).shortValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to short."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to short."); } } - public int getInt(String propName) throws JMSException { Object value = _map.get(propName); - if(value instanceof Integer) + if (value instanceof Integer) { - return ((Integer)value).intValue(); + return ((Integer) value).intValue(); } - else if(value instanceof Short) + else if (value instanceof Short) { - return ((Short)value).intValue(); + return ((Short) value).intValue(); } - else if(value instanceof Byte) + else if (value instanceof Byte) { - return ((Byte)value).intValue(); + return ((Byte) value).intValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Integer.valueOf((String)value).intValue(); + return Integer.valueOf((String) value).intValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to int."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to int."); } } @@ -197,30 +194,32 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(value instanceof Long) + if (value instanceof Long) { - return ((Long)value).longValue(); + return ((Long) value).longValue(); } - else if(value instanceof Integer) + else if (value instanceof Integer) { - return ((Integer)value).longValue(); + return ((Integer) value).longValue(); } - if(value instanceof Short) + + if (value instanceof Short) { - return ((Short)value).longValue(); + return ((Short) value).longValue(); } - if(value instanceof Byte) + + if (value instanceof Byte) { - return ((Byte)value).longValue(); + return ((Byte) value).longValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Long.valueOf((String)value).longValue(); + return Long.valueOf((String) value).longValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to long."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to long."); } } @@ -229,45 +228,43 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(!_map.containsKey(propName)) + if (!_map.containsKey(propName)) { throw new MessageFormatException("Property " + propName + " not present"); } - else if(value instanceof Character) + else if (value instanceof Character) { - return ((Character)value).charValue(); + return ((Character) value).charValue(); } else if (value == null) { - throw new NullPointerException("Property " + propName + " has null value and therefore cannot " + - "be converted to char."); + throw new NullPointerException("Property " + propName + " has null value and therefore cannot " + + "be converted to char."); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to boolan."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to boolan."); } } - - public float getFloat(String propName) throws JMSException { Object value = _map.get(propName); - if(value instanceof Float) + if (value instanceof Float) { - return ((Float)value).floatValue(); + return ((Float) value).floatValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Float.valueOf((String)value).floatValue(); + return Float.valueOf((String) value).floatValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to float."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to float."); } } @@ -275,22 +272,22 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(value instanceof Double) + if (value instanceof Double) { - return ((Double)value).doubleValue(); + return ((Double) value).doubleValue(); } - else if(value instanceof Float) + else if (value instanceof Float) { - return ((Float)value).doubleValue(); + return ((Float) value).doubleValue(); } - else if((value instanceof String) || (value==null)) + else if ((value instanceof String) || (value == null)) { - return Double.valueOf((String)value).doubleValue(); + return Double.valueOf((String) value).doubleValue(); } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to double."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to double."); } } @@ -298,14 +295,13 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if((value instanceof String) || (value == null)) + if ((value instanceof String) || (value == null)) { return (String) value; } - else if(value instanceof byte[]) + else if (value instanceof byte[]) { - throw new MessageFormatException("Property " + propName + " of type byte[] " + - "cannot be converted to String."); + throw new MessageFormatException("Property " + propName + " of type byte[] " + "cannot be converted to String."); } else { @@ -318,18 +314,18 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm { Object value = _map.get(propName); - if(!_map.containsKey(propName)) + if (!_map.containsKey(propName)) { - throw new MessageFormatException("Property " + propName + " not present"); + throw new MessageFormatException("Property " + propName + " not present"); } - else if((value instanceof byte[]) || (value == null)) + else if ((value instanceof byte[]) || (value == null)) { - return (byte[])value; + return (byte[]) value; } else { - throw new MessageFormatException("Property " + propName + " of type " + - value.getClass().getName() + " cannot be converted to byte[]."); + throw new MessageFormatException("Property " + propName + " of type " + value.getClass().getName() + + " cannot be converted to byte[]."); } } @@ -343,7 +339,6 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm return Collections.enumeration(_map.keySet()); } - public void setBoolean(String propName, boolean b) throws JMSException { checkWritable(); @@ -416,46 +411,38 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm public void setBytes(String propName, byte[] bytes, int offset, int length) throws JMSException { - if((offset == 0) && (length == bytes.length)) + if ((offset == 0) && (length == bytes.length)) { - setBytes(propName,bytes); + setBytes(propName, bytes); } else { byte[] newBytes = new byte[length]; - System.arraycopy(bytes,offset,newBytes,0,length); - setBytes(propName,newBytes); + System.arraycopy(bytes, offset, newBytes, 0, length); + setBytes(propName, newBytes); } } public void setObject(String propName, Object value) throws JMSException - { + { checkWritable(); checkPropertyName(propName); - if(value instanceof Boolean - || value instanceof Byte - || value instanceof Short - || value instanceof Integer - || value instanceof Long - || value instanceof Character - || value instanceof Float - || value instanceof Double - || value instanceof String - || value instanceof byte[] - || value == null) + if ((value instanceof Boolean) || (value instanceof Byte) || (value instanceof Short) || (value instanceof Integer) + || (value instanceof Long) || (value instanceof Character) || (value instanceof Float) + || (value instanceof Double) || (value instanceof String) || (value instanceof byte[]) || (value == null)) { _map.put(propName, value); } else { - throw new MessageFormatException("Cannot set property " + propName + " to value " + value + - "of type " + value.getClass().getName() + "."); + throw new MessageFormatException("Cannot set property " + propName + " to value " + value + "of type " + + value.getClass().getName() + "."); } } private void checkPropertyName(String propName) { - if(propName == null || propName.equals("")) + if ((propName == null) || propName.equals("")) { throw new IllegalArgumentException("Property name cannot be null, or the empty String."); } @@ -466,19 +453,18 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm return _map.containsKey(propName); } - private void populateMapFromData() throws JMSException { - if(_data != null) + if (_data != null) { _data.rewind(); final int entries = readIntImpl(); - for(int i = 0; i < entries; i++) + for (int i = 0; i < entries; i++) { String propName = readStringImpl(); Object value = readObject(); - _map.put(propName,value); + _map.put(propName, value); } } else @@ -492,7 +478,7 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm allocateInitialBuffer(); final int size = _map.size(); writeIntImpl(size); - for(Map.Entry<String, Object> entry : _map.entrySet()) + for (Map.Entry<String, Object> entry : _map.entrySet()) { try { @@ -500,10 +486,10 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm } catch (CharacterCodingException e) { - throw new IllegalArgumentException("Cannot encode property key name " + entry.getKey(),e); - + throw new IllegalArgumentException("Cannot encode property key name " + entry.getKey(), e); } + try { writeObject(entry.getValue()); @@ -511,14 +497,11 @@ public class JMSMapMessage extends AbstractBytesTypedMessage implements javax.jm catch (JMSException e) { Object value = entry.getValue(); - throw new IllegalArgumentException("Cannot encode property key name " + entry.getKey() + - " value : " + value + " (type: " + value.getClass().getName() + ").",e); + throw new IllegalArgumentException("Cannot encode property key name " + entry.getKey() + " value : " + value + + " (type: " + value.getClass().getName() + ").", e); } } } - - - } diff --git a/java/client/src/main/java/org/apache/qpid/client/message/MessageConverter.java b/java/client/src/main/java/org/apache/qpid/client/message/MessageConverter.java index 0afc8177fc..f6b11c6f6c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/MessageConverter.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/MessageConverter.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,7 +20,8 @@ */ package org.apache.qpid.client.message; -import java.util.Enumeration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.BytesMessage; import javax.jms.JMSException; @@ -31,7 +32,7 @@ import javax.jms.ObjectMessage; import javax.jms.StreamMessage; import javax.jms.TextMessage; -import org.apache.log4j.Logger; +import java.util.Enumeration; public class MessageConverter { @@ -39,7 +40,7 @@ public class MessageConverter /** * Log4J logger */ - protected final Logger _logger = Logger.getLogger(getClass()); + protected final Logger _logger = LoggerFactory.getLogger(getClass()); /** * AbstractJMSMessage which will hold the converted message @@ -81,6 +82,7 @@ public class MessageConverter String name = (String) mapNames.nextElement(); nativeMessage.setObject(name, message.getObject(name)); } + _newMessage = (AbstractJMSMessage) nativeMessage; setMessageProperties(message); } @@ -121,15 +123,16 @@ public class MessageConverter } catch (MessageEOFException e) { - //we're at the end so don't mind the exception + // we're at the end so don't mind the exception } + _newMessage = (AbstractJMSMessage) nativeMessage; setMessageProperties(message); } public MessageConverter(Message message) throws JMSException { - //Send a message with just properties. + // Send a message with just properties. // Throwing away content BytesMessage nativeMessage = new JMSBytesMessage(); @@ -160,7 +163,7 @@ public class MessageConverter while (propertyNames.hasMoreElements()) { String propertyName = String.valueOf(propertyNames.nextElement()); - //TODO: Shouldn't need to check for JMS properties here as don't think getPropertyNames() should return them + // TODO: Shouldn't need to check for JMS properties here as don't think getPropertyNames() should return them if (!propertyName.startsWith("JMSX_")) { Object value = message.getObjectProperty(propertyName); @@ -190,6 +193,7 @@ public class MessageConverter { _newMessage.setJMSReplyTo(message.getJMSReplyTo()); } + _newMessage.setJMSType(message.getJMSType()); _newMessage.setJMSCorrelationID(message.getJMSCorrelationID()); diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java index 5bf7bffc63..06446130b5 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolHandler.java @@ -20,8 +20,6 @@ */ package org.apache.qpid.client.protocol; -import org.apache.log4j.Logger; - import org.apache.mina.common.IdleStatus; import org.apache.mina.common.IoHandlerAdapter; import org.apache.mina.common.IoSession; @@ -58,6 +56,9 @@ import org.apache.qpid.protocol.AMQMethodEvent; import org.apache.qpid.protocol.AMQMethodListener; import org.apache.qpid.ssl.SSLContextFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.util.Iterator; import java.util.concurrent.CopyOnWriteArraySet; import java.util.concurrent.CountDownLatch; @@ -123,7 +124,7 @@ import java.util.concurrent.CountDownLatch; public class AMQProtocolHandler extends IoHandlerAdapter { /** Used for debugging. */ - private static final Logger _logger = Logger.getLogger(AMQProtocolHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQProtocolHandler.class); /** * The connection that this protocol handler is associated with. There is a 1-1 mapping between connection diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java index 386aae4ad1..466395f7a3 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/AMQProtocolSession.java @@ -20,16 +20,8 @@ */ package org.apache.qpid.client.protocol; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import javax.jms.JMSException; -import javax.security.sasl.SaslClient; - import org.apache.commons.lang.StringUtils; -import org.apache.log4j.Logger; - import org.apache.mina.common.CloseFuture; import org.apache.mina.common.IdleStatus; import org.apache.mina.common.IoSession; @@ -53,16 +45,24 @@ import org.apache.qpid.framing.VersionSpecificRegistry; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.protocol.AMQVersionAwareProtocolSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.security.sasl.SaslClient; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + /** * Wrapper for protocol session that provides type-safe access to session attributes. <p/> The underlying protocol * session is still available but clients should not use it to obtain session attributes. */ public class AMQProtocolSession implements AMQVersionAwareProtocolSession { - protected static final int LAST_WRITE_FUTURE_JOIN_TIMEOUT = 1000 * 60 * 2; - protected static final Logger _logger = Logger.getLogger(AMQProtocolSession.class); + protected static final Logger _logger = LoggerFactory.getLogger(AMQProtocolSession.class); public static final String PROTOCOL_INITIATION_RECEIVED = "ProtocolInitiatiionReceived"; diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/HeartbeatConfig.java b/java/client/src/main/java/org/apache/qpid/client/protocol/HeartbeatConfig.java index 6a7462cd0f..35ea44a331 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/HeartbeatConfig.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/HeartbeatConfig.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,11 +20,12 @@ */ package org.apache.qpid.client.protocol; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; class HeartbeatConfig { - private static final Logger _logger = Logger.getLogger(HeartbeatConfig.class); + private static final Logger _logger = LoggerFactory.getLogger(HeartbeatConfig.class); static final HeartbeatConfig CONFIG = new HeartbeatConfig(); /** @@ -35,13 +36,13 @@ class HeartbeatConfig HeartbeatConfig() { String property = System.getProperty("amqj.heartbeat.timeoutFactor"); - if(property != null) + if (property != null) { try { timeoutFactor = Float.parseFloat(property); } - catch(NumberFormatException e) + catch (NumberFormatException e) { _logger.warn("Invalid timeout factor (amqj.heartbeat.timeoutFactor): " + property); } diff --git a/java/client/src/main/java/org/apache/qpid/client/protocol/ProtocolBufferMonitorFilter.java b/java/client/src/main/java/org/apache/qpid/client/protocol/ProtocolBufferMonitorFilter.java index 652468d45d..93cc5e7ec3 100644 --- a/java/client/src/main/java/org/apache/qpid/client/protocol/ProtocolBufferMonitorFilter.java +++ b/java/client/src/main/java/org/apache/qpid/client/protocol/ProtocolBufferMonitorFilter.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,10 +20,12 @@ */ package org.apache.qpid.client.protocol; -import org.apache.log4j.Logger; import org.apache.mina.common.IoFilterAdapter; import org.apache.mina.common.IoSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * A MINA filter that monitors the numbers of messages pending to be sent by MINA. It outputs a message * when a threshold has been exceeded, and has a frequency configuration so that messages are not output @@ -32,13 +34,13 @@ import org.apache.mina.common.IoSession; */ public class ProtocolBufferMonitorFilter extends IoFilterAdapter { - private static final Logger _logger = Logger.getLogger(ProtocolBufferMonitorFilter.class); + private static final Logger _logger = LoggerFactory.getLogger(ProtocolBufferMonitorFilter.class); public static long DEFAULT_FREQUENCY = 5000; public static int DEFAULT_THRESHOLD = 3000; - private int _bufferedMessages = 0; + private int _bufferedMessages = 0; private int _threshold; @@ -58,7 +60,7 @@ public class ProtocolBufferMonitorFilter extends IoFilterAdapter _outputFrequencyInMillis = frequency; } - public void messageReceived( NextFilter nextFilter, IoSession session, Object message ) throws Exception + public void messageReceived(NextFilter nextFilter, IoSession session, Object message) throws Exception { _bufferedMessages++; if (_bufferedMessages > _threshold) @@ -66,8 +68,8 @@ public class ProtocolBufferMonitorFilter extends IoFilterAdapter long now = System.currentTimeMillis(); if ((now - _lastMessageOutputTime) > _outputFrequencyInMillis) { - _logger.warn("Protocol message buffer exceeded threshold of " + _threshold + ". Current backlog: " + - _bufferedMessages); + _logger.warn("Protocol message buffer exceeded threshold of " + _threshold + ". Current backlog: " + + _bufferedMessages); _lastMessageOutputTime = now; } } @@ -75,7 +77,7 @@ public class ProtocolBufferMonitorFilter extends IoFilterAdapter nextFilter.messageReceived(session, message); } - public void messageSent( NextFilter nextFilter, IoSession session, Object message ) throws Exception + public void messageSent(NextFilter nextFilter, IoSession session, Object message) throws Exception { _bufferedMessages--; nextFilter.messageSent(session, message); diff --git a/java/client/src/main/java/org/apache/qpid/client/security/CallbackHandlerRegistry.java b/java/client/src/main/java/org/apache/qpid/client/security/CallbackHandlerRegistry.java index 5c0f1de5bb..140cbdeb75 100644 --- a/java/client/src/main/java/org/apache/qpid/client/security/CallbackHandlerRegistry.java +++ b/java/client/src/main/java/org/apache/qpid/client/security/CallbackHandlerRegistry.java @@ -20,10 +20,11 @@ */ package org.apache.qpid.client.security; -import java.io.BufferedInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; +import org.apache.qpid.util.FileUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; @@ -31,10 +32,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; -import org.apache.log4j.Logger; - -import org.apache.qpid.util.FileUtils; - /** * CallbackHandlerRegistry is a registry for call back handlers for user authentication and interaction during user * authentication. It is capable of reading its configuration from a properties file containing call back handler @@ -60,7 +57,7 @@ import org.apache.qpid.util.FileUtils; */ public class CallbackHandlerRegistry { - private static final Logger _logger = Logger.getLogger(CallbackHandlerRegistry.class); + private static final Logger _logger = LoggerFactory.getLogger(CallbackHandlerRegistry.class); /** The name of the system property that holds the name of the callback handler properties file. */ private static final String FILE_PROPERTY = "amq.callbackhandler.properties"; @@ -121,7 +118,7 @@ public class CallbackHandlerRegistry String filename = System.getProperty(FILE_PROPERTY); InputStream is = FileUtils.openFileOrDefaultResource(filename, DEFAULT_RESOURCE_NAME, - CallbackHandlerRegistry.class.getClassLoader()); + CallbackHandlerRegistry.class.getClassLoader()); try { @@ -167,12 +164,12 @@ public class CallbackHandlerRegistry _logger.error("Unable to read from file " + filename + ": " + e, e); } } - + if (useDefault) { is = CallbackHandlerRegistry.class.getResourceAsStream(DEFAULT_RESOURCE_NAME); } - + return is; }*/ @@ -207,7 +204,7 @@ public class CallbackHandlerRegistry if (!AMQCallbackHandler.class.isAssignableFrom(clazz)) { _logger.warn("SASL provider " + clazz + " does not implement " + AMQCallbackHandler.class - + ". Skipping"); + + ". Skipping"); continue; } diff --git a/java/client/src/main/java/org/apache/qpid/client/security/DynamicSaslRegistrar.java b/java/client/src/main/java/org/apache/qpid/client/security/DynamicSaslRegistrar.java index 04db8044de..803b34b7fa 100644 --- a/java/client/src/main/java/org/apache/qpid/client/security/DynamicSaslRegistrar.java +++ b/java/client/src/main/java/org/apache/qpid/client/security/DynamicSaslRegistrar.java @@ -20,6 +20,13 @@ */ package org.apache.qpid.client.security; +import org.apache.qpid.util.FileUtils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.security.sasl.SaslClientFactory; + import java.io.IOException; import java.io.InputStream; import java.security.Security; @@ -28,13 +35,6 @@ import java.util.Map; import java.util.Properties; import java.util.TreeMap; -import javax.security.sasl.SaslClientFactory; - - -import org.apache.log4j.Logger; - -import org.apache.qpid.util.FileUtils; - /** * DynamicSaslRegistrar provides a collection of helper methods for reading a configuration file that contains a mapping * from SASL mechanism names to implementing client factory class names and registering a security provider with the @@ -55,7 +55,7 @@ import org.apache.qpid.util.FileUtils; */ public class DynamicSaslRegistrar { - private static final Logger _logger = Logger.getLogger(DynamicSaslRegistrar.class); + private static final Logger _logger = LoggerFactory.getLogger(DynamicSaslRegistrar.class); /** The name of the system property that holds the name of the SASL configuration properties. */ private static final String FILE_PROPERTY = "amq.dynamicsaslregistrar.properties"; @@ -71,8 +71,8 @@ public class DynamicSaslRegistrar // Open the SASL properties file, using the default name is one is not specified. String filename = System.getProperty(FILE_PROPERTY); InputStream is = - FileUtils.openFileOrDefaultResource(filename, DEFAULT_RESOURCE_NAME, - DynamicSaslRegistrar.class.getClassLoader()); + FileUtils.openFileOrDefaultResource(filename, DEFAULT_RESOURCE_NAME, + DynamicSaslRegistrar.class.getClassLoader()); try { @@ -169,7 +169,7 @@ public class DynamicSaslRegistrar Enumeration e = props.propertyNames(); TreeMap<String, Class<? extends SaslClientFactory>> factoriesToRegister = - new TreeMap<String, Class<? extends SaslClientFactory>>(); + new TreeMap<String, Class<? extends SaslClientFactory>>(); while (e.hasMoreElements()) { diff --git a/java/client/src/main/java/org/apache/qpid/client/security/JCAProvider.java b/java/client/src/main/java/org/apache/qpid/client/security/JCAProvider.java index 5bf120454e..5a2c5ac5c1 100644 --- a/java/client/src/main/java/org/apache/qpid/client/security/JCAProvider.java +++ b/java/client/src/main/java/org/apache/qpid/client/security/JCAProvider.java @@ -20,13 +20,13 @@ */ package org.apache.qpid.client.security; -import java.security.Provider; -import java.security.Security; -import java.util.Map; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.security.sasl.SaslClientFactory; -import org.apache.log4j.Logger; +import java.security.Provider; +import java.util.Map; /** * JCAProvider is a security provider for SASL client factories that is configured from a map of SASL mechanism names @@ -40,7 +40,7 @@ import org.apache.log4j.Logger; */ public class JCAProvider extends Provider { - private static final Logger log = Logger.getLogger(JCAProvider.class); + private static final Logger log = LoggerFactory.getLogger(JCAProvider.class); /** * Creates the security provider with a map from SASL mechanisms to implementing factories. @@ -50,9 +50,9 @@ public class JCAProvider extends Provider public JCAProvider(Map<String, Class<? extends SaslClientFactory>> providerMap) { super("AMQSASLProvider", 1.0, "A JCA provider that registers all " - + "AMQ SASL providers that want to be registered"); + + "AMQ SASL providers that want to be registered"); register(providerMap); -// Security.addProvider(this); + // Security.addProvider(this); } /** diff --git a/java/client/src/main/java/org/apache/qpid/client/security/UsernameHashedPasswordCallbackHandler.java b/java/client/src/main/java/org/apache/qpid/client/security/UsernameHashedPasswordCallbackHandler.java index 46323e8c09..66176dac3c 100644 --- a/java/client/src/main/java/org/apache/qpid/client/security/UsernameHashedPasswordCallbackHandler.java +++ b/java/client/src/main/java/org/apache/qpid/client/security/UsernameHashedPasswordCallbackHandler.java @@ -20,26 +20,24 @@ */ package org.apache.qpid.client.security; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; +import org.apache.qpid.client.protocol.AMQProtocolSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.security.auth.callback.Callback; import javax.security.auth.callback.NameCallback; import javax.security.auth.callback.PasswordCallback; import javax.security.auth.callback.UnsupportedCallbackException; -import javax.security.sasl.RealmCallback; - -import com.sun.crypto.provider.HmacMD5; -import org.apache.log4j.Logger; - -import org.apache.qpid.client.protocol.AMQProtocolSession; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; public class UsernameHashedPasswordCallbackHandler implements AMQCallbackHandler { - private static final Logger _logger = Logger.getLogger(UsernameHashedPasswordCallbackHandler.class); + private static final Logger _logger = LoggerFactory.getLogger(UsernameHashedPasswordCallbackHandler.class); private AMQProtocolSession _protocolSession; @@ -91,11 +89,11 @@ public class UsernameHashedPasswordCallbackHandler implements AMQCallbackHandler byte[] digest = md.digest(); - char[] hash = new char[digest.length ]; + char[] hash = new char[digest.length]; int index = 0; for (byte b : digest) - { + { hash[index++] = (char) b; } diff --git a/java/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java b/java/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java index 0f43115841..227f23b540 100644 --- a/java/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java +++ b/java/client/src/main/java/org/apache/qpid/client/state/AMQStateManager.java @@ -20,12 +20,6 @@ */ package org.apache.qpid.client.state; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.concurrent.CopyOnWriteArraySet; - -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; import org.apache.qpid.client.handler.BasicCancelOkMethodHandler; import org.apache.qpid.client.handler.BasicDeliverMethodHandler; @@ -58,13 +52,22 @@ import org.apache.qpid.framing.QueueDeleteOkBody; import org.apache.qpid.protocol.AMQMethodEvent; import org.apache.qpid.protocol.AMQMethodListener; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.CopyOnWriteArraySet; + /** * The state manager is responsible for managing the state of the protocol session. <p/> For each AMQProtocolHandler * there is a separate state manager. */ public class AMQStateManager implements AMQMethodListener { - private static final Logger _logger = Logger.getLogger(AMQStateManager.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQStateManager.class); + private AMQProtocolSession _protocolSession; /** The current state */ @@ -78,14 +81,13 @@ public class AMQStateManager implements AMQMethodListener private final CopyOnWriteArraySet _stateListeners = new CopyOnWriteArraySet(); private final Object _stateLock = new Object(); - private static final long MAXIMUM_STATE_WAIT_TIME = 30000l; + private static final long MAXIMUM_STATE_WAIT_TIME = 30000L; public AMQStateManager() { this(null); } - public AMQStateManager(AMQProtocolSession protocolSession) { this(AMQState.CONNECTION_NOT_STARTED, true, protocolSession); @@ -179,20 +181,22 @@ public class AMQStateManager implements AMQMethodListener if (handler != null) { handler.methodReceived(this, _protocolSession, evt); + return true; } + return false; } - protected StateAwareMethodListener findStateTransitionHandler(AMQState currentState, - AMQMethodBody frame) - // throws IllegalStateTransitionException + protected StateAwareMethodListener findStateTransitionHandler(AMQState currentState, AMQMethodBody frame) + // throws IllegalStateTransitionException { final Class clazz = frame.getClass(); if (_logger.isDebugEnabled()) { _logger.debug("Looking for state[" + currentState + "] transition handler for frame " + clazz); } + final Map classToHandlerMap = (Map) _state2HandlersMap.get(currentState); if (classToHandlerMap == null) @@ -201,12 +205,14 @@ public class AMQStateManager implements AMQMethodListener // handler registered for "all" states return findStateTransitionHandler(null, frame); } + final StateAwareMethodListener handler = (StateAwareMethodListener) classToHandlerMap.get(clazz); if (handler == null) { if (currentState == null) { _logger.debug("No state transition handler defined for receiving frame " + frame); + return null; } else @@ -222,7 +228,6 @@ public class AMQStateManager implements AMQMethodListener } } - public void attainState(final AMQState s) throws AMQException { synchronized (_stateLock) @@ -230,7 +235,7 @@ public class AMQStateManager implements AMQMethodListener final long waitUntilTime = System.currentTimeMillis() + MAXIMUM_STATE_WAIT_TIME; long waitTime = MAXIMUM_STATE_WAIT_TIME; - while (_currentState != s && waitTime > 0) + while ((_currentState != s) && (waitTime > 0)) { try { @@ -240,15 +245,19 @@ public class AMQStateManager implements AMQMethodListener { _logger.warn("Thread interrupted"); } + if (_currentState != s) { waitTime = waitUntilTime - System.currentTimeMillis(); } } + if (_currentState != s) { - _logger.warn("State not achieved within permitted time. Current state " + _currentState + ", desired state: " + s); - throw new AMQException("State not achieved within permitted time. Current state " + _currentState + ", desired state: " + s); + _logger.warn("State not achieved within permitted time. Current state " + _currentState + + ", desired state: " + s); + throw new AMQException("State not achieved within permitted time. Current state " + _currentState + + ", desired state: " + s); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/state/StateWaiter.java b/java/client/src/main/java/org/apache/qpid/client/state/StateWaiter.java index 8a0b5e7d84..73d5a8a3d6 100644 --- a/java/client/src/main/java/org/apache/qpid/client/state/StateWaiter.java +++ b/java/client/src/main/java/org/apache/qpid/client/state/StateWaiter.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,15 +20,17 @@ */ package org.apache.qpid.client.state; -import org.apache.log4j.Logger; import org.apache.qpid.AMQException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * Waits for a particular state to be reached. */ public class StateWaiter implements StateListener { - private static final Logger _logger = Logger.getLogger(StateWaiter.class); + private static final Logger _logger = LoggerFactory.getLogger(StateWaiter.class); private final AMQState _state; @@ -52,13 +54,13 @@ public class StateWaiter implements StateListener // The guard is required in case we are woken up by a spurious // notify(). // - while (!_newStateAchieved && _throwable == null) + while (!_newStateAchieved && (_throwable == null)) { try { _logger.debug("State " + _state + " not achieved so waiting..."); _monitor.wait(TIME_OUT); - //fixme this won't cause the timeout to exit the loop. need to set _throwable + // fixme this won't cause the timeout to exit the loop. need to set _throwable } catch (InterruptedException e) { @@ -72,7 +74,7 @@ public class StateWaiter implements StateListener _logger.debug("Throwable reached state waiter: " + _throwable); if (_throwable instanceof AMQException) { - throw(AMQException) _throwable; + throw (AMQException) _throwable; } else { @@ -89,6 +91,7 @@ public class StateWaiter implements StateListener { _logger.debug("stateChanged called changing from :" + oldState + " to :" + newState); } + if (_state == newState) { _newStateAchieved = true; @@ -97,6 +100,7 @@ public class StateWaiter implements StateListener { _logger.debug("New state reached so notifying monitor"); } + _monitor.notifyAll(); } } diff --git a/java/client/src/main/java/org/apache/qpid/client/transport/SocketTransportConnection.java b/java/client/src/main/java/org/apache/qpid/client/transport/SocketTransportConnection.java index 04e7e40564..5482e48699 100644 --- a/java/client/src/main/java/org/apache/qpid/client/transport/SocketTransportConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/transport/SocketTransportConnection.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,28 +20,32 @@ */ package org.apache.qpid.client.transport; -import java.io.IOException; -import java.net.InetSocketAddress; - -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; import org.apache.mina.common.ConnectFuture; import org.apache.mina.common.IoConnector; import org.apache.mina.common.SimpleByteBufferAllocator; import org.apache.mina.transport.socket.nio.SocketConnectorConfig; import org.apache.mina.transport.socket.nio.SocketSessionConfig; + import org.apache.qpid.client.protocol.AMQProtocolHandler; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.pool.ReadWriteThreadModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.net.InetSocketAddress; + public class SocketTransportConnection implements ITransportConnection { - private static final Logger _logger = Logger.getLogger(SocketTransportConnection.class); + private static final Logger _logger = LoggerFactory.getLogger(SocketTransportConnection.class); private static final int DEFAULT_BUFFER_SIZE = 32 * 1024; private SocketConnectorFactory _socketConnectorFactory; - static interface SocketConnectorFactory { + static interface SocketConnectorFactory + { IoConnector newSocketConnector(); } @@ -50,8 +54,7 @@ public class SocketTransportConnection implements ITransportConnection _socketConnectorFactory = socketConnectorFactory; } - public void connect(AMQProtocolHandler protocolHandler, BrokerDetails brokerDetail) - throws IOException + public void connect(AMQProtocolHandler protocolHandler, BrokerDetails brokerDetail) throws IOException { ByteBuffer.setUseDirectBuffers(Boolean.getBoolean("amqj.enableDirectBuffers")); diff --git a/java/client/src/main/java/org/apache/qpid/client/transport/TransportConnection.java b/java/client/src/main/java/org/apache/qpid/client/transport/TransportConnection.java index 0bc83e9804..140eeaf2bb 100644 --- a/java/client/src/main/java/org/apache/qpid/client/transport/TransportConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/transport/TransportConnection.java @@ -20,13 +20,6 @@ */ package org.apache.qpid.client.transport; -import java.io.IOException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.apache.log4j.Logger; - import org.apache.mina.common.IoConnector; import org.apache.mina.common.IoHandlerAdapter; import org.apache.mina.common.IoServiceConfig; @@ -34,11 +27,18 @@ import org.apache.mina.transport.socket.nio.SocketConnector; import org.apache.mina.transport.vmpipe.VmPipeAcceptor; import org.apache.mina.transport.vmpipe.VmPipeAddress; -import org.apache.qpid.client.AMQBrokerDetails; import org.apache.qpid.client.vmbroker.AMQVMBrokerCreationException; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.pool.ReadWriteThreadModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + /** * The TransportConnection is a helper class responsible for connecting to an AMQ server. It sets up the underlying * connector, which currently always uses TCP/IP sockets. It creates the "protocol handler" which deals with MINA @@ -57,7 +57,7 @@ public class TransportConnection private static final int TCP = 0; private static final int VM = 1; - private static Logger _logger = Logger.getLogger(TransportConnection.class); + private static Logger _logger = LoggerFactory.getLogger(TransportConnection.class); private static final String DEFAULT_QPID_SERVER = "org.apache.qpid.server.protocol.AMQPFastProtocolHandler"; @@ -99,7 +99,7 @@ public class TransportConnection // FIXME - this needs to be sorted to use the new Mina MultiThread SA. if (Boolean.getBoolean("qpidnio")) { - _logger.fatal("Using Qpid NIO - sysproperty 'qpidnio' is set."); + _logger.error("Using Qpid NIO - sysproperty 'qpidnio' is set."); // result = new org.apache.qpid.nio.SocketConnector(); // non-blocking connector } // else @@ -193,7 +193,7 @@ public class TransportConnection } catch (IOException e) { - _logger.error(e); + _logger.error("Got IOException.", e); // Try and unbind provider try @@ -262,7 +262,6 @@ public class TransportConnection catch (Exception e) { _logger.info("Unable to create InVM Qpid.AMQP on port " + port + ". Because: " + e.getCause()); - _logger.error(e); String because; if (e.getCause() == null) { diff --git a/java/client/src/main/java/org/apache/qpid/client/transport/VmPipeTransportConnection.java b/java/client/src/main/java/org/apache/qpid/client/transport/VmPipeTransportConnection.java index 104c4b43d0..2893d175c7 100644 --- a/java/client/src/main/java/org/apache/qpid/client/transport/VmPipeTransportConnection.java +++ b/java/client/src/main/java/org/apache/qpid/client/transport/VmPipeTransportConnection.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,21 +20,24 @@ */ package org.apache.qpid.client.transport; -import java.io.IOException; - -import org.apache.log4j.Logger; import org.apache.mina.common.ConnectFuture; import org.apache.mina.common.IoServiceConfig; import org.apache.mina.transport.vmpipe.VmPipeAddress; import org.apache.mina.transport.vmpipe.VmPipeConnector; + import org.apache.qpid.client.protocol.AMQProtocolHandler; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.pool.PoolingFilter; import org.apache.qpid.pool.ReferenceCountingExecutorService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + public class VmPipeTransportConnection implements ITransportConnection { - private static final Logger _logger = Logger.getLogger(VmPipeTransportConnection.class); + private static final Logger _logger = LoggerFactory.getLogger(VmPipeTransportConnection.class); private static int _port; @@ -48,13 +51,11 @@ public class VmPipeTransportConnection implements ITransportConnection final VmPipeConnector ioConnector = new VmPipeConnector(); final IoServiceConfig cfg = ioConnector.getDefaultConfig(); ReferenceCountingExecutorService executorService = ReferenceCountingExecutorService.getInstance(); - PoolingFilter asyncRead = PoolingFilter.createAynschReadPoolingFilter(executorService, - "AsynchronousReadFilter"); + PoolingFilter asyncRead = PoolingFilter.createAynschReadPoolingFilter(executorService, "AsynchronousReadFilter"); cfg.getFilterChain().addFirst("AsynchronousReadFilter", asyncRead); - PoolingFilter asyncWrite = PoolingFilter.createAynschWritePoolingFilter(executorService, - "AsynchronousWriteFilter"); + PoolingFilter asyncWrite = PoolingFilter.createAynschWritePoolingFilter(executorService, "AsynchronousWriteFilter"); cfg.getFilterChain().addLast("AsynchronousWriteFilter", asyncWrite); - + final VmPipeAddress address = new VmPipeAddress(_port); _logger.info("Attempting connection to " + address); ConnectFuture future = ioConnector.connect(address, protocolHandler); diff --git a/java/client/src/main/java/org/apache/qpid/jms/FailoverPolicy.java b/java/client/src/main/java/org/apache/qpid/jms/FailoverPolicy.java index 6ad3fb4bae..6ec883ff0b 100644 --- a/java/client/src/main/java/org/apache/qpid/jms/FailoverPolicy.java +++ b/java/client/src/main/java/org/apache/qpid/jms/FailoverPolicy.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,22 +20,23 @@ */ package org.apache.qpid.jms; -import org.apache.log4j.Logger; import org.apache.qpid.jms.failover.FailoverMethod; import org.apache.qpid.jms.failover.FailoverRoundRobinServers; import org.apache.qpid.jms.failover.FailoverSingleServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class FailoverPolicy { - private static final Logger _logger = Logger.getLogger(FailoverPolicy.class); + private static final Logger _logger = LoggerFactory.getLogger(FailoverPolicy.class); private static final long MINUTE = 60000L; private static final long DEFAULT_METHOD_TIMEOUT = 1 * MINUTE; private static final long DEFAULT_FAILOVER_TIMEOUT = 4 * MINUTE; - private FailoverMethod _methods[] = new FailoverMethod[1]; + private FailoverMethod[] _methods = new FailoverMethod[1]; private int _currentMethod; @@ -52,7 +53,7 @@ public class FailoverPolicy { FailoverMethod method; - //todo This should be integrated in to the connection url when it supports + // todo This should be integrated in to the connection url when it supports // multiple strategies. _methodsRetries = 0; @@ -72,12 +73,12 @@ public class FailoverPolicy { String failoverMethod = connectionDetails.getFailoverMethod(); -/* - if (failoverMethod.equals(FailoverMethod.RANDOM)) - { - //todo write a random connection Failover - } -*/ + /* + if (failoverMethod.equals(FailoverMethod.RANDOM)) + { + //todo write a random connection Failover + } + */ if (failoverMethod.equals(FailoverMethod.SINGLE_BROKER)) { method = new FailoverRoundRobinServers(connectionDetails); @@ -92,12 +93,12 @@ public class FailoverPolicy { try { - Class[] constructorSpec = {ConnectionURL.class}; - Object [] params = {connectionDetails}; + Class[] constructorSpec = { ConnectionURL.class }; + Object[] params = { connectionDetails }; - method = (FailoverMethod) ClassLoader.getSystemClassLoader(). - loadClass(failoverMethod). - getConstructor(constructorSpec).newInstance(params); + method = + (FailoverMethod) ClassLoader.getSystemClassLoader().loadClass(failoverMethod) + .getConstructor(constructorSpec).newInstance(params); } catch (Exception cnfe) { @@ -157,13 +158,13 @@ public class FailoverPolicy return false; } - } else { if ((now - _lastFailTime) >= DEFAULT_FAILOVER_TIMEOUT) { _logger.info("Failover timeout"); + return false; } else @@ -179,7 +180,6 @@ public class FailoverPolicy _lastFailTime = _lastMethodTime; } - if (_methods[_currentMethod].failoverAllowed()) { failoverAllowed = true; @@ -190,6 +190,7 @@ public class FailoverPolicy { nextMethod(); _logger.info("Changing method to " + _methods[_currentMethod].methodName()); + return failoverAllowed(); } else @@ -207,6 +208,7 @@ public class FailoverPolicy { _currentMethod++; _methods[_currentMethod].reset(); + return true; } else @@ -225,11 +227,13 @@ public class FailoverPolicy _logger.info("Retrying methods starting with " + _methods[_currentMethod].methodName()); _methods[_currentMethod].reset(); + return failoverAllowed(); } else { _logger.debug("All failover methods exhausted"); + return false; } } @@ -278,7 +282,7 @@ public class FailoverPolicy public FailoverMethod getCurrentMethod() { - if (_currentMethod >= 0 && _currentMethod < (_methods.length - 1)) + if ((_currentMethod >= 0) && (_currentMethod < (_methods.length - 1))) { return _methods[_currentMethod]; } @@ -311,6 +315,7 @@ public class FailoverPolicy { sb.append(">"); } + sb.append(_methods[i].toString()); } diff --git a/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java b/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java index f8325c35ef..4e0d0b79b5 100644 --- a/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java +++ b/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverRoundRobinServers.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,13 +20,15 @@ */ package org.apache.qpid.jms.failover; -import org.apache.log4j.Logger; import org.apache.qpid.jms.BrokerDetails; import org.apache.qpid.jms.ConnectionURL; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class FailoverRoundRobinServers implements FailoverMethod { - private static final Logger _logger = Logger.getLogger(FailoverRoundRobinServers.class); + private static final Logger _logger = LoggerFactory.getLogger(FailoverRoundRobinServers.class); /** The default number of times to cycle through all servers */ public static final int DEFAULT_CYCLE_RETRIES = 0; @@ -72,7 +74,7 @@ public class FailoverRoundRobinServers implements FailoverMethod _connectionDetails = connectionDetails; - //There is no current broker at startup so set it to -1. + // There is no current broker at startup so set it to -1. _currentBrokerIndex = -1; String cycleRetries = _connectionDetails.getFailoverOption(ConnectionURL.OPTIONS_FAILOVER_CYCLE); @@ -104,9 +106,8 @@ public class FailoverRoundRobinServers implements FailoverMethod public boolean failoverAllowed() { - return ((_currentCycleRetries < _cycleRetries) - || (_currentServerRetry < _serverRetries) - || (_currentBrokerIndex < (_connectionDetails.getBrokerCount() - 1))); + return ((_currentCycleRetries < _cycleRetries) || (_currentServerRetry < _serverRetries) + || (_currentBrokerIndex < (_connectionDetails.getBrokerCount() - 1))); } public void attainedConnection() @@ -125,8 +126,6 @@ public class FailoverRoundRobinServers implements FailoverMethod return _connectionDetails.getBrokerDetails(_currentBrokerIndex); } - - public BrokerDetails getNextBrokerDetails() { if (_currentBrokerIndex == (_connectionDetails.getBrokerCount() - 1)) @@ -137,7 +136,7 @@ public class FailoverRoundRobinServers implements FailoverMethod { _currentBrokerIndex = 0; - setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex )); + setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); _logger.info("First run using " + _connectionDetails.getBrokerDetails(_currentBrokerIndex)); } @@ -151,15 +150,15 @@ public class FailoverRoundRobinServers implements FailoverMethod else { _currentCycleRetries++; - //failed to connect to first broker + // failed to connect to first broker _currentBrokerIndex = 0; - setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex )); + setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); // This is zero rather than -1 as we are already retrieving the details. _currentServerRetry = 0; } - //else - should force client to stop as max retries has been reached. + // else - should force client to stop as max retries has been reached. } else { @@ -169,7 +168,7 @@ public class FailoverRoundRobinServers implements FailoverMethod { _currentBrokerIndex = 0; - setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex )); + setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); _logger.info("First run using " + _connectionDetails.getBrokerDetails(_currentBrokerIndex)); } @@ -177,13 +176,14 @@ public class FailoverRoundRobinServers implements FailoverMethod { _logger.info("Retrying " + _connectionDetails.getBrokerDetails(_currentBrokerIndex)); } + _currentServerRetry++; } else { _currentBrokerIndex++; - setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex )); + setBroker(_connectionDetails.getBrokerDetails(_currentBrokerIndex)); // This is zero rather than -1 as we are already retrieving the details. _currentServerRetry = 0; } @@ -192,7 +192,6 @@ public class FailoverRoundRobinServers implements FailoverMethod return _connectionDetails.getBrokerDetails(_currentBrokerIndex); } - public void setBroker(BrokerDetails broker) { @@ -246,12 +245,13 @@ public class FailoverRoundRobinServers implements FailoverMethod sb.append(_currentBrokerIndex); sb.append("\n"); - for(int i=0; i < _connectionDetails.getBrokerCount() ; i++) + for (int i = 0; i < _connectionDetails.getBrokerCount(); i++) { if (i == _currentBrokerIndex) { sb.append(">"); } + sb.append(_connectionDetails.getBrokerDetails(i)); sb.append("\n"); } diff --git a/java/client/src/main/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactory.java b/java/client/src/main/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactory.java index 4f6f1561b6..a46c7f3cd5 100644 --- a/java/client/src/main/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactory.java +++ b/java/client/src/main/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactory.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,38 +20,40 @@ */ package org.apache.qpid.jndi; -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Hashtable; -import java.util.Iterator; -import java.util.Map; -import java.util.Properties; -import java.util.concurrent.ConcurrentHashMap; - -import javax.jms.ConnectionFactory; -import javax.jms.Destination; -import javax.jms.Queue; -import javax.jms.Topic; -import javax.naming.Context; -import javax.naming.NamingException; -import javax.naming.spi.InitialContextFactory; - -import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQHeadersExchange; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQTopic; +import org.apache.qpid.exchange.ExchangeDefaults; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.url.AMQBindingURL; import org.apache.qpid.url.BindingURL; import org.apache.qpid.url.URLSyntaxException; -import org.apache.qpid.exchange.ExchangeDefaults; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.ConnectionFactory; +import javax.jms.Destination; +import javax.jms.Queue; +import javax.jms.Topic; +import javax.naming.Context; +import javax.naming.NamingException; +import javax.naming.spi.InitialContextFactory; + +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Hashtable; +import java.util.Iterator; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.ConcurrentHashMap; public class PropertiesFileInitialContextFactory implements InitialContextFactory { - protected final Logger _logger = Logger.getLogger(PropertiesFileInitialContextFactory.class); + protected final Logger _logger = LoggerFactory.getLogger(PropertiesFileInitialContextFactory.class); private String CONNECTION_FACTORY_PREFIX = "connectionfactory."; private String DESTINATION_PREFIX = "destination."; @@ -78,7 +80,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor if (file != null) { _logger.info("Loading Properties from:" + file); - //Load the properties specified + // Load the properties specified Properties p = new Properties(); p.load(new BufferedInputStream(new FileInputStream(file))); @@ -93,8 +95,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor } catch (IOException ioe) { - _logger.warn("Unable to load property file specified in Provider_URL:" + - environment.get(Context.PROVIDER_URL)); + _logger.warn("Unable to load property file specified in Provider_URL:" + environment.get(Context.PROVIDER_URL)); } createConnectionFactories(data, environment); @@ -109,7 +110,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor } // Implementation methods - //------------------------------------------------------------------------- + // ------------------------------------------------------------------------- protected ReadOnlyContext createContext(Map data, Hashtable environment) { return new ReadOnlyContext(environment, data); @@ -200,6 +201,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor { _logger.warn("Unable to createFactories:" + urlse); } + return null; } @@ -216,6 +218,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor catch (URLSyntaxException urlse) { _logger.warn("Unable to destination:" + urlse); + return null; } @@ -226,6 +229,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor catch (IllegalArgumentException iaw) { _logger.warn("Binding: '" + binding + "' not supported"); + return null; } } @@ -235,17 +239,15 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor */ protected Queue createQueue(Object value) { - if(value instanceof AMQShortString) + if (value instanceof AMQShortString) { return new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, (AMQShortString) value); } else if (value instanceof String) - { return new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, new AMQShortString((String) value)); } else if (value instanceof BindingURL) - { return new AMQQueue((BindingURL) value); } @@ -258,16 +260,15 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor */ protected Topic createTopic(Object value) { - if(value instanceof AMQShortString) + if (value instanceof AMQShortString) { - return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, (AMQShortString)value); + return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, (AMQShortString) value); } else if (value instanceof String) { return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, new AMQShortString((String) value)); } else if (value instanceof BindingURL) - { return new AMQTopic((BindingURL) value); } @@ -293,7 +294,7 @@ public class PropertiesFileInitialContextFactory implements InitialContextFactor } // Properties - //------------------------------------------------------------------------- + // ------------------------------------------------------------------------- public String getConnectionPrefix() { return CONNECTION_FACTORY_PREFIX; diff --git a/java/client/src/test/java/org/apache/qpid/client/DispatcherTest.java b/java/client/src/test/java/org/apache/qpid/client/DispatcherTest.java index 1d85ea47fd..7cca22de6c 100644 --- a/java/client/src/test/java/org/apache/qpid/client/DispatcherTest.java +++ b/java/client/src/test/java/org/apache/qpid/client/DispatcherTest.java @@ -20,9 +20,13 @@ */ package org.apache.qpid.client; -import java.util.Hashtable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import junit.framework.TestCase; + +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -36,11 +40,9 @@ import javax.jms.Session; import javax.naming.Context; import javax.naming.spi.InitialContextFactory; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; +import java.util.Hashtable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * QPID-293 Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery queue @@ -56,7 +58,7 @@ import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; */ public class DispatcherTest extends TestCase { - private static final Logger _logger = Logger.getLogger(DispatcherTest.class); + private static final Logger _logger = LoggerFactory.getLogger(DispatcherTest.class); Context _context; @@ -68,8 +70,8 @@ public class DispatcherTest extends TestCase MessageProducer _producer; Session _clientSession, _producerSession; - private final CountDownLatch _allFirstMessagesSent = new CountDownLatch(1); //all messages Sent Lock - private final CountDownLatch _allSecondMessagesSent = new CountDownLatch(1); //all messages Sent Lock + private final CountDownLatch _allFirstMessagesSent = new CountDownLatch(1); // all messages Sent Lock + private final CountDownLatch _allSecondMessagesSent = new CountDownLatch(1); // all messages Sent Lock private volatile boolean _connectionStopped = false; @@ -89,14 +91,14 @@ public class DispatcherTest extends TestCase Queue queue = (Queue) _context.lookup("queue"); - //Create Client 1 + // Create Client 1 _clientConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _clientSession = _clientConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); _consumer = _clientSession.createConsumer(queue); - //Create Producer + // Create Producer _producerConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _producerConnection.start(); @@ -109,7 +111,6 @@ public class DispatcherTest extends TestCase { _producer.send(_producerSession.createTextMessage("Message " + msg)); } - } protected void tearDown() throws Exception @@ -122,67 +123,63 @@ public class DispatcherTest extends TestCase TransportConnection.killAllVMBrokers(); } - public void testAsynchronousRecieve() { - _logger.info("Test Start"); - assertTrue(!((AMQConnection) _clientConnection).started()); - //Set default Message Listener + // Set default Message Listener try { _consumer.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 1 ML 1 Received Message(" + _receivedCount + "):" + message); + public void onMessage(Message message) + { + _logger.info("Client 1 ML 1 Received Message(" + _receivedCount + "):" + message); - _receivedCount++; + _receivedCount++; - if (_receivedCount == MSG_COUNT) - { - _allFirstMessagesSent.countDown(); - } + if (_receivedCount == MSG_COUNT) + { + _allFirstMessagesSent.countDown(); + } - if (_connectionStopped) - { - _logger.info("Running with Message:" + _receivedCount); - } + if (_connectionStopped) + { + _logger.info("Running with Message:" + _receivedCount); + } - if (_connectionStopped && _allFirstMessagesSent.getCount() == 0) - { - _receivedCountWhileStopped++; - } + if (_connectionStopped && (_allFirstMessagesSent.getCount() == 0)) + { + _receivedCountWhileStopped++; + } - if (_allFirstMessagesSent.getCount() == 0) - { - if (_receivedCount == MSG_COUNT * 2) + if (_allFirstMessagesSent.getCount() == 0) { - _allSecondMessagesSent.countDown(); + if (_receivedCount == (MSG_COUNT * 2)) + { + _allSecondMessagesSent.countDown(); + } } } - } - }); - + }); + assertTrue("Connecion should not be started", !((AMQConnection) _clientConnection).started()); - _clientConnection.start(); + _clientConnection.start(); } catch (JMSException e) { _logger.error("Error Setting Default ML on consumer1"); } - try { _allFirstMessagesSent.await(1000, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { - //do nothing + // do nothing } try @@ -196,7 +193,6 @@ public class DispatcherTest extends TestCase _logger.error("Error stopping connection"); } - try { _logger.error("Send additional messages"); @@ -211,14 +207,13 @@ public class DispatcherTest extends TestCase _logger.error("Unable to send additional messages", e); } - try { Thread.sleep(1000); } catch (InterruptedException e) { - //ignore + // ignore } try @@ -233,7 +228,6 @@ public class DispatcherTest extends TestCase _logger.error("Error Setting Better ML on consumer1", e); } - _logger.info("Waiting upto 2 seconds for messages"); try @@ -242,17 +236,15 @@ public class DispatcherTest extends TestCase } catch (InterruptedException e) { - //do nothing + // do nothing } assertEquals("Messages not received correctly", 0, _allFirstMessagesSent.getCount()); assertEquals("Messages not received correctly", 0, _allSecondMessagesSent.getCount()); assertEquals("Client didn't get all messages", MSG_COUNT * 2, _receivedCount); assertEquals("Messages received while stopped is not 0", 0, _receivedCountWhileStopped); - } - public static junit.framework.Test suite() { return new junit.framework.TestSuite(DispatcherTest.class); diff --git a/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerImmediatePrefetch.java b/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerImmediatePrefetch.java index 9e48914431..7461f6c200 100644 --- a/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerImmediatePrefetch.java +++ b/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerImmediatePrefetch.java @@ -20,27 +20,6 @@ */ package org.apache.qpid.client; -import java.util.Hashtable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -import javax.jms.Connection; -import javax.jms.ConnectionFactory; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.Queue; -import javax.jms.Session; -import javax.naming.Context; -import javax.naming.spi.InitialContextFactory; - -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; - /** * QPID-293 Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery * queue <p/> The message delivery process: Mina puts a message on _queue in AMQSession and the dispatcher thread @@ -52,17 +31,12 @@ import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; */ public class MessageListenerMultiConsumerImmediatePrefetch extends MessageListenerMultiConsumerTest { - - protected void setUp() throws Exception { - System.setProperty(AMQSession.IMMEDIATE_PREFETCH, "true"); super.setUp(); - } - public static junit.framework.Test suite() { return new junit.framework.TestSuite(MessageListenerMultiConsumerImmediatePrefetch.class); diff --git a/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerTest.java b/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerTest.java index c9407d8ff6..20632e245f 100644 --- a/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerTest.java +++ b/java/client/src/test/java/org/apache/qpid/client/MessageListenerMultiConsumerTest.java @@ -20,9 +20,13 @@ */ package org.apache.qpid.client; -import java.util.Hashtable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import junit.framework.TestCase; + +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -35,11 +39,9 @@ import javax.jms.Session; import javax.naming.Context; import javax.naming.spi.InitialContextFactory; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; +import java.util.Hashtable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * QPID-293 Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery @@ -52,7 +54,7 @@ import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; */ public class MessageListenerMultiConsumerTest extends TestCase { - private static final Logger _logger = Logger.getLogger(MessageListenerMultiConsumerTest.class); + private static final Logger _logger = LoggerFactory.getLogger(MessageListenerMultiConsumerTest.class); Context _context; @@ -64,8 +66,7 @@ public class MessageListenerMultiConsumerTest extends TestCase private MessageConsumer _consumer2; private Session _clientSession1; private Queue _queue; - private final CountDownLatch _allMessagesSent = new CountDownLatch(2); //all messages Sent Lock - + private final CountDownLatch _allMessagesSent = new CountDownLatch(2); // all messages Sent Lock protected void setUp() throws Exception { @@ -77,13 +78,13 @@ public class MessageListenerMultiConsumerTest extends TestCase Hashtable<String, String> env = new Hashtable<String, String>(); env.put("connectionfactory.connection", "amqp://guest:guest@MLT_ID/test?brokerlist='vm://:1'"); - env.put("queue.queue", "direct://amq.direct//"+this.getClass().getName()); + env.put("queue.queue", "direct://amq.direct//" + this.getClass().getName()); _context = factory.getInitialContext(env); _queue = (Queue) _context.lookup("queue"); - //Create Client 1 + // Create Client 1 _clientConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _clientConnection.start(); @@ -92,17 +93,16 @@ public class MessageListenerMultiConsumerTest extends TestCase _consumer1 = _clientSession1.createConsumer(_queue); - //Create Client 2 + // Create Client 2 Session clientSession2 = _clientConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); _consumer2 = clientSession2.createConsumer(_queue); - //Create Producer + // Create Producer Connection producerConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); producerConnection.start(); - Session producerSession = producerConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = producerSession.createProducer(_queue); @@ -124,18 +124,18 @@ public class MessageListenerMultiConsumerTest extends TestCase TransportConnection.killAllVMBrokers(); } - public void testRecieveInterleaved() throws Exception { int msg = 0; int MAX_LOOPS = MSG_COUNT * 2; - for (int loops = 0; msg < MSG_COUNT || loops < MAX_LOOPS; loops++) + for (int loops = 0; (msg < MSG_COUNT) || (loops < MAX_LOOPS); loops++) { if (_consumer1.receive(100) != null) { msg++; } + if (_consumer2.receive(100) != null) { msg++; @@ -145,39 +145,37 @@ public class MessageListenerMultiConsumerTest extends TestCase assertEquals("Not all messages received.", MSG_COUNT, msg); } - public void testAsynchronousRecieve() throws Exception { _consumer1.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 1 Received Message(" + receivedCount1 + "):" + message); + public void onMessage(Message message) + { + _logger.info("Client 1 Received Message(" + receivedCount1 + "):" + message); - receivedCount1++; + receivedCount1++; - if (receivedCount1 == MSG_COUNT / 2) - { - _allMessagesSent.countDown(); - } + if (receivedCount1 == (MSG_COUNT / 2)) + { + _allMessagesSent.countDown(); + } - } - }); + } + }); _consumer2.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 2 Received Message(" + receivedCount2 + "):" + message); - - receivedCount2++; - if (receivedCount2 == MSG_COUNT / 2) + public void onMessage(Message message) { - _allMessagesSent.countDown(); - } - } - }); + _logger.info("Client 2 Received Message(" + receivedCount2 + "):" + message); + receivedCount2++; + if (receivedCount2 == (MSG_COUNT / 2)) + { + _allMessagesSent.countDown(); + } + } + }); _logger.info("Waiting upto 2 seconds for messages"); @@ -187,7 +185,7 @@ public class MessageListenerMultiConsumerTest extends TestCase } catch (InterruptedException e) { - //do nothing + // do nothing } assertEquals(MSG_COUNT, receivedCount1 + receivedCount2); @@ -195,34 +193,37 @@ public class MessageListenerMultiConsumerTest extends TestCase public void testRecieveC2Only() throws Exception { - if (!Boolean.parseBoolean(System.getProperties(). - getProperty(AMQSession.IMMEDIATE_PREFETCH, AMQSession.IMMEDIATE_PREFETCH_DEFAULT))) + if ( + !Boolean.parseBoolean( + System.getProperties().getProperty(AMQSession.IMMEDIATE_PREFETCH, + AMQSession.IMMEDIATE_PREFETCH_DEFAULT))) { _logger.info("Performing Receive only on C2"); for (int msg = 0; msg < MSG_COUNT; msg++) { - assertTrue(MSG_COUNT + " msg should be received. Only received:" + msg, - _consumer2.receive(1000) != null); + assertTrue(MSG_COUNT + " msg should be received. Only received:" + msg, _consumer2.receive(1000) != null); } } } public void testRecieveBoth() throws Exception { - if (!Boolean.parseBoolean(System.getProperties(). - getProperty(AMQSession.IMMEDIATE_PREFETCH, AMQSession.IMMEDIATE_PREFETCH_DEFAULT))) + if ( + !Boolean.parseBoolean( + System.getProperties().getProperty(AMQSession.IMMEDIATE_PREFETCH, + AMQSession.IMMEDIATE_PREFETCH_DEFAULT))) { _logger.info("Performing Receive only with two consumers on one session "); MessageConsumer consumer2 = _clientSession1.createConsumer(_queue); - for (int msg = 0; msg < MSG_COUNT / 2; msg++) + for (int msg = 0; msg < (MSG_COUNT / 2); msg++) { assertTrue(_consumer1.receive() != null); } - for (int msg = 0; msg < MSG_COUNT / 2; msg++) + for (int msg = 0; msg < (MSG_COUNT / 2); msg++) { assertTrue(consumer2.receive() != null); } @@ -231,20 +232,19 @@ public class MessageListenerMultiConsumerTest extends TestCase { _logger.info("Performing Receive only on both C1 and C2"); - for (int msg = 0; msg < MSG_COUNT / 2; msg++) + for (int msg = 0; msg < (MSG_COUNT / 2); msg++) { assertTrue(_consumer1.receive() != null); } - for (int msg = 0; msg < MSG_COUNT / 2; msg++) + for (int msg = 0; msg < (MSG_COUNT / 2); msg++) { assertTrue(_consumer2.receive() != null); } } } - public static junit.framework.Test suite() { return new junit.framework.TestSuite(MessageListenerMultiConsumerTest.class); diff --git a/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java b/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java index b15742f3aa..87630fad5b 100644 --- a/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java +++ b/java/client/src/test/java/org/apache/qpid/client/MessageListenerTest.java @@ -14,15 +14,19 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.client; -import java.util.Hashtable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import junit.framework.TestCase; + +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -35,13 +39,9 @@ import javax.jms.Session; import javax.naming.Context; import javax.naming.spi.InitialContextFactory; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; -import org.apache.qpid.url.BindingURL; -import org.apache.qpid.url.AMQBindingURL; +import java.util.Hashtable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * QPID-293 Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery @@ -54,7 +54,7 @@ import org.apache.qpid.url.AMQBindingURL; */ public class MessageListenerTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(MessageListenerTest.class); + private static final Logger _logger = LoggerFactory.getLogger(MessageListenerTest.class); Context _context; @@ -73,6 +73,7 @@ public class MessageListenerTest extends TestCase implements MessageListener { TransportConnection.createVMBroker(1); } + InitialContextFactory factory = new PropertiesFileInitialContextFactory(); Hashtable<String, String> env = new Hashtable<String, String>(); @@ -84,7 +85,7 @@ public class MessageListenerTest extends TestCase implements MessageListener Queue queue = (Queue) _context.lookup("queue"); - //Create Client + // Create Client _clientConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _clientConnection.start(); @@ -93,7 +94,7 @@ public class MessageListenerTest extends TestCase implements MessageListener _consumer = clientSession.createConsumer(queue); - //Create Producer + // Create Producer Connection producerConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); @@ -123,7 +124,6 @@ public class MessageListenerTest extends TestCase implements MessageListener } } - public void testSynchronousRecieve() throws Exception { for (int msg = 0; msg < MSG_COUNT; msg++) @@ -144,9 +144,9 @@ public class MessageListenerTest extends TestCase implements MessageListener } catch (InterruptedException e) { - //do nothing + // do nothing } - //Should have recieved all async messages + // Should have recieved all async messages assertEquals(MSG_COUNT, receivedCount); } @@ -156,11 +156,11 @@ public class MessageListenerTest extends TestCase implements MessageListener _logger.error("Test disabled as initial receive is not called first"); // Perform initial receive to start connection -// assertTrue(_consumer.receive(2000) != null); -// receivedCount++; + // assertTrue(_consumer.receive(2000) != null); + // receivedCount++; // Sleep to ensure remaining 4 msgs end up on _synchronousQueue -// Thread.sleep(1000); + // Thread.sleep(1000); // Set the message listener and wait for the messages to come in. _consumer.setMessageListener(this); @@ -173,14 +173,13 @@ public class MessageListenerTest extends TestCase implements MessageListener } catch (InterruptedException e) { - //do nothing + // do nothing } - //Should have recieved all async messages + // Should have recieved all async messages assertEquals(MSG_COUNT, receivedCount); } - public void onMessage(Message message) { _logger.info("Received Message(" + receivedCount + "):" + message); diff --git a/java/client/src/test/java/org/apache/qpid/client/ResetMessageListenerTest.java b/java/client/src/test/java/org/apache/qpid/client/ResetMessageListenerTest.java index 97fbf9876f..5f7ca69554 100644 --- a/java/client/src/test/java/org/apache/qpid/client/ResetMessageListenerTest.java +++ b/java/client/src/test/java/org/apache/qpid/client/ResetMessageListenerTest.java @@ -20,9 +20,13 @@ */ package org.apache.qpid.client; -import java.util.Hashtable; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; +import junit.framework.TestCase; + +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -36,11 +40,9 @@ import javax.jms.Session; import javax.naming.Context; import javax.naming.spi.InitialContextFactory; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; +import java.util.Hashtable; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; /** * QPID-293 Setting MessageListener after connection has started can cause messages to be "lost" on a internal delivery @@ -53,7 +55,7 @@ import org.apache.qpid.jndi.PropertiesFileInitialContextFactory; */ public class ResetMessageListenerTest extends TestCase { - private static final Logger _logger = Logger.getLogger(ResetMessageListenerTest.class); + private static final Logger _logger = LoggerFactory.getLogger(ResetMessageListenerTest.class); Context _context; @@ -67,8 +69,8 @@ public class ResetMessageListenerTest extends TestCase MessageProducer _producer; Session _clientSession, _producerSession; - private final CountDownLatch _allFirstMessagesSent = new CountDownLatch(2); //all messages Sent Lock - private final CountDownLatch _allSecondMessagesSent = new CountDownLatch(2); //all messages Sent Lock + private final CountDownLatch _allFirstMessagesSent = new CountDownLatch(2); // all messages Sent Lock + private final CountDownLatch _allSecondMessagesSent = new CountDownLatch(2); // all messages Sent Lock protected void setUp() throws Exception { @@ -88,17 +90,17 @@ public class ResetMessageListenerTest extends TestCase Queue queue = (Queue) _context.lookup("queue"); - //Create Client 1 + // Create Client 1 _clientConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _clientSession = _clientConnection.createSession(false, Session.AUTO_ACKNOWLEDGE); _consumer1 = _clientSession.createConsumer(queue); - //Create Client 2 on same session + // Create Client 2 on same session _consumer2 = _clientSession.createConsumer(queue); - //Create Producer + // Create Producer _producerConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection(); _producerConnection.start(); @@ -129,57 +131,55 @@ public class ResetMessageListenerTest extends TestCase TransportConnection.killAllVMBrokers(); } - public void testAsynchronousRecieve() { _logger.info("Test Start"); - //Set default Message Listener + // Set default Message Listener try { _consumer1.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 1 ML 1 Received Message(" + receivedCount1ML1 + "):" + message); - - receivedCount1ML1++; - if (receivedCount1ML1 == MSG_COUNT / 2) + public void onMessage(Message message) { - _allFirstMessagesSent.countDown(); + _logger.info("Client 1 ML 1 Received Message(" + receivedCount1ML1 + "):" + message); + + receivedCount1ML1++; + if (receivedCount1ML1 == (MSG_COUNT / 2)) + { + _allFirstMessagesSent.countDown(); + } } - } - }); + }); } catch (JMSException e) { _logger.error("Error Setting Default ML on consumer1"); } - try { _consumer2.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 2 Received Message(" + receivedCount2 + "):" + message); - - receivedCount2++; - if (receivedCount2 == MSG_COUNT / 2) + public void onMessage(Message message) { - _logger.info("Client 2 received all its messages1"); - _allFirstMessagesSent.countDown(); + _logger.info("Client 2 Received Message(" + receivedCount2 + "):" + message); + + receivedCount2++; + if (receivedCount2 == (MSG_COUNT / 2)) + { + _logger.info("Client 2 received all its messages1"); + _allFirstMessagesSent.countDown(); + } + + if (receivedCount2 == MSG_COUNT) + { + _logger.info("Client 2 received all its messages2"); + _allSecondMessagesSent.countDown(); + } } - - if (receivedCount2 == MSG_COUNT) - { - _logger.info("Client 2 received all its messages2"); - _allSecondMessagesSent.countDown(); - } - } - }); + }); _clientConnection.start(); } @@ -189,7 +189,6 @@ public class ResetMessageListenerTest extends TestCase } - try { _allFirstMessagesSent.await(1000, TimeUnit.MILLISECONDS); @@ -197,7 +196,7 @@ public class ResetMessageListenerTest extends TestCase } catch (InterruptedException e) { - //do nothing + // do nothing } try @@ -213,18 +212,18 @@ public class ResetMessageListenerTest extends TestCase try { _consumer1.setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _logger.info("Client 1 ML2 Received Message(" + receivedCount1ML1 + "):" + message); - - receivedCount1ML2++; - if (receivedCount1ML2 == MSG_COUNT / 2) + public void onMessage(Message message) { - _allSecondMessagesSent.countDown(); + _logger.info("Client 1 ML2 Received Message(" + receivedCount1ML1 + "):" + message); + + receivedCount1ML2++; + if (receivedCount1ML2 == (MSG_COUNT / 2)) + { + _allSecondMessagesSent.countDown(); + } } - } - }); + }); _clientConnection.start(); } @@ -260,11 +259,10 @@ public class ResetMessageListenerTest extends TestCase } catch (InterruptedException e) { - //do nothing + // do nothing } } - public static junit.framework.Test suite() { return new junit.framework.TestSuite(ResetMessageListenerTest.class); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/ack/RecoverTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/ack/RecoverTest.java index 4667a2b3fa..b6f46b4acc 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/ack/RecoverTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/ack/RecoverTest.java @@ -19,32 +19,30 @@ */ package org.apache.qpid.test.unit.ack; -import java.util.concurrent.atomic.AtomicInteger; +import junit.framework.TestCase; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.jms.Session; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.MessageProducer; import javax.jms.Queue; - import javax.jms.TextMessage; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.framing.AMQShortString; -import org.apache.qpid.jms.Session; +import java.util.concurrent.atomic.AtomicInteger; public class RecoverTest extends TestCase { - private static final Logger _logger = Logger.getLogger(RecoverTest.class); + private static final Logger _logger = LoggerFactory.getLogger(RecoverTest.class); private Exception _error; private AtomicInteger count; @@ -64,16 +62,17 @@ public class RecoverTest extends TestCase count = null; } - public void testRecoverResendsMsgs() throws Exception { AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); Session consumerSession = con.createSession(false, Session.CLIENT_ACKNOWLEDGE); - Queue queue = new AMQQueue(consumerSession.getDefaultQueueExchangeName(),new AMQShortString("someQ"), new AMQShortString("someQ"), false, true); + Queue queue = + new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("someQ"), + new AMQShortString("someQ"), false, true); MessageConsumer consumer = consumerSession.createConsumer(queue); - //force synch to ensure the consumer has resulted in a bound queue - //((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.DIRECT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS); + // force synch to ensure the consumer has resulted in a bound queue + // ((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.DIRECT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS); // This is the default now AMQConnection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test"); @@ -122,16 +121,17 @@ public class RecoverTest extends TestCase con.close(); } - public void testRecoverResendsMsgsAckOnEarlier() throws Exception { AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); Session consumerSession = con.createSession(false, Session.CLIENT_ACKNOWLEDGE); - Queue queue = new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("someQ"), new AMQShortString("someQ"), false, true); + Queue queue = + new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("someQ"), + new AMQShortString("someQ"), false, true); MessageConsumer consumer = consumerSession.createConsumer(queue); - //force synch to ensure the consumer has resulted in a bound queue - //((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.DIRECT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS); + // force synch to ensure the consumer has resulted in a bound queue + // ((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.DIRECT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS); // This is the default now AMQConnection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test"); @@ -164,7 +164,6 @@ public class RecoverTest extends TestCase TextMessage tm4 = (TextMessage) consumer.receive(3000); assertEquals("msg4", tm4.getText()); - _logger.info("Received redelivery of two messages. calling acknolwedgeThis() first of those message"); ((org.apache.qpid.jms.Message) tm3).acknowledgeThis(); @@ -180,7 +179,6 @@ public class RecoverTest extends TestCase // all acked so no messages to be delivered consumerSession.recover(); - tm = (TextMessage) consumer.receiveNoWait(); assertNull(tm); _logger.info("No messages redelivered as is expected"); @@ -193,8 +191,12 @@ public class RecoverTest extends TestCase AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); Session consumerSession = con.createSession(false, Session.CLIENT_ACKNOWLEDGE); - Queue queue = new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q1"), new AMQShortString("Q1"), false, true); - Queue queue2 = new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q2"), new AMQShortString("Q2"), false, true); + Queue queue = + new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q1"), new AMQShortString("Q1"), + false, true); + Queue queue2 = + new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q2"), new AMQShortString("Q2"), + false, true); MessageConsumer consumer = consumerSession.createConsumer(queue); MessageConsumer consumer2 = consumerSession.createConsumer(queue2); @@ -232,68 +234,72 @@ public class RecoverTest extends TestCase AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); final Session consumerSession = con.createSession(false, Session.AUTO_ACKNOWLEDGE); - Queue queue = new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q3"), new AMQShortString("Q3"), false, true); + Queue queue = + new AMQQueue(consumerSession.getDefaultQueueExchangeName(), new AMQShortString("Q3"), new AMQShortString("Q3"), + false, true); MessageConsumer consumer = consumerSession.createConsumer(queue); MessageProducer producer = consumerSession.createProducer(queue); producer.send(consumerSession.createTextMessage("hello")); - final Object lock = new Object(); consumer.setMessageListener(new MessageListener() - { - - - - public void onMessage(Message message) { - try + + public void onMessage(Message message) { - count.incrementAndGet(); - if (count.get() == 1) + try { - if(message.getJMSRedelivered()) + count.incrementAndGet(); + if (count.get() == 1) { - setError(new Exception("Message marked as redilvered on what should be first delivery attempt")); + if (message.getJMSRedelivered()) + { + setError( + new Exception("Message marked as redilvered on what should be first delivery attempt")); + } + + consumerSession.recover(); } - consumerSession.recover(); - } - else if (count.get() == 2) - { - if(!message.getJMSRedelivered()) + else if (count.get() == 2) { - setError(new Exception("Message not marked as redilvered on what should be second delivery attempt")); + if (!message.getJMSRedelivered()) + { + setError( + new Exception( + "Message not marked as redilvered on what should be second delivery attempt")); + } + } + else + { + System.err.println(message); + fail("Message delivered too many times!: " + count); } } - else + catch (JMSException e) { - System.err.println(message); - fail("Message delivered too many times!: " + count); + _logger.error("Error recovering session: " + e, e); + setError(e); + } + + synchronized (lock) + { + lock.notify(); } } - catch (JMSException e) - { - _logger.error("Error recovering session: " + e, e); - setError(e); - } - synchronized(lock) - { - lock.notify(); - } - } - }); + }); con.start(); long waitTime = 300000L; long waitUntilTime = System.currentTimeMillis() + waitTime; - synchronized(lock) + synchronized (lock) { - while((count.get() <= 1) && (waitTime > 0)) + while ((count.get() <= 1) && (waitTime > 0)) { lock.wait(waitTime); - if(count.get() <= 1) + if (count.get() <= 1) { waitTime = waitUntilTime - System.currentTimeMillis(); } @@ -302,15 +308,16 @@ public class RecoverTest extends TestCase Thread.sleep(1000); - if(count.get() != 2) + if (count.get() != 2) { System.err.println("Count != 2 : " + count); } - assertTrue(count.get() == 2); + + assertTrue(count.get() == 2); con.close(); - if(_error != null) + if (_error != null) { throw _error; } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java index a350330c71..da1b46ee2c 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java @@ -6,9 +6,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -19,9 +19,20 @@ */ package org.apache.qpid.test.unit.basic; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.mina.common.ByteBuffer; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQDestination; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.AMQSession; +import org.apache.qpid.client.message.JMSBytesMessage; +import org.apache.qpid.testutil.VMBrokerSetup; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.BytesMessage; import javax.jms.Connection; @@ -34,21 +45,13 @@ import javax.jms.MessageNotWriteableException; import javax.jms.MessageProducer; import javax.jms.Session; -import junit.framework.Assert; -import junit.framework.TestCase; - -import org.apache.mina.common.ByteBuffer; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQDestination; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.client.message.JMSBytesMessage; -import org.apache.qpid.testutil.VMBrokerSetup; -import org.apache.log4j.Logger; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class BytesMessageTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(BytesMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(BytesMessageTest.class); private Connection _connection; private Destination _destination; @@ -102,7 +105,7 @@ public class BytesMessageTest extends TestCase implements MessageListener void send(int count) throws JMSException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -115,7 +118,7 @@ public class BytesMessageTest extends TestCase implements MessageListener } catch (MessageNotReadableException mnwe) { - //normal execution + // normal execution } byte[] data = ("Message " + i).getBytes(); @@ -127,7 +130,7 @@ public class BytesMessageTest extends TestCase implements MessageListener void waitFor(int count) throws InterruptedException { - synchronized(received) + synchronized (received) { while (received.size() < count) { @@ -146,8 +149,7 @@ public class BytesMessageTest extends TestCase implements MessageListener buffer.get(data); actual.add(data); - - //Check Body Write Status + // Check Body Write Status try { m.writeBoolean(true); @@ -155,7 +157,7 @@ public class BytesMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearBody(); @@ -169,8 +171,7 @@ public class BytesMessageTest extends TestCase implements MessageListener Assert.fail("Message should be writeable"); } - - //Check property write status + // Check property write status try { m.setStringProperty("test", "test"); @@ -178,7 +179,7 @@ public class BytesMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearProperties(); @@ -219,6 +220,7 @@ public class BytesMessageTest extends TestCase implements MessageListener { errors.add("Found " + actual.next() + " but no more expected values."); } + if (!errors.isEmpty()) { throw new RuntimeException(errors.toString()); @@ -231,6 +233,7 @@ public class BytesMessageTest extends TestCase implements MessageListener { throw new RuntimeException("Expected length " + expected.length + " got " + actual.length); } + for (int i = 0; i < expected.length; i++) { if (expected[i] != actual[i]) @@ -242,7 +245,7 @@ public class BytesMessageTest extends TestCase implements MessageListener public void onMessage(Message message) { - synchronized(received) + synchronized (received) { received.add((JMSBytesMessage) message); received.notify(); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java index 9e2918770a..aff496becf 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/FieldTableMessageTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,19 +20,10 @@ */ package org.apache.qpid.test.unit.basic; -import java.io.IOException; -import java.util.ArrayList; - -import javax.jms.BytesMessage; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; - import junit.framework.TestCase; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; + import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQQueue; @@ -43,10 +34,21 @@ import org.apache.qpid.framing.FieldTable; import org.apache.qpid.framing.FieldTableFactory; import org.apache.qpid.testutil.VMBrokerSetup; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.BytesMessage; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; + +import java.io.IOException; +import java.util.ArrayList; + public class FieldTableMessageTest extends TestCase implements MessageListener { - - private static final Logger _logger = Logger.getLogger(FieldTableMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(FieldTableMessageTest.class); private AMQConnection _connection; private AMQDestination _destination; @@ -67,10 +69,9 @@ public class FieldTableMessageTest extends TestCase implements MessageListener super.tearDown(); } - private void init(AMQConnection connection) throws Exception { - init(connection, new AMQQueue(connection,randomize("FieldTableMessageTest"), true)); + init(connection, new AMQQueue(connection, randomize("FieldTableMessageTest"), true)); } private void init(AMQConnection connection, AMQDestination destination) throws Exception @@ -79,11 +80,11 @@ public class FieldTableMessageTest extends TestCase implements MessageListener _destination = destination; _session = (AMQSession) connection.createSession(false, AMQSession.NO_ACKNOWLEDGE); - //set up a slow consumer + // set up a slow consumer _session.createConsumer(destination).setMessageListener(this); connection.start(); - //_expected = new FieldTableTest().load("FieldTableTest2.properties"); + // _expected = new FieldTableTest().load("FieldTableTest2.properties"); _expected = load(); } @@ -111,7 +112,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener void send(int count) throws JMSException, IOException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -123,7 +124,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener void waitFor(int count) throws InterruptedException { - synchronized(received) + synchronized (received) { while (received.size() < count) { @@ -139,7 +140,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener ByteBuffer buffer = ((JMSBytesMessage) m).getData(); FieldTable actual = FieldTableFactory.newFieldTable(buffer, buffer.remaining()); for (String key : _expected.keys()) - { + { assertEquals("Values for " + key + " did not match", _expected.getObject(key), actual.getObject(key)); } } @@ -147,7 +148,7 @@ public class FieldTableMessageTest extends TestCase implements MessageListener public void onMessage(Message message) { - synchronized(received) + synchronized (received) { received.add((JMSBytesMessage) message); received.notify(); @@ -162,9 +163,9 @@ public class FieldTableMessageTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { FieldTableMessageTest test = new FieldTableMessageTest(); - test._connectionString = argv.length == 0 ? "vm://:1" : argv[0]; + test._connectionString = (argv.length == 0) ? "vm://:1" : argv[0]; test.setUp(); - test._count = argv.length > 1 ? Integer.parseInt(argv[1]) : 5; + test._count = (argv.length > 1) ? Integer.parseInt(argv[1]) : 5; test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java index 3830d61701..ffc7be82f0 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java @@ -14,32 +14,36 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.test.unit.basic; import junit.framework.TestCase; -import org.apache.log4j.Logger; + import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.message.JMSTextMessage; +import org.apache.qpid.client.transport.TransportConnection; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Destination; -import javax.jms.Session; -import javax.jms.MessageConsumer; import javax.jms.JMSException; +import javax.jms.MessageConsumer; import javax.jms.MessageProducer; +import javax.jms.Session; import javax.jms.TextMessage; -import java.util.List; + import java.util.ArrayList; +import java.util.List; public class LargeMessageTest extends TestCase { - private static final Logger _logger = Logger.getLogger(LargeMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(LargeMessageTest.class); private AMQConnection _connection; private Destination _destination; @@ -68,7 +72,7 @@ public class LargeMessageTest extends TestCase private void init(AMQConnection connection) throws Exception { - Destination destination = new AMQQueue(connection,"LargeMessageTest", true); + Destination destination = new AMQQueue(connection, "LargeMessageTest", true); init(connection, destination); } @@ -84,7 +88,7 @@ public class LargeMessageTest extends TestCase // Test boundary of 1 packet to 2 packets public void test64kminus1() { - checkLargeMessage(64 * 1024 - 1); + checkLargeMessage((64 * 1024) - 1); } public void test64k() @@ -94,13 +98,13 @@ public class LargeMessageTest extends TestCase public void test64kplus1() { - checkLargeMessage(64 * 1024 + 1); + checkLargeMessage((64 * 1024) + 1); } - //Test packet boundary of 3 packtes + // Test packet boundary of 3 packtes public void test128kminus1() { - checkLargeMessage(128 * 1024 - 1); + checkLargeMessage((128 * 1024) - 1); } public void test128k() @@ -110,7 +114,7 @@ public class LargeMessageTest extends TestCase public void test128kplus1() { - checkLargeMessage(128 * 1024 + 1); + checkLargeMessage((128 * 1024) + 1); } // Testing larger messages @@ -167,10 +171,10 @@ public class LargeMessageTest extends TestCase { builder.append(ch); - if (i % 1000 == 0) + if ((i % 1000) == 0) { ch++; - if (ch == 'z' + 1) + if (ch == ('z' + 1)) { ch = 'a'; } @@ -180,7 +184,6 @@ public class LargeMessageTest extends TestCase return builder.toString(); } - public static junit.framework.Test suite() { return new junit.framework.TestSuite(LargeMessageTest.class); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java index 75eb3a8d5e..6708fefa86 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java @@ -20,9 +20,17 @@ */ package org.apache.qpid.test.unit.basic; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.AMQSession; +import org.apache.qpid.client.message.JMSMapMessage; +import org.apache.qpid.client.transport.TransportConnection; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Destination; import javax.jms.JMSException; @@ -34,20 +42,13 @@ import javax.jms.MessageNotWriteableException; import javax.jms.MessageProducer; import javax.jms.Session; -import junit.framework.Assert; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.client.message.JMSMapMessage; -import org.apache.qpid.client.transport.TransportConnection; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class MapMessageTest extends TestCase implements MessageListener { - - private static final Logger _logger = Logger.getLogger(MapMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(MapMessageTest.class); private AMQConnection _connection; private Destination _destination; @@ -57,7 +58,7 @@ public class MapMessageTest extends TestCase implements MessageListener private static final String MESSAGE = "Message "; private int _count = 100; public String _connectionString = "vm://:1"; - private byte[] _bytes = {99, 98, 97, 96, 95}; + private byte[] _bytes = { 99, 98, 97, 96, 95 }; private static final float _smallfloat = 100.0f; protected void setUp() throws Exception @@ -83,7 +84,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void init(AMQConnection connection) throws Exception { - Destination destination = new AMQQueue(connection,randomize("MapMessageTest"), true); + Destination destination = new AMQQueue(connection, randomize("MapMessageTest"), true); init(connection, destination); } @@ -93,7 +94,7 @@ public class MapMessageTest extends TestCase implements MessageListener _destination = destination; _session = (AMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - //set up a slow consumer + // set up a slow consumer _session.createConsumer(destination).setMessageListener(this); connection.start(); } @@ -109,7 +110,7 @@ public class MapMessageTest extends TestCase implements MessageListener void send(int count) throws JMSException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -123,7 +124,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void setMapValues(MapMessage message, int i) throws JMSException { - message.setBoolean("odd", i / 2 == 0); + message.setBoolean("odd", (i / 2) == 0); message.setByte("byte", (byte) Byte.MAX_VALUE); message.setBytes("bytes", _bytes); message.setChar("char", (char) 'c'); @@ -136,7 +137,7 @@ public class MapMessageTest extends TestCase implements MessageListener message.setShort("short", (short) Short.MAX_VALUE); message.setString("message", MESSAGE + i); - //Test Setting Object Values + // Test Setting Object Values message.setObject("object-bool", true); message.setObject("object-byte", Byte.MAX_VALUE); message.setObject("object-bytes", _bytes); @@ -147,7 +148,7 @@ public class MapMessageTest extends TestCase implements MessageListener message.setObject("object-long", Long.MAX_VALUE); message.setObject("object-short", Short.MAX_VALUE); - //Set a null String value + // Set a null String value message.setString("nullString", null); // Highlight protocol problem message.setString("emptyString", ""); @@ -159,10 +160,9 @@ public class MapMessageTest extends TestCase implements MessageListener long waitTime = 30000L; long waitUntilTime = System.currentTimeMillis() + 30000L; - - synchronized(received) + synchronized (received) { - while(received.size() < count && waitTime>0) + while ((received.size() < count) && (waitTime > 0)) { if (received.size() < count) { @@ -174,6 +174,7 @@ public class MapMessageTest extends TestCase implements MessageListener waitTime = waitUntilTime - System.currentTimeMillis(); } } + if (received.size() < count) { throw new Exception("Timed-out. Waiting for " + count + " only got " + received.size()); @@ -236,7 +237,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } try @@ -246,10 +247,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("message"); @@ -257,7 +258,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } try @@ -267,8 +268,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } + try { m.getLong("message"); @@ -276,10 +278,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getFloat("message"); @@ -287,9 +289,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("message"); @@ -297,9 +299,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (NumberFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("message"); @@ -307,7 +309,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals(MESSAGE + m.getInt("messageNumber"), m.getString("message")); @@ -316,7 +318,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void testShort(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("short"); @@ -324,7 +326,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -334,12 +336,12 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals(Short.MAX_VALUE, m.getShort("short")); - //Try bad reads + // Try bad reads try { m.getChar("short"); @@ -347,14 +349,14 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } Assert.assertEquals(Short.MAX_VALUE, m.getInt("short")); Assert.assertEquals(Short.MAX_VALUE, m.getLong("short")); - //Try bad reads + // Try bad reads try { m.getFloat("short"); @@ -362,9 +364,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("short"); @@ -372,9 +374,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("short"); @@ -382,7 +384,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Short.MAX_VALUE, m.getString("short")); @@ -391,7 +393,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void testLong(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("long"); @@ -399,7 +401,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -409,7 +411,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -419,10 +421,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("long"); @@ -430,7 +432,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } try @@ -440,12 +442,12 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals(Long.MAX_VALUE, m.getLong("long")); - //Try bad reads + // Try bad reads try { m.getFloat("long"); @@ -453,9 +455,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("long"); @@ -463,9 +465,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("long"); @@ -473,7 +475,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Long.MAX_VALUE, m.getString("long")); @@ -482,7 +484,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void testDouble(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("double"); @@ -490,7 +492,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -500,7 +502,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -510,10 +512,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("double"); @@ -521,7 +523,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } try @@ -531,8 +533,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } + try { m.getLong("double"); @@ -540,10 +543,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getFloat("double"); @@ -551,13 +554,12 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - Assert.assertEquals(Double.MAX_VALUE, m.getDouble("double")); - //Try bad reads + // Try bad reads try { m.getBytes("double"); @@ -565,17 +567,16 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Double.MAX_VALUE, m.getString("double")); } - private void testFloat(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("float"); @@ -583,7 +584,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -593,7 +594,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -603,10 +604,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("float"); @@ -614,7 +615,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } try @@ -624,8 +625,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } + try { m.getLong("float"); @@ -633,15 +635,14 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - Assert.assertEquals(Float.MAX_VALUE, m.getFloat("float")); Assert.assertEquals(_smallfloat, (float) m.getDouble("smallfloat")); - //Try bad reads + // Try bad reads try { m.getBytes("float"); @@ -649,17 +650,16 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Float.MAX_VALUE, m.getString("float")); } - private void testInt(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("int"); @@ -667,7 +667,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -677,7 +677,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -687,10 +687,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("int"); @@ -698,14 +698,14 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } Assert.assertEquals(Integer.MAX_VALUE, m.getInt("int")); Assert.assertEquals(Integer.MAX_VALUE, (int) m.getLong("int")); - //Try bad reads + // Try bad reads try { m.getFloat("int"); @@ -713,9 +713,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("int"); @@ -723,9 +723,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("int"); @@ -733,17 +733,16 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Integer.MAX_VALUE, m.getString("int")); } - private void testChar(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("char"); @@ -751,7 +750,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -761,7 +760,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -771,7 +770,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals('c', m.getChar("char")); @@ -783,8 +782,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } + try { m.getLong("char"); @@ -792,10 +792,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getFloat("char"); @@ -803,9 +803,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("char"); @@ -813,9 +813,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("char"); @@ -823,7 +823,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + 'c', m.getString("char")); @@ -831,7 +831,7 @@ public class MapMessageTest extends TestCase implements MessageListener private void testBytes(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("bytes"); @@ -839,7 +839,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -849,7 +849,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -859,10 +859,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("bytes"); @@ -870,7 +870,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } try @@ -880,7 +880,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } try @@ -890,10 +890,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getFloat("bytes"); @@ -901,9 +901,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("bytes"); @@ -911,10 +911,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - assertBytesEqual(_bytes, m.getBytes("bytes")); try @@ -924,15 +923,14 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - } private void testByte(JMSMapMessage m) throws JMSException { - //Try bad reads + // Try bad reads try { m.getBoolean("byte"); @@ -940,14 +938,14 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals(Byte.MAX_VALUE, m.getByte("byte")); Assert.assertEquals((short) Byte.MAX_VALUE, m.getShort("byte")); - //Try bad reads + // Try bad reads try { m.getChar("byte"); @@ -955,15 +953,15 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } - //Reading a byte as an int is ok + // Reading a byte as an int is ok Assert.assertEquals((short) Byte.MAX_VALUE, m.getInt("byte")); Assert.assertEquals((short) Byte.MAX_VALUE, m.getLong("byte")); - //Try bad reads + // Try bad reads try { m.getFloat("byte"); @@ -971,9 +969,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("byte"); @@ -981,9 +979,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("byte"); @@ -991,7 +989,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + Byte.MAX_VALUE, m.getString("byte")); @@ -1003,7 +1001,7 @@ public class MapMessageTest extends TestCase implements MessageListener Assert.assertEquals((m.getInt("messageNumber") / 2) == 0, m.getBoolean("odd")); - //Try bad reads + // Try bad reads try { m.getByte("odd"); @@ -1011,10 +1009,10 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getShort("odd"); @@ -1022,9 +1020,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getChar("odd"); @@ -1032,9 +1030,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException npe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getInt("odd"); @@ -1042,9 +1040,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getLong("odd"); @@ -1052,9 +1050,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getFloat("odd"); @@ -1062,9 +1060,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getDouble("odd"); @@ -1072,9 +1070,9 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } - //Try bad reads + // Try bad reads try { m.getBytes("odd"); @@ -1082,16 +1080,15 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageFormatException nfe) { - //normal execution + // normal execution } Assert.assertEquals("" + ((m.getInt("messageNumber") / 2) == 0), m.getString("odd")); } - private void testPropertyWriteStatus(JMSMapMessage m) throws JMSException { - //Check property write status + // Check property write status try { m.setStringProperty("test", "test"); @@ -1099,7 +1096,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearProperties(); @@ -1123,7 +1120,7 @@ public class MapMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearBody(); @@ -1138,54 +1135,51 @@ public class MapMessageTest extends TestCase implements MessageListener } } - - - private void testMapValues(JMSMapMessage m, int count) throws JMSException { - //Test get<Primiative> + // Test get<Primiative> - //Boolean - assertEqual(count / 2 == 0, m.getBoolean("odd")); - assertEqual("" + (count / 2 == 0), m.getString("odd")); + // Boolean + assertEqual((count / 2) == 0, m.getBoolean("odd")); + assertEqual("" + ((count / 2) == 0), m.getString("odd")); - //Byte + // Byte assertEqual(Byte.MAX_VALUE, m.getByte("byte")); assertEqual("" + Byte.MAX_VALUE, m.getString("byte")); - //Bytes + // Bytes assertBytesEqual(_bytes, m.getBytes("bytes")); - //Char + // Char assertEqual('c', m.getChar("char")); - //Double + // Double assertEqual(Double.MAX_VALUE, m.getDouble("double")); assertEqual("" + Double.MAX_VALUE, m.getString("double")); - //Float + // Float assertEqual(Float.MAX_VALUE, m.getFloat("float")); assertEqual(_smallfloat, (float) m.getDouble("smallfloat")); assertEqual("" + Float.MAX_VALUE, m.getString("float")); - //Integer + // Integer assertEqual(Integer.MAX_VALUE, m.getInt("int")); assertEqual("" + Integer.MAX_VALUE, m.getString("int")); assertEqual(count, m.getInt("messageNumber")); - //long + // long assertEqual(Long.MAX_VALUE, m.getLong("long")); assertEqual("" + Long.MAX_VALUE, m.getString("long")); - //Short + // Short assertEqual(Short.MAX_VALUE, m.getShort("short")); assertEqual("" + Short.MAX_VALUE, m.getString("short")); assertEqual((int) Short.MAX_VALUE, m.getInt("short")); - //String + // String assertEqual(MESSAGE + count, m.getString("message")); - //Test getObjects + // Test getObjects assertEqual(true, m.getObject("object-bool")); assertEqual(Byte.MAX_VALUE, m.getObject("object-byte")); assertBytesEqual(_bytes, (byte[]) m.getObject("object-bytes")); @@ -1196,7 +1190,7 @@ public class MapMessageTest extends TestCase implements MessageListener assertEqual(Long.MAX_VALUE, m.getObject("object-long")); assertEqual(Short.MAX_VALUE, m.getObject("object-short")); - //Check Special values + // Check Special values assertTrue(m.getString("nullString") == null); assertEqual("", m.getString("emptyString")); } @@ -1211,7 +1205,6 @@ public class MapMessageTest extends TestCase implements MessageListener } } - private static void assertEqual(Iterator expected, Iterator actual) { List<String> errors = new ArrayList<String>(); @@ -1234,6 +1227,7 @@ public class MapMessageTest extends TestCase implements MessageListener { errors.add("Found " + actual.next() + " but no more expected values."); } + if (!errors.isEmpty()) { throw new RuntimeException(errors.toString()); @@ -1250,7 +1244,7 @@ public class MapMessageTest extends TestCase implements MessageListener public void onMessage(Message message) { - synchronized(received) + synchronized (received) { _logger.info("****************** Recevied Messgage:" + (JMSMapMessage) message); received.add((JMSMapMessage) message); @@ -1266,12 +1260,13 @@ public class MapMessageTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { MapMessageTest test = new MapMessageTest(); - test._connectionString = argv.length == 0 ? "vm://:1" : argv[0]; + test._connectionString = (argv.length == 0) ? "vm://:1" : argv[0]; test.setUp(); if (argv.length > 1) { test._count = Integer.parseInt(argv[1]); } + test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MultipleConnectionTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MultipleConnectionTest.java index ddb21ed3e5..65b3d60ad9 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/MultipleConnectionTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/MultipleConnectionTest.java @@ -19,12 +19,6 @@ */ package org.apache.qpid.test.unit.basic; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.Session; - import junit.framework.TestCase; import org.apache.qpid.client.AMQConnection; @@ -33,11 +27,19 @@ import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.AMQTopic; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Session; public class MultipleConnectionTest extends TestCase { - private static final Logger _logger = Logger.getLogger(MultipleConnectionTest.class); + private static final Logger _logger = LoggerFactory.getLogger(MultipleConnectionTest.class); public static final String _defaultBroker = "vm://:1"; public String _connectionString = _defaultBroker; @@ -64,6 +66,7 @@ public class MultipleConnectionTest extends TestCase _counters[i] = new MessageCounter(_sessions[i].toString()); _sessions[i].createConsumer(dest).setMessageListener(_counters[i]); } + _connection.start(); } @@ -128,8 +131,10 @@ public class MultipleConnectionTest extends TestCase { break; } + wait(timeLeft); } + return expected <= _count; } @@ -144,7 +149,6 @@ public class MultipleConnectionTest extends TestCase } } - protected void setUp() throws Exception { super.setUp(); @@ -183,7 +187,7 @@ public class MultipleConnectionTest extends TestCase public static void main(String[] argv) throws Exception { - String broker = argv.length > 0 ? argv[0] : _defaultBroker; + String broker = (argv.length > 0) ? argv[0] : _defaultBroker; MultipleConnectionTest test = new MultipleConnectionTest(); test._connectionString = broker; @@ -195,12 +199,9 @@ public class MultipleConnectionTest extends TestCase String broker = _connectionString; int messages = 10; - AMQTopic topic = new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME,"amq.topic"); + AMQTopic topic = new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, "amq.topic"); - Receiver[] receivers = new Receiver[]{ - new Receiver(broker, topic, 2), - new Receiver(broker, topic, 14) - }; + Receiver[] receivers = new Receiver[] { new Receiver(broker, topic, 2), new Receiver(broker, topic, 14) }; Publisher publisher = new Publisher(broker, topic); for (int i = 0; i < messages; i++) diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/ObjectMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/ObjectMessageTest.java index aee9002354..9237555734 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/ObjectMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/ObjectMessageTest.java @@ -19,17 +19,6 @@ */ package org.apache.qpid.test.unit.basic; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.MessageNotWriteableException; -import javax.jms.MessageProducer; - import junit.framework.Assert; import junit.framework.TestCase; @@ -39,11 +28,24 @@ import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.message.JMSObjectMessage; import org.apache.qpid.client.transport.TransportConnection; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageNotWriteableException; +import javax.jms.MessageProducer; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class ObjectMessageTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(ObjectMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(ObjectMessageTest.class); private AMQConnection _connection; private AMQDestination _destination; @@ -75,7 +77,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener private void init(AMQConnection connection) throws Exception { - init(connection, new AMQQueue(connection,randomize("ObjectMessageTest"), true)); + init(connection, new AMQQueue(connection, randomize("ObjectMessageTest"), true)); } private void init(AMQConnection connection, AMQDestination destination) throws Exception @@ -84,7 +86,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener _destination = destination; _session = (AMQSession) connection.createSession(false, AMQSession.NO_ACKNOWLEDGE); - //set up a slow consumer + // set up a slow consumer _session.createConsumer(destination).setMessageListener(this); connection.start(); } @@ -101,7 +103,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener void send(int count) throws JMSException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -113,7 +115,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener void waitFor(int count) throws InterruptedException { - synchronized(received) + synchronized (received) { while (received.size() < count) { @@ -136,7 +138,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearBody(); @@ -150,7 +152,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener Assert.fail("Message should be writeable"); } - //Check property write status + // Check property write status try { m.setStringProperty("test", "test"); @@ -158,7 +160,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearProperties(); @@ -200,6 +202,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener { errors.add("Found " + actual.next() + " but no more expected values."); } + if (!errors.isEmpty()) { throw new RuntimeException(errors.toString()); @@ -216,7 +219,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener public void onMessage(Message message) { - synchronized(received) + synchronized (received) { received.add((JMSObjectMessage) message); received.notify(); @@ -244,7 +247,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener public boolean equals(Object o) { - return o instanceof Payload && ((Payload) o).data.equals(data); + return (o instanceof Payload) && ((Payload) o).data.equals(data); } public String toString() @@ -256,12 +259,13 @@ public class ObjectMessageTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { ObjectMessageTest test = new ObjectMessageTest(); - test._connectionString = argv.length == 0 ? "vm://:1" : argv[0]; + test._connectionString = (argv.length == 0) ? "vm://:1" : argv[0]; test.setUp(); if (argv.length > 1) { test._count = Integer.parseInt(argv[1]); } + test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java index 90784b0772..dce9667ff2 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/PropertyValueTest.java @@ -20,10 +20,19 @@ */ package org.apache.qpid.test.unit.basic; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.math.BigDecimal; +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.AMQSession; +import org.apache.qpid.client.message.AMQMessage; +import org.apache.qpid.client.message.JMSTextMessage; +import org.apache.qpid.client.transport.TransportConnection; +import org.apache.qpid.framing.AMQShortString; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Destination; import javax.jms.JMSException; @@ -33,22 +42,14 @@ import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; -import junit.framework.Assert; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.client.message.JMSTextMessage; -import org.apache.qpid.client.message.AMQMessage; -import org.apache.qpid.framing.AMQShortString; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class PropertyValueTest extends TestCase implements MessageListener { - - private static final Logger _logger = Logger.getLogger(PropertyValueTest.class); + private static final Logger _logger = LoggerFactory.getLogger(PropertyValueTest.class); private int count = 0; private AMQConnection _connection; @@ -83,7 +84,7 @@ public class PropertyValueTest extends TestCase implements MessageListener _destination = destination; _session = (AMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - //set up a slow consumer + // set up a slow consumer _session.createConsumer(destination).setMessageListener(this); connection.start(); } @@ -136,7 +137,7 @@ public class PropertyValueTest extends TestCase implements MessageListener void send(int count) throws JMSException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -152,14 +153,14 @@ public class PropertyValueTest extends TestCase implements MessageListener m.setIntProperty("Int", (int) Integer.MAX_VALUE); m.setJMSCorrelationID("Correlation"); - //fixme the m.setJMSMessage has no effect + // fixme the m.setJMSMessage has no effect producer.setPriority(8); m.setJMSPriority(3); - // Queue + // Queue Queue q; - if (i / 2 == 0) + if ((i / 2) == 0) { q = _session.createTemporaryQueue(); } @@ -173,8 +174,8 @@ public class PropertyValueTest extends TestCase implements MessageListener _logger.trace("Message:" + m); - Assert.assertEquals("Check temp queue has been set correctly", - m.getJMSReplyTo().toString(), m.getStringProperty("TempQueue")); + Assert.assertEquals("Check temp queue has been set correctly", m.getJMSReplyTo().toString(), + m.getStringProperty("TempQueue")); m.setJMSType("Test"); m.setLongProperty("UnsignedInt", (long) 4294967295L); @@ -183,18 +184,17 @@ public class PropertyValueTest extends TestCase implements MessageListener m.setShortProperty("Short", (short) Short.MAX_VALUE); m.setStringProperty("String", "Test"); - //AMQP Specific values + // AMQP Specific values // Timestamp long nano = System.nanoTime(); m.setStringProperty("time-str", String.valueOf(nano)); ((AMQMessage) m).setTimestampProperty(new AMQShortString("time"), nano); - //Decimal + // Decimal BigDecimal bd = new BigDecimal(Integer.MAX_VALUE); ((AMQMessage) m).setDecimalProperty(new AMQShortString("decimal"), bd.setScale(Byte.MAX_VALUE)); - bd = new BigDecimal((long) Integer.MAX_VALUE + 1L); try @@ -207,10 +207,10 @@ public class PropertyValueTest extends TestCase implements MessageListener // normal path. } - try { - ((AMQMessage) m).setDecimalProperty(new AMQShortString("decimal-bad-scale"), bd.setScale(Byte.MAX_VALUE + 1)); + ((AMQMessage) m).setDecimalProperty(new AMQShortString("decimal-bad-scale"), + bd.setScale(Byte.MAX_VALUE + 1)); fail("UnsupportedOperationException should be thrown as scale can't be correctly transmitted"); } catch (UnsupportedOperationException uoe) @@ -218,7 +218,7 @@ public class PropertyValueTest extends TestCase implements MessageListener // normal path. } - //Void + // Void ((AMQMessage) m).setVoidProperty(new AMQShortString("void")); _logger.debug("Sending Msg:" + m); @@ -244,58 +244,53 @@ public class PropertyValueTest extends TestCase implements MessageListener { actual.add(m.getText()); - //Check Properties - - Assert.assertEquals("Check Boolean properties are correctly transported", - true, m.getBooleanProperty("Bool")); - Assert.assertEquals("Check Byte properties are correctly transported", - (byte) Byte.MAX_VALUE, m.getByteProperty("Byte")); - Assert.assertEquals("Check Double properties are correctly transported", - (double) Double.MAX_VALUE, m.getDoubleProperty("Double")); - Assert.assertEquals("Check Float properties are correctly transported", - (float) Float.MAX_VALUE, m.getFloatProperty("Float")); - Assert.assertEquals("Check Int properties are correctly transported", - (int) Integer.MAX_VALUE, m.getIntProperty("Int")); - Assert.assertEquals("Check CorrelationID properties are correctly transported", - "Correlation", m.getJMSCorrelationID()); - Assert.assertEquals("Check Priority properties are correctly transported", - 8, m.getJMSPriority()); + // Check Properties + + Assert.assertEquals("Check Boolean properties are correctly transported", true, m.getBooleanProperty("Bool")); + Assert.assertEquals("Check Byte properties are correctly transported", (byte) Byte.MAX_VALUE, + m.getByteProperty("Byte")); + Assert.assertEquals("Check Double properties are correctly transported", (double) Double.MAX_VALUE, + m.getDoubleProperty("Double")); + Assert.assertEquals("Check Float properties are correctly transported", (float) Float.MAX_VALUE, + m.getFloatProperty("Float")); + Assert.assertEquals("Check Int properties are correctly transported", (int) Integer.MAX_VALUE, + m.getIntProperty("Int")); + Assert.assertEquals("Check CorrelationID properties are correctly transported", "Correlation", + m.getJMSCorrelationID()); + Assert.assertEquals("Check Priority properties are correctly transported", 8, m.getJMSPriority()); // Queue - Assert.assertEquals("Check ReplyTo properties are correctly transported", - m.getStringProperty("TempQueue"), m.getJMSReplyTo().toString()); + Assert.assertEquals("Check ReplyTo properties are correctly transported", m.getStringProperty("TempQueue"), + m.getJMSReplyTo().toString()); - Assert.assertEquals("Check Type properties are correctly transported", - "Test", m.getJMSType()); + Assert.assertEquals("Check Type properties are correctly transported", "Test", m.getJMSType()); - Assert.assertEquals("Check Short properties are correctly transported", - (short) Short.MAX_VALUE, m.getShortProperty("Short")); - Assert.assertEquals("Check UnsignedInt properties are correctly transported", - (long) 4294967295L, m.getLongProperty("UnsignedInt")); - Assert.assertEquals("Check Long properties are correctly transported", - (long) Long.MAX_VALUE, m.getLongProperty("Long")); - Assert.assertEquals("Check String properties are correctly transported", - "Test", m.getStringProperty("String")); + Assert.assertEquals("Check Short properties are correctly transported", (short) Short.MAX_VALUE, + m.getShortProperty("Short")); + Assert.assertEquals("Check UnsignedInt properties are correctly transported", (long) 4294967295L, + m.getLongProperty("UnsignedInt")); + Assert.assertEquals("Check Long properties are correctly transported", (long) Long.MAX_VALUE, + m.getLongProperty("Long")); + Assert.assertEquals("Check String properties are correctly transported", "Test", m.getStringProperty("String")); // AMQP Tests Specific values - Assert.assertEquals("Check Timestamp properties are correctly transported", - m.getStringProperty("time-str"), - ((AMQMessage) m).getTimestampProperty(new AMQShortString("time")).toString()); + Assert.assertEquals("Check Timestamp properties are correctly transported", m.getStringProperty("time-str"), + ((AMQMessage) m).getTimestampProperty(new AMQShortString("time")).toString()); - //Decimal + // Decimal BigDecimal bd = new BigDecimal(Integer.MAX_VALUE); - Assert.assertEquals("Check decimal properties are correctly transported", - bd.setScale(Byte.MAX_VALUE), - ((AMQMessage) m).getDecimalProperty(new AMQShortString("decimal"))); + Assert.assertEquals("Check decimal properties are correctly transported", bd.setScale(Byte.MAX_VALUE), + ((AMQMessage) m).getDecimalProperty(new AMQShortString("decimal"))); - //Void + // Void ((AMQMessage) m).setVoidProperty(new AMQShortString("void")); Assert.assertTrue("Check void properties are correctly transported", - ((AMQMessage) m).getPropertyHeaders().containsKey("void")); + ((AMQMessage) m).getPropertyHeaders().containsKey("void")); } + received.clear(); assertEqual(messages.iterator(), actual.iterator()); @@ -325,6 +320,7 @@ public class PropertyValueTest extends TestCase implements MessageListener { errors.add("Found " + actual.next() + " but no more expected values."); } + if (!errors.isEmpty()) { throw new RuntimeException(errors.toString()); @@ -356,12 +352,13 @@ public class PropertyValueTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { PropertyValueTest test = new PropertyValueTest(); - test._connectionString = argv.length == 0 ? "vm://:1" : argv[0]; + test._connectionString = (argv.length == 0) ? "vm://:1" : argv[0]; test.setUp(); if (argv.length > 1) { test._count = Integer.parseInt(argv[1]); } + test.testOnce(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java index cc4bb441a4..40c712c1c9 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java @@ -20,14 +20,8 @@ */ package org.apache.qpid.test.unit.basic; -import javax.jms.DeliveryMode; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; - import junit.framework.TestCase; -import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQQueue; @@ -35,10 +29,17 @@ import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.BasicMessageProducer; import org.apache.qpid.client.transport.TransportConnection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.DeliveryMode; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; + public class SelectorTest extends TestCase implements MessageListener { - - private final static Logger _logger = org.apache.log4j.Logger.getLogger(SelectorTest.class); + private static final Logger _logger = LoggerFactory.getLogger(SelectorTest.class); private AMQConnection _connection; private AMQDestination _destination; @@ -70,13 +71,12 @@ public class SelectorTest extends TestCase implements MessageListener _destination = destination; connection.start(); - String selector = null; -// selector = "Cost = 2 AND JMSDeliveryMode=" + DeliveryMode.NON_PERSISTENT; -// selector = "JMSType = Special AND Cost = 2 AND AMQMessageID > 0 AND JMSDeliveryMode=" + DeliveryMode.NON_PERSISTENT; + // selector = "Cost = 2 AND JMSDeliveryMode=" + DeliveryMode.NON_PERSISTENT; + // selector = "JMSType = Special AND Cost = 2 AND AMQMessageID > 0 AND JMSDeliveryMode=" + DeliveryMode.NON_PERSISTENT; _session = (AMQSession) connection.createSession(false, AMQSession.NO_ACKNOWLEDGE); - //_session.createConsumer(destination).setMessageListener(this); + // _session.createConsumer(destination).setMessageListener(this); _session.createConsumer(destination, selector).setMessageListener(this); } @@ -103,7 +103,7 @@ public class SelectorTest extends TestCase implements MessageListener if (count == 0) { fail("Did not get message!"); - //throw new RuntimeException("Did not get message!"); + // throw new RuntimeException("Did not get message!"); } } finally @@ -128,7 +128,7 @@ public class SelectorTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { SelectorTest test = new SelectorTest(); - test._connectionString = argv.length == 0 ? "localhost:5672" : argv[0]; + test._connectionString = (argv.length == 0) ? "localhost:5672" : argv[0]; test.setUp(); test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SessionStartTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SessionStartTest.java index 8e2d59475a..cc18169a5b 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SessionStartTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SessionStartTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,23 +20,25 @@ */ package org.apache.qpid.test.unit.basic; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; - import junit.framework.TestCase; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; -import org.apache.qpid.testutil.VMBrokerSetup; import org.apache.qpid.framing.AMQShortString; -import org.apache.log4j.Logger; +import org.apache.qpid.testutil.VMBrokerSetup; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; public class SessionStartTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(SessionStartTest.class); + private static final Logger _logger = LoggerFactory.getLogger(SessionStartTest.class); private AMQConnection _connection; private AMQDestination _destination; @@ -57,7 +59,8 @@ public class SessionStartTest extends TestCase implements MessageListener private void init(AMQConnection connection) throws Exception { - init(connection, new AMQQueue(connection.getDefaultQueueExchangeName(), new AMQShortString(randomize("SessionStartTest")), true)); + init(connection, + new AMQQueue(connection.getDefaultQueueExchangeName(), new AMQShortString(randomize("SessionStartTest")), true)); } private void init(AMQConnection connection, AMQDestination destination) throws Exception @@ -107,7 +110,7 @@ public class SessionStartTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { SessionStartTest test = new SessionStartTest(); - test._connectionString = argv.length == 0 ? "localhost:5672" : argv[0]; + test._connectionString = (argv.length == 0) ? "localhost:5672" : argv[0]; test.setUp(); test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java index f24355552a..000fb9ab88 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,9 +20,18 @@ */ package org.apache.qpid.test.unit.basic; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import junit.framework.Assert; +import junit.framework.TestCase; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.AMQSession; +import org.apache.qpid.client.message.JMSTextMessage; +import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.testutil.VMBrokerSetup; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.Destination; import javax.jms.JMSException; @@ -32,20 +41,13 @@ import javax.jms.MessageNotWriteableException; import javax.jms.MessageProducer; import javax.jms.Session; -import junit.framework.Assert; -import junit.framework.TestCase; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.AMQSession; -import org.apache.qpid.client.message.JMSTextMessage; -import org.apache.qpid.testutil.VMBrokerSetup; -import org.apache.qpid.framing.AMQShortString; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; public class TextMessageTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(TextMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(TextMessageTest.class); private AMQConnection _connection; private Destination _destination; @@ -75,7 +77,8 @@ public class TextMessageTest extends TestCase implements MessageListener private void init(AMQConnection connection) throws Exception { - Destination destination = new AMQQueue(connection.getDefaultQueueExchangeName(), new AMQShortString(randomize("TextMessageTest")), true); + Destination destination = + new AMQQueue(connection.getDefaultQueueExchangeName(), new AMQShortString(randomize("TextMessageTest")), true); init(connection, destination); } @@ -85,7 +88,7 @@ public class TextMessageTest extends TestCase implements MessageListener _destination = destination; _session = (AMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); - //set up a slow consumer + // set up a slow consumer _session.createConsumer(destination).setMessageListener(this); connection.start(); } @@ -102,7 +105,7 @@ public class TextMessageTest extends TestCase implements MessageListener void send(int count) throws JMSException { - //create a publisher + // create a publisher MessageProducer producer = _session.createProducer(_destination); for (int i = 0; i < count; i++) { @@ -118,7 +121,7 @@ public class TextMessageTest extends TestCase implements MessageListener void waitFor(int count) throws InterruptedException { - synchronized(received) + synchronized (received) { while (received.size() < count) { @@ -134,7 +137,7 @@ public class TextMessageTest extends TestCase implements MessageListener { actual.add(m.getText()); - //Check body write status + // Check body write status try { m.setText("Test text"); @@ -142,7 +145,7 @@ public class TextMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearBody(); @@ -156,7 +159,7 @@ public class TextMessageTest extends TestCase implements MessageListener Assert.fail("Message should be writeable"); } - //Check property write status + // Check property write status try { m.setStringProperty("test", "test"); @@ -164,7 +167,7 @@ public class TextMessageTest extends TestCase implements MessageListener } catch (MessageNotWriteableException mnwe) { - //normal execution + // normal execution } m.clearProperties(); @@ -205,6 +208,7 @@ public class TextMessageTest extends TestCase implements MessageListener { errors.add("Found " + actual.next() + " but no more expected values."); } + if (!errors.isEmpty()) { throw new RuntimeException(errors.toString()); @@ -221,7 +225,7 @@ public class TextMessageTest extends TestCase implements MessageListener public void onMessage(Message message) { - synchronized(received) + synchronized (received) { received.add((JMSTextMessage) message); received.notify(); @@ -236,12 +240,13 @@ public class TextMessageTest extends TestCase implements MessageListener public static void main(String[] argv) throws Exception { TextMessageTest test = new TextMessageTest(); - test._connectionString = argv.length == 0 ? "vm://:1" : argv[0]; + test._connectionString = (argv.length == 0) ? "vm://:1" : argv[0]; test.setUp(); if (argv.length > 1) { test._count = Integer.parseInt(argv[1]); } + test.test(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/close/CloseTests.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/close/CloseTests.java index 505af361bc..690ba7f01b 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/close/CloseTests.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/close/CloseTests.java @@ -14,35 +14,35 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.test.unit.basic.close; import junit.framework.TestCase; -import org.apache.qpid.client.transport.TransportConnection; + +import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.AMQException; -import org.apache.qpid.url.URLSyntaxException; +import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.url.AMQBindingURL; -import org.apache.log4j.Logger; +import org.apache.qpid.url.URLSyntaxException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import javax.jms.Session; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.MessageProducer; +import javax.jms.Session; public class CloseTests extends TestCase { - - private static final Logger _logger = Logger.getLogger(CloseTests.class); - + private static final Logger _logger = LoggerFactory.getLogger(CloseTests.class); private static final String BROKER = "vm://:1"; - protected void setUp() throws Exception { super.setUp(); @@ -57,12 +57,11 @@ public class CloseTests extends TestCase TransportConnection.killVMBroker(1); } - public void testCloseQueueReceiver() throws AMQException, URLSyntaxException, JMSException { AMQConnection connection = new AMQConnection(BROKER, "guest", "guest", this.getName(), "test"); - Session session = connection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE); + Session session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); AMQQueue queue = new AMQQueue(new AMQBindingURL("test-queue")); MessageConsumer consumer = session.createConsumer(queue); @@ -76,6 +75,6 @@ public class CloseTests extends TestCase consumer.close(); _logger.info("Closed Consumer"); - + } } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseMethodHandlerNoCloseOk.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseMethodHandlerNoCloseOk.java index 5e45d1d537..575d542633 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseMethodHandlerNoCloseOk.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseMethodHandlerNoCloseOk.java @@ -14,30 +14,32 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.test.unit.client.channelclose; -import org.apache.log4j.Logger; -import org.apache.qpid.client.state.AMQStateManager; -import org.apache.qpid.client.state.StateAwareMethodListener; -import org.apache.qpid.client.protocol.AMQProtocolSession; -import org.apache.qpid.client.AMQNoConsumersException; -import org.apache.qpid.client.AMQNoRouteException; -import org.apache.qpid.protocol.AMQMethodEvent; -import org.apache.qpid.protocol.AMQConstant; -import org.apache.qpid.AMQException; -import org.apache.qpid.AMQInvalidRoutingKeyException; import org.apache.qpid.AMQChannelClosedException; +import org.apache.qpid.AMQException; import org.apache.qpid.AMQInvalidArgumentException; -import org.apache.qpid.framing.ChannelCloseBody; +import org.apache.qpid.AMQInvalidRoutingKeyException; +import org.apache.qpid.client.AMQNoConsumersException; +import org.apache.qpid.client.AMQNoRouteException; +import org.apache.qpid.client.protocol.AMQProtocolSession; +import org.apache.qpid.client.state.AMQStateManager; +import org.apache.qpid.client.state.StateAwareMethodListener; import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.framing.ChannelCloseBody; +import org.apache.qpid.protocol.AMQConstant; +import org.apache.qpid.protocol.AMQMethodEvent; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ChannelCloseMethodHandlerNoCloseOk implements StateAwareMethodListener { - private static final Logger _logger = Logger.getLogger(ChannelCloseMethodHandlerNoCloseOk.class); + private static final Logger _logger = LoggerFactory.getLogger(ChannelCloseMethodHandlerNoCloseOk.class); private static ChannelCloseMethodHandlerNoCloseOk _handler = new ChannelCloseMethodHandlerNoCloseOk(); @@ -46,7 +48,8 @@ public class ChannelCloseMethodHandlerNoCloseOk implements StateAwareMethodListe return _handler; } - public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) throws AMQException + public void methodReceived(AMQStateManager stateManager, AMQProtocolSession protocolSession, AMQMethodEvent evt) + throws AMQException { _logger.debug("ChannelClose method received"); ChannelCloseBody method = (ChannelCloseBody) evt.getMethod(); @@ -59,9 +62,9 @@ public class ChannelCloseMethodHandlerNoCloseOk implements StateAwareMethodListe } // For this test Method Handler .. don't send Close-OK -// // TODO: Be aware of possible changes to parameter order as versions change. -// AMQFrame frame = ChannelCloseOkBody.createAMQFrame(evt.getChannelId(), method.getMajor(), method.getMinor()); -// protocolSession.writeFrame(frame); + // // TODO: Be aware of possible changes to parameter order as versions change. + // AMQFrame frame = ChannelCloseOkBody.createAMQFrame(evt.getChannelId(), method.getMajor(), method.getMinor()); + // protocolSession.writeFrame(frame); if (errorCode != AMQConstant.REPLY_SUCCESS) { _logger.error("Channel close received with errorCode " + errorCode + ", and reason " + reason); @@ -91,6 +94,7 @@ public class ChannelCloseMethodHandlerNoCloseOk implements StateAwareMethodListe } } + protocolSession.channelClosed(evt.getChannelId(), errorCode, String.valueOf(reason)); } -}
\ No newline at end of file +} diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseOkTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseOkTest.java index c7f1bb3065..6753ed48e4 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseOkTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseOkTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,10 +20,17 @@ */ package org.apache.qpid.test.unit.client.channelclose; -import java.util.ArrayList; -import java.util.List; +import junit.framework.TestCase; + +import junit.textui.TestRunner; + +import org.apache.qpid.client.AMQConnection; +import org.apache.qpid.client.AMQQueue; +import org.apache.qpid.client.transport.TransportConnection; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import javax.jms.Connection; import javax.jms.Destination; import javax.jms.ExceptionListener; import javax.jms.JMSException; @@ -33,14 +40,8 @@ import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; -import junit.framework.TestCase; -import junit.textui.TestRunner; - -import org.apache.log4j.Logger; -import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQQueue; -import org.apache.qpid.client.transport.TransportConnection; - +import java.util.ArrayList; +import java.util.List; /** * Due to bizarre exception handling all sessions are closed if you get @@ -66,10 +67,9 @@ public class ChannelCloseOkTest extends TestCase private final List<Message> _received1 = new ArrayList<Message>(); private final List<Message> _received2 = new ArrayList<Message>(); - private final static Logger _log = Logger.getLogger(ChannelCloseOkTest.class); + private static final Logger _log = LoggerFactory.getLogger(ChannelCloseOkTest.class); public String _connectionString = "vm://:1"; - protected void setUp() throws Exception { super.setUp(); @@ -77,34 +77,34 @@ public class ChannelCloseOkTest extends TestCase TransportConnection.createVMBroker(1); _connection = new AMQConnection(_connectionString, "guest", "guest", randomize("Client"), "test"); - _destination1 = new AMQQueue(_connection,"q1", true); + _destination1 = new AMQQueue(_connection, "q1", true); _destination2 = new AMQQueue(_connection, "q2", true); _session1 = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); _session1.createConsumer(_destination1).setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _log.debug("consumer 1 got message [" + getTextMessage(message) + "]"); - synchronized(_received1) + public void onMessage(Message message) { - _received1.add(message); - _received1.notify(); + _log.debug("consumer 1 got message [" + getTextMessage(message) + "]"); + synchronized (_received1) + { + _received1.add(message); + _received1.notify(); + } } - } - }); + }); _session2 = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE); _session2.createConsumer(_destination2).setMessageListener(new MessageListener() - { - public void onMessage(Message message) { - _log.debug("consumer 2 got message [" + getTextMessage(message) + "]"); - synchronized(_received2) + public void onMessage(Message message) { - _received2.add(message); - _received2.notify(); + _log.debug("consumer 2 got message [" + getTextMessage(message) + "]"); + synchronized (_received2) + { + _received2.add(message); + _received2.notify(); + } } - } - }); + }); _connection.start(); } @@ -145,12 +145,12 @@ public class ChannelCloseOkTest extends TestCase public void testWithExceptionListener() throws Exception { _connection.setExceptionListener(new ExceptionListener() - { - public void onException(JMSException jmsException) { - _log.warn("onException - "+jmsException.getMessage()); - } - }); + public void onException(JMSException jmsException) + { + _log.warn("onException - " + jmsException.getMessage()); + } + }); doTest(); } @@ -175,6 +175,7 @@ public class ChannelCloseOkTest extends TestCase send(_session1, _destination1, "" + i); send(_session2, _destination2, "" + i); } + waitFor(_received1, num + 1); waitFor(_received2, num + 1); @@ -184,7 +185,7 @@ public class ChannelCloseOkTest extends TestCase } private void sendAndWait(Session session, Destination destination, String message, List<Message> received, int count) - throws JMSException, InterruptedException + throws JMSException, InterruptedException { send(session, destination, message); waitFor(received, count); @@ -199,7 +200,7 @@ public class ChannelCloseOkTest extends TestCase private void waitFor(List<Message> received, int count) throws InterruptedException { - synchronized(received) + synchronized (received) { while (received.size() < count) { diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseTest.java index c201e88104..87984e8c49 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/channelclose/ChannelCloseTest.java @@ -22,8 +22,6 @@ package org.apache.qpid.test.unit.client.channelclose; import junit.framework.TestCase; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.AMQTimeoutException; import org.apache.qpid.client.AMQConnection; @@ -42,6 +40,9 @@ import org.apache.qpid.jms.ConnectionListener; import org.apache.qpid.protocol.AMQConstant; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.Connection; import javax.jms.ExceptionListener; import javax.jms.JMSException; @@ -54,7 +55,7 @@ import javax.jms.TextMessage; public class ChannelCloseTest extends TestCase implements ExceptionListener, ConnectionListener { - private static final Logger _logger = Logger.getLogger(ChannelCloseTest.class); + private static final Logger _logger = LoggerFactory.getLogger(ChannelCloseTest.class); Connection _connection; private String _brokerlist = "vm://:1"; diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/Client.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/Client.java index e077bddd8d..19ef612bcc 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/Client.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/Client.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,14 +20,16 @@ */ package org.apache.qpid.test.unit.client.forwardall; -import javax.jms.Message; -import javax.jms.MessageListener; - import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.framing.AMQShortString; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.Message; +import javax.jms.MessageListener; /** * Declare a private temporary response queue, @@ -37,8 +39,7 @@ import org.apache.log4j.Logger; */ public class Client implements MessageListener { - - private static final Logger _logger = Logger.getLogger(Client.class); + private static final Logger _logger = LoggerFactory.getLogger(Client.class); private final AMQConnection _connection; private final AMQSession _session; @@ -55,10 +56,11 @@ public class Client implements MessageListener _connection = connection; _expected = expected; _session = (AMQSession) _connection.createSession(false, AMQSession.NO_ACKNOWLEDGE); - AMQQueue response = new AMQQueue(_connection.getDefaultQueueExchangeName(), new AMQShortString("ResponseQueue"), true); + AMQQueue response = + new AMQQueue(_connection.getDefaultQueueExchangeName(), new AMQShortString("ResponseQueue"), true); _session.createConsumer(response).setMessageListener(this); _connection.start(); - AMQQueue service = new SpecialQueue(_connection,"ServiceQueue"); + AMQQueue service = new SpecialQueue(_connection, "ServiceQueue"); Message request = _session.createTextMessage("Request!"); request.setJMSReplyTo(response); _session.createProducer(service).send(request); @@ -72,27 +74,27 @@ public class Client implements MessageListener public synchronized void onMessage(Message response) { - - _logger.info("Received " + (++_count) + " of " + _expected + " responses."); - if(_count == _expected) + + _logger.info("Received " + (++_count) + " of " + _expected + " responses."); + if (_count == _expected) { notifyAll(); } - } synchronized void waitUntilComplete() throws Exception { - if(_count < _expected) + if (_count < _expected) { wait(10000L); } - if(_count < _expected) + + if (_count < _expected) { - throw new Exception("Didn't receive all messages... got " + _count + " expected " + _expected); + throw new Exception("Didn't receive all messages... got " + _count + " expected " + _expected); } } @@ -105,7 +107,8 @@ public class Client implements MessageListener { final String connectionString; final int expected; - if (argv.length == 0) { + if (argv.length == 0) + { connectionString = "localhost:5672"; expected = 100; } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/CombinedTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/CombinedTest.java index 69c5fc3aa9..9c354ee260 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/CombinedTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/CombinedTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -23,7 +23,9 @@ package org.apache.qpid.test.unit.client.forwardall; import junit.framework.TestCase; import org.apache.qpid.testutil.VMBrokerSetup; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Runs the Service's and Client parts of the test in the same process @@ -31,7 +33,7 @@ import org.apache.log4j.Logger; */ public class CombinedTest extends TestCase { - private static final Logger _logger = Logger.getLogger(CombinedTest.class); + private static final Logger _logger = LoggerFactory.getLogger(CombinedTest.class); protected void setUp() throws Exception { diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/ServiceCreator.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/ServiceCreator.java index 8482227961..be16f6b7ae 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/ServiceCreator.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/forwardall/ServiceCreator.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,14 +20,14 @@ */ package org.apache.qpid.test.unit.client.forwardall; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.jms.JMSException; public class ServiceCreator implements Runnable { - private static final Logger _logger = Logger.getLogger(ServiceCreator.class); - + private static final Logger _logger = LoggerFactory.getLogger(ServiceCreator.class); private static Thread[] threads; private static ServiceCreator[] _services; @@ -67,7 +67,7 @@ public class ServiceCreator implements Runnable } catch (JMSException e) { - //ignore + // ignore } } } @@ -77,7 +77,7 @@ public class ServiceCreator implements Runnable threads = new Thread[services]; _services = new ServiceCreator[services]; ServiceCreator runner = new ServiceCreator(broker); - //start services + // start services _logger.info("Starting " + services + " services..."); for (int i = 0; i < services; i++) { @@ -106,6 +106,7 @@ public class ServiceCreator implements Runnable connectionString = argv[0]; services = Integer.parseInt(argv[1]); } + start(connectionString, services); } } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java index 11a6b4b5c5..cd03b523d1 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,17 +20,6 @@ */ package org.apache.qpid.test.unit.client.message; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; - -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.ObjectMessage; - import junit.framework.TestCase; import org.apache.qpid.client.AMQConnection; @@ -38,11 +27,24 @@ import org.apache.qpid.client.AMQDestination; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.testutil.VMBrokerSetup; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.ObjectMessage; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; public class ObjectMessageTest extends TestCase implements MessageListener { - private static final Logger _logger = Logger.getLogger(ObjectMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(ObjectMessageTest.class); private AMQConnection connection; private AMQDestination destination; @@ -59,15 +61,15 @@ public class ObjectMessageTest extends TestCase implements MessageListener { super.setUp(); connection = new AMQConnection(_broker, "guest", "guest", randomize("Client"), "test"); - destination = new AMQQueue(connection,randomize("LatencyTest"), true); + destination = new AMQQueue(connection, randomize("LatencyTest"), true); session = (AMQSession) connection.createSession(false, AMQSession.NO_ACKNOWLEDGE); - //set up a consumer + // set up a consumer session.createConsumer(destination).setMessageListener(this); connection.start(); - //create a publisher - producer = session.createProducer(destination, false, false, true); + // create a publisher + producer = session.createProducer(destination, false, false, true); A a1 = new A(1, "A"); A a2 = new A(2, "a"); B b = new B(1, "B"); @@ -77,7 +79,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener c.put("B", b); c.put("String", "String"); - data = new Serializable[]{a1, a2, b, c, "Hello World!", new Integer(1001)}; + data = new Serializable[] { a1, a2, b, c, "Hello World!", new Integer(1001) }; } protected void tearDown() throws Exception @@ -86,8 +88,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener } public ObjectMessageTest() - { - } + { } ObjectMessageTest(String broker) throws Exception { @@ -118,60 +119,60 @@ public class ObjectMessageTest extends TestCase implements MessageListener { String testStringProperty = "TestStringProperty"; ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestStringProperty",testStringProperty); + msg.setObjectProperty("TestStringProperty", testStringProperty); assertEquals(testStringProperty, msg.getObjectProperty("TestStringProperty")); } public void testSetObjectPropertyForBoolean() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestBooleanProperty",Boolean.TRUE); + msg.setObjectProperty("TestBooleanProperty", Boolean.TRUE); assertEquals(Boolean.TRUE, msg.getObjectProperty("TestBooleanProperty")); } public void testSetObjectPropertyForByte() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestByteProperty",Byte.MAX_VALUE); + msg.setObjectProperty("TestByteProperty", Byte.MAX_VALUE); assertEquals(Byte.MAX_VALUE, msg.getObjectProperty("TestByteProperty")); } public void testSetObjectPropertyForShort() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestShortProperty",Short.MAX_VALUE); + msg.setObjectProperty("TestShortProperty", Short.MAX_VALUE); assertEquals(Short.MAX_VALUE, msg.getObjectProperty("TestShortProperty")); } + public void testSetObjectPropertyForInteger() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestIntegerProperty",Integer.MAX_VALUE); + msg.setObjectProperty("TestIntegerProperty", Integer.MAX_VALUE); assertEquals(Integer.MAX_VALUE, msg.getObjectProperty("TestIntegerProperty")); } public void testSetObjectPropertyForDouble() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestDoubleProperty",Double.MAX_VALUE); + msg.setObjectProperty("TestDoubleProperty", Double.MAX_VALUE); assertEquals(Double.MAX_VALUE, msg.getObjectProperty("TestDoubleProperty")); } public void testSetObjectPropertyForFloat() throws Exception { ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestFloatProperty",Float.MAX_VALUE); + msg.setObjectProperty("TestFloatProperty", Float.MAX_VALUE); assertEquals(Float.MAX_VALUE, msg.getObjectProperty("TestFloatProperty")); } public void testSetObjectPropertyForByteArray() throws Exception { - byte[] array = {1,2,3,4,5}; + byte[] array = { 1, 2, 3, 4, 5 }; ObjectMessage msg = session.createObjectMessage(data[0]); - msg.setObjectProperty("TestByteArrayProperty",array); - assertTrue(Arrays.equals(array,(byte[])msg.getObjectProperty("TestByteArrayProperty"))); + msg.setObjectProperty("TestByteArrayProperty", array); + assertTrue(Arrays.equals(array, (byte[]) msg.getObjectProperty("TestByteArrayProperty"))); } - public void testSetObjectForNull() throws Exception { ObjectMessage msg = session.createObjectMessage(); @@ -179,13 +180,12 @@ public class ObjectMessageTest extends TestCase implements MessageListener assertNull(msg.getObject()); } - private void send() throws Exception { for (int i = 0; i < data.length; i++) { ObjectMessage msg; - if (i % 2 == 0) + if ((i % 2) == 0) { msg = session.createObjectMessage(data[i]); } @@ -194,6 +194,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener msg = session.createObjectMessage(); msg.setObject(data[i]); } + producer.send(msg); } } @@ -205,16 +206,19 @@ public class ObjectMessageTest extends TestCase implements MessageListener { throw new Exception("Expected " + data.length + " objects, got " + actual.length); } + for (int i = 0; i < data.length; i++) { if (actual[i] instanceof Exception) { throw new Exception("Error on receive of " + data[i], ((Exception) actual[i])); } + if (actual[i] == null) { throw new Exception("Expected " + data[i] + " got null"); } + if (!data[i].equals(actual[i])) { throw new Exception("Expected " + data[i] + " got " + actual[i]); @@ -222,7 +226,6 @@ public class ObjectMessageTest extends TestCase implements MessageListener } } - private void close() throws Exception { session.close(); @@ -236,6 +239,7 @@ public class ObjectMessageTest extends TestCase implements MessageListener { wait(); } + waiting = false; } @@ -260,21 +264,21 @@ public class ObjectMessageTest extends TestCase implements MessageListener items.add(e); } - synchronized(this) - { - received++; - notify(); - } + synchronized (this) + { + received++; + notify(); + } } - public static void main(String[] argv) throws Exception { - String broker = argv.length > 0 ? argv[0] : "vm://:1"; + String broker = (argv.length > 0) ? argv[0] : "vm://:1"; if ("-help".equals(broker)) { System.out.println("Usage: <broker>"); } + new ObjectMessageTest(broker).testSendAndReceive(); } @@ -296,12 +300,12 @@ public class ObjectMessageTest extends TestCase implements MessageListener public boolean equals(Object o) { - return o instanceof A && equals((A) o); + return (o instanceof A) && equals((A) o); } protected boolean equals(A a) { - return areEqual(a.sValue, sValue) && a.iValue == iValue; + return areEqual(a.sValue, sValue) && (a.iValue == iValue); } } @@ -317,17 +321,16 @@ public class ObjectMessageTest extends TestCase implements MessageListener protected boolean equals(A a) { - return super.equals(a) && a instanceof B && time == ((B) a).time; + return super.equals(a) && (a instanceof B) && (time == ((B) a).time); } } private static class C extends HashMap implements Serializable - { - } + { } private static boolean areEqual(Object a, Object b) { - return a == null ? b == null : a.equals(b); + return (a == null) ? (b == null) : a.equals(b); } private static String randomize(String in) diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/close/CloseBeforeAckTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/close/CloseBeforeAckTest.java index 117696196e..5a61480f6a 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/close/CloseBeforeAckTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/close/CloseBeforeAckTest.java @@ -20,22 +20,23 @@ */
package org.apache.qpid.test.unit.close;
-import javax.jms.Connection;
-import javax.jms.Message;
-import javax.jms.MessageListener;
-import javax.jms.Session;
-
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.apache.log4j.Logger;
-
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.transport.TransportConnection;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import uk.co.thebadgerset.junit.concurrency.TestRunnable;
import uk.co.thebadgerset.junit.concurrency.ThreadTestCoordinator;
+import javax.jms.Connection;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.Session;
+
/**
* This test forces the situation where a session is closed whilst a message consumer is still in its onMessage method.
* Running in AUTO_ACK mode, the close call ought to wait until the onMessage method completes, and the ack is sent
@@ -46,7 +47,7 @@ import uk.co.thebadgerset.junit.concurrency.ThreadTestCoordinator; */
public class CloseBeforeAckTest extends TestCase
{
- private static final Logger log = Logger.getLogger(CloseBeforeAckTest.class);
+ private static final Logger log = LoggerFactory.getLogger(CloseBeforeAckTest.class);
Connection connection;
Session session;
@@ -64,34 +65,34 @@ public class CloseBeforeAckTest extends TestCase public void onMessage(Message message)
{
// Give thread 2 permission to close the session.
- allow(new int[]{1});
+ allow(new int[] { 1 });
// Wait until thread 2 has closed the connection, or is blocked waiting for this to complete.
- waitFor(new int[]{1}, true);
+ waitFor(new int[] { 1 }, true);
}
}
TestThread1 testThread1 = new TestThread1();
TestRunnable testThread2 =
- new TestRunnable()
+ new TestRunnable()
+ {
+ public void runWithExceptions() throws Exception
{
- public void runWithExceptions() throws Exception
- {
- // Send a message to be picked up by thread 1.
- session.createProducer(null).send(session.createQueue(TEST_QUEUE_NAME),
- session.createTextMessage("Hi there thread 1!"));
-
- // Wait for thread 1 to pick up the message and give permission to continue.
- waitFor(new int[]{0}, false);
-
- // Close the connection.
- session.close();
-
- // Allow thread 1 to continue to completion, if it is erronously still waiting.
- allow(new int[]{1});
- }
- };
+ // Send a message to be picked up by thread 1.
+ session.createProducer(null).send(session.createQueue(TEST_QUEUE_NAME),
+ session.createTextMessage("Hi there thread 1!"));
+
+ // Wait for thread 1 to pick up the message and give permission to continue.
+ waitFor(new int[] { 0 }, false);
+
+ // Close the connection.
+ session.close();
+
+ // Allow thread 1 to continue to completion, if it is erronously still waiting.
+ allow(new int[] { 1 });
+ }
+ };
public void testCloseBeforeAutoAck_QPID_397() throws Exception
{
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java index 58ac8294f2..a297011acd 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/close/MessageRequeueTest.java @@ -22,34 +22,28 @@ package org.apache.qpid.test.unit.close; import junit.framework.TestCase; -import org.apache.log4j.Level; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQConnection; -import org.apache.qpid.client.AMQConnectionFactory; -import org.apache.qpid.client.AMQConnectionURL; import org.apache.qpid.client.message.AbstractJMSMessage; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.testutil.QpidClientConnection; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.Connection; -import javax.jms.ExceptionListener; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; import javax.jms.Queue; import javax.jms.Session; -import javax.jms.TextMessage; import java.util.concurrent.atomic.AtomicInteger; public class MessageRequeueTest extends TestCase { - - private static final Logger _logger = Logger.getLogger(MessageRequeueTest.class); + private static final Logger _logger = LoggerFactory.getLogger(MessageRequeueTest.class); protected static AtomicInteger consumerIds = new AtomicInteger(0); protected final Integer numTestMessages = 150; diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSDestinationTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSDestinationTest.java index a2cd2e4da3..66e0cad1a9 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSDestinationTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSDestinationTest.java @@ -1,28 +1,29 @@ package org.apache.qpid.test.unit.message;
-import javax.jms.Connection;
-import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Queue;
-import javax.jms.Session;
-import javax.jms.TextMessage;
-
import junit.framework.TestCase;
-import org.apache.log4j.Logger;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQQueue;
import org.apache.qpid.client.AMQSession;
import org.apache.qpid.client.transport.TransportConnection;
import org.apache.qpid.framing.AMQShortString;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.jms.Connection;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+
/**
* @author Apache Software Foundation
*/
public class JMSDestinationTest extends TestCase
{
-
- private static final Logger _logger = Logger.getLogger(JMSDestinationTest.class);
+ private static final Logger _logger = LoggerFactory.getLogger(JMSDestinationTest.class);
public String _connectionString = "vm://:1";
@@ -32,7 +33,6 @@ public class JMSDestinationTest extends TestCase TransportConnection.createVMBroker(1);
}
-
protected void tearDown() throws Exception
{
super.tearDown();
@@ -43,7 +43,9 @@ public class JMSDestinationTest extends TestCase {
AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test");
AMQSession consumerSession = (AMQSession) con.createSession(false, Session.CLIENT_ACKNOWLEDGE);
- Queue queue = new AMQQueue(con.getDefaultQueueExchangeName(), new AMQShortString("someQ"), new AMQShortString("someQ"), false, true);
+ Queue queue =
+ new AMQQueue(con.getDefaultQueueExchangeName(), new AMQShortString("someQ"), new AMQShortString("someQ"), false,
+ true);
MessageConsumer consumer = consumerSession.createConsumer(queue);
Connection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test");
@@ -64,7 +66,7 @@ public class JMSDestinationTest extends TestCase TextMessage rm = (TextMessage) consumer.receive();
assertNotNull(rm);
- assertEquals(rm.getJMSDestination(),queue);
+ assertEquals(rm.getJMSDestination(), queue);
con.close();
}
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java index dad1666299..3012909daa 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,17 +20,8 @@ */ package org.apache.qpid.test.unit.message; -import javax.jms.Connection; -import javax.jms.Destination; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.ObjectMessage; -import javax.jms.Queue; -import javax.jms.Session; - import junit.framework.TestCase; -import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; @@ -38,13 +29,23 @@ import org.apache.qpid.client.message.NonQpidObjectMessage; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.framing.AMQShortString; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.Destination; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.ObjectMessage; +import javax.jms.Queue; +import javax.jms.Session; + /** * @author Apache Software Foundation */ public class JMSPropertiesTest extends TestCase { - private static final Logger _logger = Logger.getLogger(JMSPropertiesTest.class); + private static final Logger _logger = LoggerFactory.getLogger(JMSPropertiesTest.class); public String _connectionString = "vm://:1"; @@ -52,14 +53,12 @@ public class JMSPropertiesTest extends TestCase public static final int JMS_DELIV_MODE = 1; public static final String JMS_TYPE = "test.jms.type"; - protected void setUp() throws Exception { super.setUp(); TransportConnection.createVMBroker(1); } - protected void tearDown() throws Exception { super.tearDown(); @@ -70,36 +69,38 @@ public class JMSPropertiesTest extends TestCase { AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); AMQSession consumerSession = (AMQSession) con.createSession(false, Session.CLIENT_ACKNOWLEDGE); - Queue queue = new AMQQueue(con.getDefaultQueueExchangeName(),new AMQShortString("someQ"), new AMQShortString("someQ"), false, true); + Queue queue = + new AMQQueue(con.getDefaultQueueExchangeName(), new AMQShortString("someQ"), new AMQShortString("someQ"), false, + true); MessageConsumer consumer = consumerSession.createConsumer(queue); AMQConnection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test"); Session producerSession = con2.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageProducer producer = producerSession.createProducer(queue); - Destination JMS_REPLY_TO = new AMQQueue(con2,"my.replyto"); - //create a test message to send + Destination JMS_REPLY_TO = new AMQQueue(con2, "my.replyto"); + // create a test message to send ObjectMessage sentMsg = new NonQpidObjectMessage(); sentMsg.setJMSCorrelationID(JMS_CORR_ID); sentMsg.setJMSDeliveryMode(JMS_DELIV_MODE); sentMsg.setJMSType(JMS_TYPE); sentMsg.setJMSReplyTo(JMS_REPLY_TO); - //send it + // send it producer.send(sentMsg); con2.close(); con.start(); - //get message and check JMS properties + // get message and check JMS properties ObjectMessage rm = (ObjectMessage) consumer.receive(); assertNotNull(rm); - assertEquals("JMS Correlation ID mismatch",sentMsg.getJMSCorrelationID(),rm.getJMSCorrelationID()); - //TODO: Commented out as always overwritten by send delivery mode value - prob should not set in conversion - //assertEquals("JMS Delivery Mode mismatch",sentMsg.getJMSDeliveryMode(),rm.getJMSDeliveryMode()); - assertEquals("JMS Type mismatch",sentMsg.getJMSType(),rm.getJMSType()); - assertEquals("JMS Reply To mismatch",sentMsg.getJMSReplyTo(),rm.getJMSReplyTo()); + assertEquals("JMS Correlation ID mismatch", sentMsg.getJMSCorrelationID(), rm.getJMSCorrelationID()); + // TODO: Commented out as always overwritten by send delivery mode value - prob should not set in conversion + // assertEquals("JMS Delivery Mode mismatch",sentMsg.getJMSDeliveryMode(),rm.getJMSDeliveryMode()); + assertEquals("JMS Type mismatch", sentMsg.getJMSType(), rm.getJMSType()); + assertEquals("JMS Reply To mismatch", sentMsg.getJMSReplyTo(), rm.getJMSReplyTo()); con.close(); } diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/message/StreamMessageTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/message/StreamMessageTest.java index fb5ea58174..9c4f2af107 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/message/StreamMessageTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/message/StreamMessageTest.java @@ -20,37 +20,39 @@ */ package org.apache.qpid.test.unit.message; -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageEOFException; -import javax.jms.MessageListener; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.StreamMessage; - import junit.framework.TestCase; -import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQHeadersExchange; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.framing.FieldTable; import org.apache.qpid.framing.AMQShortString; +import org.apache.qpid.framing.FieldTable; import org.apache.qpid.url.AMQBindingURL; import org.apache.qpid.url.BindingURL; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.Connection; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageEOFException; +import javax.jms.MessageListener; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.StreamMessage; + /** * @author Apache Software Foundation */ public class StreamMessageTest extends TestCase { - private static final Logger _logger = Logger.getLogger(StreamMessageTest.class); + private static final Logger _logger = LoggerFactory.getLogger(StreamMessageTest.class); public String _connectionString = "vm://:1"; @@ -60,7 +62,6 @@ public class StreamMessageTest extends TestCase TransportConnection.createVMBroker(1); } - protected void tearDown() throws Exception { super.tearDown(); @@ -72,15 +73,18 @@ public class StreamMessageTest extends TestCase Connection con = new AMQConnection("vm://:1", "guest", "guest", "consumer1", "test"); AMQSession consumerSession = (AMQSession) con.createSession(false, Session.CLIENT_ACKNOWLEDGE); - - AMQHeadersExchange queue = new AMQHeadersExchange(new AMQBindingURL(ExchangeDefaults.HEADERS_EXCHANGE_CLASS+"://"+ExchangeDefaults.HEADERS_EXCHANGE_NAME+"/test/queue1?"+ BindingURL.OPTION_ROUTING_KEY+"='F0000=1'")); + AMQHeadersExchange queue = + new AMQHeadersExchange(new AMQBindingURL( + ExchangeDefaults.HEADERS_EXCHANGE_CLASS + "://" + ExchangeDefaults.HEADERS_EXCHANGE_NAME + + "/test/queue1?" + BindingURL.OPTION_ROUTING_KEY + "='F0000=1'")); FieldTable ft = new FieldTable(); - ft.setString("F1000","1"); - MessageConsumer consumer = consumerSession.createConsumer(queue, AMQSession.DEFAULT_PREFETCH_LOW_MARK, AMQSession.DEFAULT_PREFETCH_HIGH_MARK, false, false, (String)null, ft); + ft.setString("F1000", "1"); + MessageConsumer consumer = + consumerSession.createConsumer(queue, AMQSession.DEFAULT_PREFETCH_LOW_MARK, + AMQSession.DEFAULT_PREFETCH_HIGH_MARK, false, false, (String) null, ft); - - //force synch to ensure the consumer has resulted in a bound queue - //((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.HEADERS_EXCHANGE_NAME, ExchangeDefaults.HEADERS_EXCHANGE_CLASS); + // force synch to ensure the consumer has resulted in a bound queue + // ((AMQSession) consumerSession).declareExchangeSynch(ExchangeDefaults.HEADERS_EXCHANGE_NAME, ExchangeDefaults.HEADERS_EXCHANGE_CLASS); // This is the default now Connection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test"); @@ -91,21 +95,18 @@ public class StreamMessageTest extends TestCase _logger.info("Starting producer connection"); con2.start(); - MessageProducer mandatoryProducer = producerSession.createProducer(queue); // Third test - should be routed _logger.info("Sending isBound message"); - StreamMessage msg = producerSession.createStreamMessage(); + StreamMessage msg = producerSession.createStreamMessage(); - msg.setStringProperty("F1000","1"); + msg.setStringProperty("F1000", "1"); - msg.writeByte((byte)42); + msg.writeByte((byte) 42); mandatoryProducer.send(msg); - - _logger.info("Starting consumer connection"); con.start(); @@ -129,23 +130,24 @@ public class StreamMessageTest extends TestCase AMQQueue queue = new AMQQueue(con.getDefaultQueueExchangeName(), new AMQShortString("testQ")); MessageConsumer consumer = consumerSession.createConsumer(queue); consumer.setMessageListener(new MessageListener() - { - - public void onMessage(Message message) { - StreamMessage sm = (StreamMessage) message; - try - { - sm.clearBody(); - sm.writeString("dfgjshfslfjshflsjfdlsjfhdsljkfhdsljkfhsd"); - } - catch (JMSException e) + + public void onMessage(Message message) { - _logger.error("Error when writing large string to received msg: " + e, e); - fail("Error when writing large string to received msg" + e); + StreamMessage sm = (StreamMessage) message; + try + { + sm.clearBody(); + sm.writeString("dfgjshfslfjshflsjfdlsjfhdsljkfhdsljkfhsd"); + } + catch (JMSException e) + { + _logger.error("Error when writing large string to received msg: " + e, e); + fail("Error when writing large string to received msg" + e); + } } - } - }); + }); + Connection con2 = new AMQConnection("vm://:1", "guest", "guest", "producer1", "test"); AMQSession producerSession = (AMQSession) con2.createSession(false, Session.CLIENT_ACKNOWLEDGE); MessageProducer mandatoryProducer = producerSession.createProducer(queue); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java index 15cb9678e4..c8d43a47a5 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/topic/DurableSubscriptionTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,14 +20,6 @@ */ package org.apache.qpid.test.unit.topic; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.Session; -import javax.jms.TextMessage; -import javax.jms.TopicSubscriber; - import junit.framework.TestCase; import org.apache.qpid.AMQException; @@ -36,11 +28,21 @@ import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.AMQTopic; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.url.URLSyntaxException; -import org.apache.log4j.Logger; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.Session; +import javax.jms.TextMessage; +import javax.jms.TopicSubscriber; public class DurableSubscriptionTest extends TestCase { - private static final Logger _logger = Logger.getLogger(DurableSubscriptionTest.class); + private static final Logger _logger = LoggerFactory.getLogger(DurableSubscriptionTest.class); protected void setUp() throws Exception { @@ -84,7 +86,6 @@ public class DurableSubscriptionTest extends TestCase msg = consumer1.receive(1000); assertEquals(null, msg); - _logger.info("Receive message on consumer 1:expecting A"); msg = consumer2.receive(); assertEquals("A", ((TextMessage) msg).getText()); diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java index 8d96977df2..df2a38d0fc 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/transacted/CommitRollbackTest.java @@ -22,13 +22,14 @@ package org.apache.qpid.test.unit.transacted; import junit.framework.TestCase; -import org.apache.log4j.Logger; - import org.apache.qpid.AMQException; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.transport.TransportConnection; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; @@ -54,7 +55,7 @@ public class CommitRollbackTest extends TestCase private MessageConsumer _consumer; Queue _jmsQueue; - private static final Logger _logger = Logger.getLogger(CommitRollbackTest.class); + private static final Logger _logger = LoggerFactory.getLogger(CommitRollbackTest.class); private static final String BROKER = "vm://:1"; protected void setUp() throws Exception diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java index d994d4c141..929621c496 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,24 +20,24 @@ */ package org.apache.qpid.test.unit.transacted; -import javax.jms.Connection; -import javax.jms.JMSException; -import javax.jms.Message; -import javax.jms.MessageConsumer; -import javax.jms.MessageProducer; -import javax.jms.TextMessage; - import junit.framework.TestCase; -import org.apache.log4j.Logger; import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQQueue; import org.apache.qpid.client.AMQSession; import org.apache.qpid.client.transport.TransportConnection; -import org.apache.qpid.exchange.ExchangeDefaults; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.jms.Session; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageProducer; +import javax.jms.TextMessage; + public class TransactedTest extends TestCase { private AMQQueue queue1; @@ -56,7 +56,7 @@ public class TransactedTest extends TestCase private Session testSession; private MessageConsumer testConsumer1; private MessageConsumer testConsumer2; - private static final Logger _logger = Logger.getLogger(TransactedTest.class); + private static final Logger _logger = LoggerFactory.getLogger(TransactedTest.class); protected void setUp() throws Exception { @@ -68,13 +68,15 @@ public class TransactedTest extends TestCase _logger.info("Create Session"); session = con.createSession(true, Session.SESSION_TRANSACTED); _logger.info("Create Q1"); - queue1 = new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q1"), new AMQShortString("Q1"), false, true); + queue1 = + new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q1"), new AMQShortString("Q1"), false, + true); _logger.info("Create Q2"); queue2 = new AMQQueue(session.getDefaultQueueExchangeName(), new AMQShortString("Q2"), false); _logger.info("Create Consumer of Q1"); consumer1 = session.createConsumer(queue1); - //Dummy just to create the queue. + // Dummy just to create the queue. _logger.info("Create Consumer of Q2"); MessageConsumer consumer2 = session.createConsumer(queue2); _logger.info("Close Consumer of Q2"); @@ -98,7 +100,6 @@ public class TransactedTest extends TestCase _logger.info("Create prep connection start"); prepCon.start(); - _logger.info("Create test connection"); testCon = new AMQConnection("vm://:1", "guest", "guest", "TestConnection", "test"); _logger.info("Create test session"); @@ -122,7 +123,7 @@ public class TransactedTest extends TestCase public void testCommit() throws Exception { - //add some messages + // add some messages _logger.info("Send prep A"); prepProducer1.send(prepSession.createTextMessage("A")); _logger.info("Send prep B"); @@ -130,7 +131,7 @@ public class TransactedTest extends TestCase _logger.info("Send prep C"); prepProducer1.send(prepSession.createTextMessage("C")); - //send and receive some messages + // send and receive some messages _logger.info("Send X to Q2"); producer2.send(session.createTextMessage("X")); _logger.info("Send Y to Q2"); @@ -138,7 +139,6 @@ public class TransactedTest extends TestCase _logger.info("Send Z to Q2"); producer2.send(session.createTextMessage("Z")); - _logger.info("Read A from Q1"); expect("A", consumer1.receive(1000)); _logger.info("Read B from Q1"); @@ -146,13 +146,13 @@ public class TransactedTest extends TestCase _logger.info("Read C from Q1"); expect("C", consumer1.receive(1000)); - //commit + // commit _logger.info("session commit"); session.commit(); _logger.info("Start test Connection"); testCon.start(); - //ensure sent messages can be received and received messages are gone + // ensure sent messages can be received and received messages are gone _logger.info("Read X from Q2"); expect("X", testConsumer2.receive(1000)); _logger.info("Read Y from Q2"); @@ -170,7 +170,7 @@ public class TransactedTest extends TestCase public void testRollback() throws Exception { - //add some messages + // add some messages _logger.info("Send prep A"); prepProducer1.send(prepSession.createTextMessage("A")); _logger.info("Send prep B"); @@ -178,7 +178,7 @@ public class TransactedTest extends TestCase _logger.info("Send prep C"); prepProducer1.send(prepSession.createTextMessage("C")); - //Quick sleep to ensure all three get pre-fetched + // Quick sleep to ensure all three get pre-fetched Thread.sleep(500); _logger.info("Sending X Y Z"); @@ -188,14 +188,14 @@ public class TransactedTest extends TestCase _logger.info("Receiving A B"); expect("A", consumer1.receive(1000)); expect("B", consumer1.receive(1000)); - //Don't consume 'C' leave it in the prefetch cache to ensure rollback removes it. + // Don't consume 'C' leave it in the prefetch cache to ensure rollback removes it. - //rollback + // rollback _logger.info("rollback"); session.rollback(); _logger.info("Receiving A B C"); - //ensure sent messages are not visible and received messages are requeued + // ensure sent messages are not visible and received messages are requeued expect("A", consumer1.receive(1000), true); expect("B", consumer1.receive(1000), true); expect("C", consumer1.receive(1000), true); @@ -211,7 +211,7 @@ public class TransactedTest extends TestCase _logger.info("Testing we have no messages left after commit"); assertTrue(null == testConsumer1.receive(1000)); - assertTrue(null == testConsumer2.receive(1000)); + assertTrue(null == testConsumer2.receive(1000)); } public void testResendsMsgsAfterSessionClose() throws Exception diff --git a/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java b/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java index d52da06f76..061c1ef7a4 100644 --- a/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java +++ b/java/client/src/test/java/org/apache/qpid/testutil/QpidClientConnection.java @@ -1,13 +1,14 @@ package org.apache.qpid.testutil; -import org.apache.log4j.Logger; - import org.apache.qpid.client.AMQConnection; import org.apache.qpid.client.AMQConnectionFactory; import org.apache.qpid.client.AMQConnectionURL; import org.apache.qpid.client.JMSAMQException; import org.apache.qpid.url.URLSyntaxException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import javax.jms.Connection; import javax.jms.ExceptionListener; import javax.jms.JMSException; @@ -20,7 +21,7 @@ import javax.jms.TextMessage; public class QpidClientConnection implements ExceptionListener { - private static final Logger _logger = Logger.getLogger(QpidClientConnection.class); + private static final Logger _logger = LoggerFactory.getLogger(QpidClientConnection.class); private boolean transacted = true; private int ackMode = Session.CLIENT_ACKNOWLEDGE; diff --git a/java/common/pom.xml b/java/common/pom.xml index 80e4229117..aaa9a556e8 100644 --- a/java/common/pom.xml +++ b/java/common/pom.xml @@ -98,15 +98,17 @@ <dependencies> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-api</artifactId> + <version>1.4.0</version> </dependency> - <!-- This is a mina dependency but it isn't being picked up--> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.0</version> + <scope>test</scope> </dependency> <dependency> diff --git a/java/common/src/main/java/org/apache/qpid/common/QpidProperties.java b/java/common/src/main/java/org/apache/qpid/common/QpidProperties.java index 5a357557ca..2c783aeaa4 100644 --- a/java/common/src/main/java/org/apache/qpid/common/QpidProperties.java +++ b/java/common/src/main/java/org/apache/qpid/common/QpidProperties.java @@ -20,13 +20,14 @@ */ package org.apache.qpid.common; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.IOException; import java.io.InputStream; import java.util.Map; import java.util.Properties; -import org.apache.log4j.Logger; - /** * QpidProperties captures the project name, version number, and source code repository revision number from a properties * file which is generated as part of the build process. Normally, the name and version number are pulled from the module @@ -50,7 +51,7 @@ import org.apache.log4j.Logger; public class QpidProperties { /** Used for debugging purposes. */ - private static final Logger _logger = Logger.getLogger(QpidProperties.class); + private static final Logger _logger = LoggerFactory.getLogger(QpidProperties.class); /** The name of the version properties file to load from the class path. */ public static final String VERSION_RESOURCE = "qpidversion.properties"; diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java index 9f36448986..82ffc60802 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockDecoder.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,12 +20,15 @@ */ package org.apache.qpid.framing; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; import org.apache.mina.common.IoSession; import org.apache.mina.filter.codec.ProtocolDecoderOutput; + import org.apache.qpid.protocol.AMQVersionAwareProtocolSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class AMQDataBlockDecoder { private static final String SESSION_METHOD_BODY_FACTORY = "QPID_SESSION_METHOD_BODY_FACTORY"; @@ -39,14 +42,10 @@ public class AMQDataBlockDecoder _bodiesSupported[HeartbeatBody.TYPE] = new HeartbeatBodyFactory(); } - - Logger _logger = Logger.getLogger(AMQDataBlockDecoder.class); - - + Logger _logger = LoggerFactory.getLogger(AMQDataBlockDecoder.class); public AMQDataBlockDecoder() - { - } + { } public boolean decodable(IoSession session, ByteBuffer in) throws AMQFrameDecodingException { @@ -56,26 +55,24 @@ public class AMQDataBlockDecoder { return false; } + in.skip(1 + 2); final long bodySize = in.getUnsignedInt(); - - return (remainingAfterAttributes >= bodySize); } - protected Object createAndPopulateFrame(IoSession session, ByteBuffer in) - throws AMQFrameDecodingException, AMQProtocolVersionException + throws AMQFrameDecodingException, AMQProtocolVersionException { final byte type = in.get(); BodyFactory bodyFactory; - if(type == AMQMethodBody.TYPE) + if (type == AMQMethodBody.TYPE) { bodyFactory = (BodyFactory) session.getAttribute(SESSION_METHOD_BODY_FACTORY); - if(bodyFactory == null) + if (bodyFactory == null) { AMQVersionAwareProtocolSession protocolSession = (AMQVersionAwareProtocolSession) session.getAttachment(); bodyFactory = new AMQMethodBodyFactory(protocolSession); @@ -89,10 +86,7 @@ public class AMQDataBlockDecoder bodyFactory = _bodiesSupported[type]; } - - - - if(bodyFactory == null) + if (bodyFactory == null) { throw new AMQFrameDecodingException(null, "Unsupported frame type: " + type, null); } @@ -101,25 +95,25 @@ public class AMQDataBlockDecoder final long bodySize = in.getUnsignedInt(); // bodySize can be zero - if (channel < 0 || bodySize < 0) + if ((channel < 0) || (bodySize < 0)) { - throw new AMQFrameDecodingException(null, "Undecodable frame: type = " + type + " channel = " + channel + - " bodySize = " + bodySize, null); + throw new AMQFrameDecodingException(null, "Undecodable frame: type = " + type + " channel = " + channel + + " bodySize = " + bodySize, null); } AMQFrame frame = new AMQFrame(in, channel, bodySize, bodyFactory); - byte marker = in.get(); if ((marker & 0xFF) != 0xCE) { - throw new AMQFrameDecodingException(null, "End of frame marker not found. Read " + marker + " length=" + bodySize + " type=" + type, null); + throw new AMQFrameDecodingException(null, "End of frame marker not found. Read " + marker + " length=" + bodySize + + " type=" + type, null); } + return frame; } - public void decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) - throws Exception + public void decode(IoSession session, ByteBuffer in, ProtocolDecoderOutput out) throws Exception { out.write(createAndPopulateFrame(session, in)); } diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java index 91814085fc..05fd2bb480 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,24 +20,25 @@ */ package org.apache.qpid.framing; -import java.util.Collections; -import java.util.Set; - -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; import org.apache.mina.common.IoSession; import org.apache.mina.filter.codec.ProtocolEncoderOutput; import org.apache.mina.filter.codec.demux.MessageEncoder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; +import java.util.Set; + public final class AMQDataBlockEncoder implements MessageEncoder { - private static final Logger _logger = Logger.getLogger(AMQDataBlockEncoder.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQDataBlockEncoder.class); private final Set _messageTypes = Collections.singleton(EncodableAMQDataBlock.class); public AMQDataBlockEncoder() - { - } + { } public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java b/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java index 5293c00379..cf85bdab31 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQMethodBodyFactory.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,16 +20,19 @@ */ package org.apache.qpid.framing; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; + import org.apache.qpid.protocol.AMQVersionAwareProtocolSession; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class AMQMethodBodyFactory implements BodyFactory { - private static final Logger _log = Logger.getLogger(AMQMethodBodyFactory.class); + private static final Logger _log = LoggerFactory.getLogger(AMQMethodBodyFactory.class); private final AMQVersionAwareProtocolSession _protocolSession; - + public AMQMethodBodyFactory(AMQVersionAwareProtocolSession protocolSession) { _protocolSession = protocolSession; @@ -37,6 +40,7 @@ public class AMQMethodBodyFactory implements BodyFactory public AMQBody createBody(ByteBuffer in, long bodySize) throws AMQFrameDecodingException { - return _protocolSession.getRegistry().get((short)in.getUnsignedShort(), (short)in.getUnsignedShort(), in, bodySize); + return _protocolSession.getRegistry().get((short) in.getUnsignedShort(), (short) in.getUnsignedShort(), in, + bodySize); } } diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java index e4e3222f01..ee7abd55c0 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java +++ b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java @@ -1,8 +1,10 @@ package org.apache.qpid.framing;
-import org.apache.log4j.Logger;
import org.apache.mina.common.ByteBuffer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* A short string is a representation of an AMQ Short String
* Short strings differ from the Java String class by being limited to on ASCII characters (0-127)
@@ -11,7 +13,7 @@ import org.apache.mina.common.ByteBuffer; */
public final class AMQShortString implements CharSequence, Comparable<AMQShortString>
{
- private static final Logger _logger = Logger.getLogger(AMQShortString.class);
+ private static final Logger _logger = LoggerFactory.getLogger(AMQShortString.class);
private final ByteBuffer _data;
private int _hashCode;
@@ -25,22 +27,25 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt _length = data.length;
}
-
public AMQShortString(String data)
{
- this(data == null ? EMPTY_CHAR_ARRAY : data.toCharArray());
- if(data != null) _hashCode = data.hashCode();
+ this((data == null) ? EMPTY_CHAR_ARRAY : data.toCharArray());
+ if (data != null)
+ {
+ _hashCode = data.hashCode();
+ }
}
public AMQShortString(char[] data)
{
- if(data == null)
+ if (data == null)
{
throw new NullPointerException("Cannot create AMQShortString with null char[]");
}
+
final int length = data.length;
final byte[] stringBytes = new byte[length];
- for(int i = 0; i < length; i++)
+ for (int i = 0; i < length; i++)
{
stringBytes[i] = (byte) (0xFF & data[i]);
}
@@ -56,12 +61,13 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt final int length = charSequence.length();
final byte[] stringBytes = new byte[length];
int hash = 0;
- for(int i = 0 ; i < length; i++)
+ for (int i = 0; i < length; i++)
{
stringBytes[i] = ((byte) (0xFF & charSequence.charAt(i)));
hash = (31 * hash) + stringBytes[i];
}
+
_data = ByteBuffer.wrap(stringBytes);
_data.rewind();
_hashCode = hash;
@@ -73,9 +79,8 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt {
_data = data;
_length = data.limit();
-
- }
+ }
/**
* Get the length of the short string
@@ -95,17 +100,18 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt public CharSequence subSequence(int start, int end)
{
- return new CharSubSequence(start,end);
+ return new CharSubSequence(start, end);
}
public int writeToByteArray(byte[] encoding, int pos)
{
final int size = length();
encoding[pos++] = (byte) length();
- for(int i = 0; i < size; i++)
+ for (int i = 0; i < size; i++)
{
encoding[pos++] = _data.get(i);
}
+
return pos;
}
@@ -113,12 +119,12 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt {
final byte len = byteEncodedDestination[pos];
- if(len == 0)
+ if (len == 0)
{
return null;
}
- ByteBuffer data = ByteBuffer.wrap(byteEncodedDestination,pos+1,len).slice();
-
+
+ ByteBuffer data = ByteBuffer.wrap(byteEncodedDestination, pos + 1, len).slice();
return new AMQShortString(data);
}
@@ -141,11 +147,10 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt }
}
-
public byte[] getBytes()
{
- if(_data.buf().hasArray() && _data.arrayOffset() == 0)
+ if (_data.buf().hasArray() && (_data.arrayOffset() == 0))
{
return _data.array();
}
@@ -157,30 +162,27 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt buf.rewind();
buf.get(b);
-
return b;
}
-
}
public void writeToBuffer(ByteBuffer buffer)
{
-
final int size = length();
if (size != 0)
{
- buffer.put((byte)size);
- if(_data.buf().hasArray())
+ buffer.put((byte) size);
+ if (_data.buf().hasArray())
{
- buffer.put(_data.array(),_data.arrayOffset(),length());
+ buffer.put(_data.array(), _data.arrayOffset(), length());
}
else
{
- for(int i = 0; i < size; i++)
+ for (int i = 0; i < size; i++)
{
buffer.put(_data.get(i));
@@ -200,14 +202,12 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt private final int _offset;
private final int _end;
-
public CharSubSequence(final int offset, final int end)
{
_offset = offset;
_end = end;
}
-
public int length()
{
return _end - _offset;
@@ -220,29 +220,23 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt public CharSequence subSequence(int start, int end)
{
- return new CharSubSequence(start+_offset,end+_offset);
+ return new CharSubSequence(start + _offset, end + _offset);
}
}
-
-
public char[] asChars()
{
final int size = length();
final char[] chars = new char[size];
-
-
-
- for(int i = 0 ; i < size; i++)
+ for (int i = 0; i < size; i++)
{
chars[i] = (char) _data.get(i);
}
+
return chars;
}
-
-
public String asString()
{
return new String(asChars());
@@ -250,66 +244,69 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt public boolean equals(Object o)
{
- if(o == null)
+ if (o == null)
{
return false;
}
- if(o == this)
+
+ if (o == this)
{
return true;
}
- if(o instanceof AMQShortString)
+
+ if (o instanceof AMQShortString)
{
final AMQShortString otherString = (AMQShortString) o;
- if((_hashCode != 0) && (otherString._hashCode != 0) && (_hashCode != otherString._hashCode))
+ if ((_hashCode != 0) && (otherString._hashCode != 0) && (_hashCode != otherString._hashCode))
{
return false;
}
return _data.equals(otherString._data);
-
-
-
}
- return (o instanceof CharSequence) && equals((CharSequence)o);
+
+ return (o instanceof CharSequence) && equals((CharSequence) o);
}
public boolean equals(CharSequence s)
{
- if(s == null)
+ if (s == null)
{
return false;
}
- if(s.length() != length())
+
+ if (s.length() != length())
{
return false;
}
- for(int i = 0; i < length(); i++)
+
+ for (int i = 0; i < length(); i++)
{
- if(charAt(i)!= s.charAt(i))
+ if (charAt(i) != s.charAt(i))
{
return false;
}
}
+
return true;
}
public int hashCode()
{
int hash = _hashCode;
- if(hash == 0)
+ if (hash == 0)
{
final int size = length();
-
- for(int i = 0; i < size; i++)
+ for (int i = 0; i < size; i++)
{
hash = (31 * hash) + _data.get(i);
}
+
_hashCode = hash;
}
@@ -320,38 +317,42 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt {
_hashCode = 0;
}
-
+
public String toString()
{
return asString();
}
-
public int compareTo(AMQShortString name)
{
- if(name == null)
+ if (name == null)
{
return 1;
}
else
{
- if(name.length() < length())
+ if (name.length() < length())
{
- return - name.compareTo(this);
+ return -name.compareTo(this);
}
-
-
- for(int i = 0; i < length() ; i++)
+ for (int i = 0; i < length(); i++)
{
final byte d = _data.get(i);
final byte n = name._data.get(i);
- if(d < n) return -1;
- if(d > n) return 1;
+ if (d < n)
+ {
+ return -1;
+ }
+
+ if (d > n)
+ {
+ return 1;
+ }
}
- return length() == name.length() ? 0 : -1;
+ return (length() == name.length()) ? 0 : -1;
}
}
}
diff --git a/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java b/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java index 4424fc1def..61f2f891e5 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java +++ b/java/common/src/main/java/org/apache/qpid/framing/BasicContentHeaderProperties.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,13 +20,14 @@ */ package org.apache.qpid.framing; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class BasicContentHeaderProperties implements CommonContentHeaderProperties { - private static final Logger _logger = Logger.getLogger(BasicContentHeaderProperties.class); + private static final Logger _logger = LoggerFactory.getLogger(BasicContentHeaderProperties.class); private static final AMQShortString ZERO_STRING = null; @@ -96,8 +97,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti private static final int CLUSTER_ID_MASK = 1 << 2; public BasicContentHeaderProperties() - { - } + { } public int getPropertyListSize() { @@ -113,30 +113,37 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { size += EncodingUtils.encodedShortStringLength(_contentType); } + if ((_propertyFlags & ENCONDING_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_encoding); } + if ((_propertyFlags & HEADERS_MASK) > 0) { size += EncodingUtils.encodedFieldTableLength(_headers); } + if ((_propertyFlags & DELIVERY_MODE_MASK) > 0) { size += 1; } + if ((_propertyFlags & PROPRITY_MASK) > 0) { size += 1; } + if ((_propertyFlags & CORRELATION_ID_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_correlationId); } + if ((_propertyFlags & REPLY_TO_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_replyTo); } + if ((_propertyFlags & EXPIRATION_MASK) > 0) { if (_expiration == 0L) @@ -148,40 +155,48 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti size += EncodingUtils.encodedShortStringLength(_expiration); } } + if ((_propertyFlags & MESSAGE_ID_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_messageId); } + if ((_propertyFlags & TIMESTAMP_MASK) > 0) { size += 8; } + if ((_propertyFlags & TYPE_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_type); } + if ((_propertyFlags & USER_ID_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_userId); } + if ((_propertyFlags & APPLICATION_ID_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_appId); } + if ((_propertyFlags & CLUSTER_ID_MASK) > 0) { size += EncodingUtils.encodedShortStringLength(_clusterId); } + return size; } } private void clearEncodedForm() { - if (!_decoded && _encodedForm != null) + if (!_decoded && (_encodedForm != null)) { - //decode(); + // decode(); } + _encodedForm = null; } @@ -208,30 +223,37 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { EncodingUtils.writeShortStringBytes(buffer, _contentType); } + if ((_propertyFlags & ENCONDING_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _encoding); } + if ((_propertyFlags & HEADERS_MASK) != 0) { EncodingUtils.writeFieldTableBytes(buffer, _headers); } + if ((_propertyFlags & DELIVERY_MODE_MASK) != 0) { buffer.put(_deliveryMode); } + if ((_propertyFlags & PROPRITY_MASK) != 0) { buffer.put(_priority); } + if ((_propertyFlags & CORRELATION_ID_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _correlationId); } + if ((_propertyFlags & REPLY_TO_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _replyTo); } + if ((_propertyFlags & EXPIRATION_MASK) != 0) { if (_expiration == 0L) @@ -243,26 +265,32 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti EncodingUtils.writeShortStringBytes(buffer, String.valueOf(_expiration)); } } + if ((_propertyFlags & MESSAGE_ID_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _messageId); } + if ((_propertyFlags & TIMESTAMP_MASK) != 0) { EncodingUtils.writeTimestamp(buffer, _timestamp); } + if ((_propertyFlags & TYPE_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _type); } + if ((_propertyFlags & USER_ID_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _userId); } + if ((_propertyFlags & APPLICATION_ID_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _appId); } + if ((_propertyFlags & CLUSTER_ID_MASK) != 0) { EncodingUtils.writeShortStringBytes(buffer, _clusterId); @@ -270,8 +298,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti } } - public void populatePropertiesFromBuffer(ByteBuffer buffer, int propertyFlags, int size) - throws AMQFrameDecodingException + public void populatePropertiesFromBuffer(ByteBuffer buffer, int propertyFlags, int size) throws AMQFrameDecodingException { _propertyFlags = propertyFlags; @@ -279,6 +306,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { _logger.debug("Property flags: " + _propertyFlags); } + decode(buffer); /*_encodedForm = new byte[size]; buffer.get(_encodedForm, 0, size); @@ -289,7 +317,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti private void decode(ByteBuffer buffer) { - //ByteBuffer buffer = ByteBuffer.wrap(_encodedForm); + // ByteBuffer buffer = ByteBuffer.wrap(_encodedForm); int pos = buffer.position(); try { @@ -297,54 +325,67 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { _contentType = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & ENCONDING_MASK) != 0) { _encoding = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & HEADERS_MASK) != 0) { _headers = EncodingUtils.readFieldTable(buffer); } + if ((_propertyFlags & DELIVERY_MODE_MASK) != 0) { _deliveryMode = buffer.get(); } + if ((_propertyFlags & PROPRITY_MASK) != 0) { _priority = buffer.get(); } + if ((_propertyFlags & CORRELATION_ID_MASK) != 0) { _correlationId = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & REPLY_TO_MASK) != 0) { _replyTo = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & EXPIRATION_MASK) != 0) { _expiration = EncodingUtils.readLongAsShortString(buffer); } + if ((_propertyFlags & MESSAGE_ID_MASK) != 0) { _messageId = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & TIMESTAMP_MASK) != 0) { _timestamp = EncodingUtils.readTimestamp(buffer); } + if ((_propertyFlags & TYPE_MASK) != 0) { _type = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & USER_ID_MASK) != 0) { _userId = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & APPLICATION_ID_MASK) != 0) { _appId = EncodingUtils.readAMQShortString(buffer); } + if ((_propertyFlags & CLUSTER_ID_MASK) != 0) { _clusterId = EncodingUtils.readAMQShortString(buffer); @@ -367,7 +408,6 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _decoded = true; } - private void decodeUpToHeaders() { ByteBuffer buffer = ByteBuffer.wrap(_encodedForm); @@ -378,16 +418,19 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti byte length = buffer.get(); buffer.skip(length); } + if ((_propertyFlags & ENCONDING_MASK) != 0) { byte length = buffer.get(); buffer.skip(length); } + if ((_propertyFlags & HEADERS_MASK) != 0) { _headers = EncodingUtils.readFieldTable(buffer); } + _decodedHeaders = true; } catch (AMQFrameDecodingException e) @@ -412,7 +455,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { if (!_decoded) { - //decode(); + // decode(); } } @@ -435,14 +478,15 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public AMQShortString getContentType() { decodeContentTypeIfNecessary(); + return _contentType; } - public String getContentTypeAsString() { decodeContentTypeIfNecessary(); - return _contentType == null ? null : _contentType.toString(); + + return (_contentType == null) ? null : _contentType.toString(); } public void setContentType(AMQShortString contentType) @@ -452,21 +496,21 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _contentType = contentType; } - public void setContentType(String contentType) { - setContentType(contentType == null ? null : new AMQShortString(contentType)); + setContentType((contentType == null) ? null : new AMQShortString(contentType)); } public String getEncodingAsString() { - return getEncoding() == null ? null : getEncoding().toString(); + return (getEncoding() == null) ? null : getEncoding().toString(); } public AMQShortString getEncoding() { decodeIfNecessary(); + return _encoding; } @@ -474,7 +518,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti { clearEncodedForm(); _propertyFlags |= ENCONDING_MASK; - _encoding = encoding == null ? null : new AMQShortString(encoding); + _encoding = (encoding == null) ? null : new AMQShortString(encoding); } public void setEncoding(AMQShortString encoding) @@ -484,7 +528,6 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _encoding = encoding; } - public FieldTable getHeaders() { decodeHeadersIfNecessary(); @@ -504,10 +547,10 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _headers = headers; } - public byte getDeliveryMode() { decodeIfNecessary(); + return _deliveryMode; } @@ -521,6 +564,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public byte getPriority() { decodeIfNecessary(); + return _priority; } @@ -534,18 +578,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public AMQShortString getCorrelationId() { decodeIfNecessary(); + return _correlationId; } public String getCorrelationIdAsString() { decodeIfNecessary(); - return _correlationId == null ? null : _correlationId.toString(); + + return (_correlationId == null) ? null : _correlationId.toString(); } public void setCorrelationId(String correlationId) { - setCorrelationId(correlationId == null ? null : new AMQShortString(correlationId)); + setCorrelationId((correlationId == null) ? null : new AMQShortString(correlationId)); } public void setCorrelationId(AMQShortString correlationId) @@ -558,19 +604,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String getReplyToAsString() { decodeIfNecessary(); - return _replyTo == null ? null : _replyTo.toString(); + + return (_replyTo == null) ? null : _replyTo.toString(); } public AMQShortString getReplyTo() { decodeIfNecessary(); + return _replyTo; } - public void setReplyTo(String replyTo) { - setReplyTo(replyTo == null ? null : new AMQShortString(replyTo)); + setReplyTo((replyTo == null) ? null : new AMQShortString(replyTo)); } public void setReplyTo(AMQShortString replyTo) @@ -584,6 +631,7 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public long getExpiration() { decodeIfNecessary(); + return _expiration; } @@ -594,24 +642,25 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _expiration = expiration; } - public AMQShortString getMessageId() { decodeIfNecessary(); + return _messageId; } public String getMessageIdAsString() { decodeIfNecessary(); - return _messageId == null ? null : _messageId.toString(); + + return (_messageId == null) ? null : _messageId.toString(); } public void setMessageId(String messageId) { clearEncodedForm(); _propertyFlags |= MESSAGE_ID_MASK; - _messageId = messageId == null ? null : new AMQShortString(messageId); + _messageId = (messageId == null) ? null : new AMQShortString(messageId); } public void setMessageId(AMQShortString messageId) @@ -621,10 +670,10 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti _messageId = messageId; } - public long getTimestamp() { decodeIfNecessary(); + return _timestamp; } @@ -638,20 +687,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String getTypeAsString() { decodeIfNecessary(); - return _type == null ? null : _type.toString(); - } + return (_type == null) ? null : _type.toString(); + } public AMQShortString getType() { decodeIfNecessary(); + return _type; } - public void setType(String type) { - setType(type == null ? null : new AMQShortString(type)); + setType((type == null) ? null : new AMQShortString(type)); } public void setType(AMQShortString type) @@ -664,18 +713,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String getUserIdAsString() { decodeIfNecessary(); - return _userId == null ? null : _userId.toString(); + + return (_userId == null) ? null : _userId.toString(); } public AMQShortString getUserId() { decodeIfNecessary(); + return _userId; } public void setUserId(String userId) { - setUserId(userId == null ? null : new AMQShortString(userId)); + setUserId((userId == null) ? null : new AMQShortString(userId)); } public void setUserId(AMQShortString userId) @@ -688,18 +739,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String getAppIdAsString() { decodeIfNecessary(); - return _appId == null ? null : _appId.toString(); + + return (_appId == null) ? null : _appId.toString(); } public AMQShortString getAppId() { decodeIfNecessary(); + return _appId; } public void setAppId(String appId) { - setAppId(appId == null ? null : new AMQShortString(appId)); + setAppId((appId == null) ? null : new AMQShortString(appId)); } public void setAppId(AMQShortString appId) @@ -712,18 +765,20 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String getClusterIdAsString() { decodeIfNecessary(); - return _clusterId == null ? null : _clusterId.toString(); + + return (_clusterId == null) ? null : _clusterId.toString(); } public AMQShortString getClusterId() { decodeIfNecessary(); + return _clusterId; } public void setClusterId(String clusterId) { - setClusterId(clusterId == null ? null : new AMQShortString(clusterId)); + setClusterId((clusterId == null) ? null : new AMQShortString(clusterId)); } public void setClusterId(AMQShortString clusterId) @@ -735,19 +790,10 @@ public class BasicContentHeaderProperties implements CommonContentHeaderProperti public String toString() { - return "reply-to = " + _replyTo + - ",propertyFlags = " + _propertyFlags + - ",ApplicationID = " + _appId + - ",ClusterID = " + _clusterId + - ",UserId = " + _userId + - ",JMSMessageID = " + _messageId + - ",JMSCorrelationID = " + _correlationId + - ",JMSDeliveryMode = " + _deliveryMode + - ",JMSExpiration = " + _expiration + - ",JMSPriority = " + _priority + - ",JMSTimestamp = " + _timestamp + - ",JMSType = " + _type; + return "reply-to = " + _replyTo + ",propertyFlags = " + _propertyFlags + ",ApplicationID = " + _appId + + ",ClusterID = " + _clusterId + ",UserId = " + _userId + ",JMSMessageID = " + _messageId + + ",JMSCorrelationID = " + _correlationId + ",JMSDeliveryMode = " + _deliveryMode + ",JMSExpiration = " + + _expiration + ",JMSPriority = " + _priority + ",JMSTimestamp = " + _timestamp + ",JMSType = " + _type; } - } diff --git a/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java b/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java index 1641cbf4e8..66c5e19633 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java +++ b/java/common/src/main/java/org/apache/qpid/framing/CommonContentHeaderProperties.java @@ -1,12 +1,7 @@ package org.apache.qpid.framing;
-import org.apache.mina.common.ByteBuffer;
-
-import org.apache.log4j.Logger;
-
public interface CommonContentHeaderProperties extends ContentHeaderProperties
{
-
AMQShortString getContentType();
void setContentType(AMQShortString contentType);
diff --git a/java/common/src/main/java/org/apache/qpid/framing/ContentBodyFactory.java b/java/common/src/main/java/org/apache/qpid/framing/ContentBodyFactory.java index 5636229d53..c42995d148 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/ContentBodyFactory.java +++ b/java/common/src/main/java/org/apache/qpid/framing/ContentBodyFactory.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,12 +20,14 @@ */ package org.apache.qpid.framing; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ContentBodyFactory implements BodyFactory { - private static final Logger _log = Logger.getLogger(AMQMethodBodyFactory.class); + private static final Logger _log = LoggerFactory.getLogger(AMQMethodBodyFactory.class); private static final ContentBodyFactory _instance = new ContentBodyFactory(); @@ -44,4 +46,3 @@ public class ContentBodyFactory implements BodyFactory return new ContentBody(in, bodySize); } } - diff --git a/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBodyFactory.java b/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBodyFactory.java index 818fc9cf0c..8d5e2f9fb4 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBodyFactory.java +++ b/java/common/src/main/java/org/apache/qpid/framing/ContentHeaderBodyFactory.java @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -20,12 +20,14 @@ */ package org.apache.qpid.framing; -import org.apache.log4j.Logger; import org.apache.mina.common.ByteBuffer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class ContentHeaderBodyFactory implements BodyFactory { - private static final Logger _log = Logger.getLogger(AMQMethodBodyFactory.class); + private static final Logger _log = LoggerFactory.getLogger(AMQMethodBodyFactory.class); private static final ContentHeaderBodyFactory _instance = new ContentHeaderBodyFactory(); @@ -43,8 +45,6 @@ public class ContentHeaderBodyFactory implements BodyFactory { // all content headers are the same - it is only the properties that differ. // the content header body further delegates construction of properties - return new ContentHeaderBody(in,bodySize); + return new ContentHeaderBody(in, bodySize); } - - } diff --git a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java index 62fefdc2fc..ccba8bd41e 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java +++ b/java/common/src/main/java/org/apache/qpid/framing/EncodingUtils.java @@ -20,15 +20,16 @@ */ package org.apache.qpid.framing; -import java.nio.charset.Charset; +import org.apache.mina.common.ByteBuffer; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import org.apache.mina.common.ByteBuffer; +import java.nio.charset.Charset; public class EncodingUtils { - private static final Logger _logger = Logger.getLogger(EncodingUtils.class); + private static final Logger _logger = LoggerFactory.getLogger(EncodingUtils.class); private static final String STRING_ENCODING = "iso8859-15"; @@ -1024,6 +1025,4 @@ public class EncodingUtils return l; } - - } diff --git a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java index 34415777be..2fe96b722b 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java +++ b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java @@ -20,6 +20,14 @@ */ package org.apache.qpid.framing; +import org.apache.mina.common.ByteBuffer; + +import org.apache.qpid.AMQPInvalidClassException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.math.BigDecimal; import java.util.Collections; import java.util.Enumeration; import java.util.Iterator; @@ -27,18 +35,13 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; -import java.math.BigDecimal; -import org.apache.log4j.Logger; -import org.apache.mina.common.ByteBuffer; -import org.apache.qpid.AMQPInvalidClassException; - -//extends FieldTable +// extends FieldTable public class FieldTable { - private static final Logger _logger = Logger.getLogger(FieldTable.class); + private static final Logger _logger = LoggerFactory.getLogger(FieldTable.class); private static final String STRICT_AMQP = "STRICT_AMQP"; - private final boolean _strictAMQP = Boolean.valueOf(System.getProperty(STRICT_AMQP,"false")); + private final boolean _strictAMQP = Boolean.valueOf(System.getProperty(STRICT_AMQP, "false")); private ByteBuffer _encodedForm; private LinkedHashMap<AMQShortString, AMQTypedValue> _properties; @@ -49,9 +52,9 @@ public class FieldTable public FieldTable() { super(); -// _encodedForm = ByteBuffer.allocate(INITIAL_ENCODED_FORM_SIZE); -// _encodedForm.setAutoExpand(true); -// _encodedForm.limit(0); + // _encodedForm = ByteBuffer.allocate(INITIAL_ENCODED_FORM_SIZE); + // _encodedForm.setAutoExpand(true); + // _encodedForm.limit(0); } /** @@ -71,7 +74,6 @@ public class FieldTable buffer.skip((int) length); } - private AMQTypedValue getProperty(AMQShortString string) { checkPropertyName(string); @@ -114,7 +116,6 @@ public class FieldTable } } - private AMQTypedValue setProperty(AMQShortString key, AMQTypedValue val) { checkPropertyName(key); @@ -128,7 +129,7 @@ public class FieldTable return removeKey(key); } } - else if (_encodedForm != null && val != null) + else if ((_encodedForm != null) && (val != null)) { EncodingUtils.writeShortStringBytes(_encodedForm, key); val.writeToBuffer(_encodedForm); @@ -139,7 +140,6 @@ public class FieldTable return null; } - AMQTypedValue oldVal = _properties.put(key, val); if (oldVal != null) { @@ -149,6 +149,7 @@ public class FieldTable { _encodedSize += EncodingUtils.encodedShortStringLength(key) + 1; } + _encodedSize += val.getEncodingSize(); return oldVal; @@ -160,7 +161,7 @@ public class FieldTable { if (_properties == null) { - if (_encodedForm == null || _encodedSize == 0) + if ((_encodedForm == null) || (_encodedSize == 0)) { _properties = new LinkedHashMap<AMQShortString, AMQTypedValue>(); } @@ -173,7 +174,6 @@ public class FieldTable } } - public Boolean getBoolean(String string) { return getBoolean(new AMQShortString(string)); @@ -182,7 +182,7 @@ public class FieldTable public Boolean getBoolean(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.BOOLEAN)) + if ((value != null) && (value.getType() == AMQType.BOOLEAN)) { return (Boolean) value.getValue(); } @@ -192,7 +192,6 @@ public class FieldTable } } - public Byte getByte(String string) { return getByte(new AMQShortString(string)); @@ -201,7 +200,7 @@ public class FieldTable public Byte getByte(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.BYTE)) + if ((value != null) && (value.getType() == AMQType.BYTE)) { return (Byte) value.getValue(); } @@ -219,7 +218,7 @@ public class FieldTable public Short getShort(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.SHORT)) + if ((value != null) && (value.getType() == AMQType.SHORT)) { return (Short) value.getValue(); } @@ -237,7 +236,7 @@ public class FieldTable public Integer getInteger(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.INT)) + if ((value != null) && (value.getType() == AMQType.INT)) { return (Integer) value.getValue(); } @@ -255,7 +254,7 @@ public class FieldTable public Long getLong(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.LONG)) + if ((value != null) && (value.getType() == AMQType.LONG)) { return (Long) value.getValue(); } @@ -273,7 +272,7 @@ public class FieldTable public Float getFloat(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.FLOAT)) + if ((value != null) && (value.getType() == AMQType.FLOAT)) { return (Float) value.getValue(); } @@ -291,7 +290,7 @@ public class FieldTable public Double getDouble(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.DOUBLE)) + if ((value != null) && (value.getType() == AMQType.DOUBLE)) { return (Double) value.getValue(); } @@ -309,12 +308,10 @@ public class FieldTable public String getString(AMQShortString string) { AMQTypedValue value = getProperty(string); - if ((value != null) && ((value.getType() == AMQType.WIDE_STRING) || - (value.getType() == AMQType.ASCII_STRING))) + if ((value != null) && ((value.getType() == AMQType.WIDE_STRING) || (value.getType() == AMQType.ASCII_STRING))) { return (String) value.getValue(); } - else if ((value != null) && (value.getValue() != null) && !(value.getValue() instanceof byte[])) { return String.valueOf(value.getValue()); @@ -334,7 +331,7 @@ public class FieldTable public Character getCharacter(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.ASCII_CHARACTER)) + if ((value != null) && (value.getType() == AMQType.ASCII_CHARACTER)) { return (Character) value.getValue(); } @@ -352,7 +349,7 @@ public class FieldTable public byte[] getBytes(AMQShortString string) { AMQTypedValue value = getProperty(string); - if (value != null && (value.getType() == AMQType.BINARY)) + if ((value != null) && (value.getType() == AMQType.BINARY)) { return (byte[]) value.getValue(); } @@ -384,7 +381,7 @@ public class FieldTable public Long getTimestamp(AMQShortString name) { AMQTypedValue value = getProperty(name); - if ((value != null) && ((value.getType() == AMQType.TIMESTAMP))) + if ((value != null) && (value.getType() == AMQType.TIMESTAMP)) { return (Long) value.getValue(); } @@ -397,7 +394,7 @@ public class FieldTable public BigDecimal getDecimal(AMQShortString propertyName) { AMQTypedValue value = getProperty(propertyName); - if ((value != null) && ((value.getType() == AMQType.DECIMAL))) + if ((value != null) && (value.getType() == AMQType.DECIMAL)) { return (BigDecimal) value.getValue(); } @@ -407,7 +404,6 @@ public class FieldTable } } - // ************ Setters public Object setBoolean(String string, Boolean b) { @@ -439,7 +435,6 @@ public class FieldTable return setProperty(string, AMQType.SHORT.asTypedValue(i)); } - public Object setInteger(String string, Integer i) { return setInteger(new AMQShortString(string), i); @@ -450,7 +445,6 @@ public class FieldTable return setProperty(string, AMQType.INT.asTypedValue(i)); } - public Object setLong(String string, Long l) { return setLong(new AMQShortString(string), l); @@ -539,6 +533,7 @@ public class FieldTable { byte[] newBytes = new byte[length]; System.arraycopy(bytes, start, newBytes, 0, length); + return setBytes(string, bytes); } @@ -562,7 +557,7 @@ public class FieldTable if (decimal.scale() > Byte.MAX_VALUE) { throw new UnsupportedOperationException("AMQP doesnot support decimal scales larger than " + Byte.MAX_VALUE); - } + } return setProperty(string, AMQType.DECIMAL.asTypedValue(decimal)); } @@ -621,6 +616,7 @@ public class FieldTable public boolean isNullStringValue(String name) { AMQTypedValue value = getProperty(new AMQShortString(name)); + return (value != null) && (value.getType() == AMQType.VOID); } @@ -645,6 +641,7 @@ public class FieldTable { checkPropertyName(propertyName); initMapIfNecessary(); + return _properties.containsKey(propertyName); } @@ -656,6 +653,7 @@ public class FieldTable public String toString() { initMapIfNecessary(); + return _properties.toString(); } @@ -670,7 +668,7 @@ public class FieldTable throw new IllegalArgumentException("Property name must not be the empty string"); } - if(_strictAMQP) + if (_strictAMQP) { checkIdentiferFormat(propertyName); } @@ -678,15 +676,15 @@ public class FieldTable protected static void checkIdentiferFormat(AMQShortString propertyName) { -// AMQP Spec: 4.2.5.5 Field Tables -// Guidelines for implementers: -// * Field names MUST start with a letter, '$' or '#' and may continue with -// letters, '$' or '#', digits, or underlines, to a maximum length of 128 -// characters. -// * The server SHOULD validate field names and upon receiving an invalid -// field name, it SHOULD signal a connection exception with reply code -// 503 (syntax error). Conformance test: amq_wlp_table_01. -// * A peer MUST handle duplicate fields by using only the first instance. + // AMQP Spec: 4.2.5.5 Field Tables + // Guidelines for implementers: + // * Field names MUST start with a letter, '$' or '#' and may continue with + // letters, '$' or '#', digits, or underlines, to a maximum length of 128 + // characters. + // * The server SHOULD validate field names and upon receiving an invalid + // field name, it SHOULD signal a connection exception with reply code + // 503 (syntax error). Conformance test: amq_wlp_table_01. + // * A peer MUST handle duplicate fields by using only the first instance. // AMQP length limit if (propertyName.length() > 128) @@ -695,12 +693,11 @@ public class FieldTable } // AMQ start character - if (!(Character.isLetter(propertyName.charAt(0)) - || propertyName.charAt(0) == '$' - || propertyName.charAt(0) == '#' - || propertyName.charAt(0) == '_')) // Not official AMQP added for JMS. + if (!(Character.isLetter(propertyName.charAt(0)) || (propertyName.charAt(0) == '$') + || (propertyName.charAt(0) == '#') || (propertyName.charAt(0) == '_'))) // Not official AMQP added for JMS. { - throw new IllegalArgumentException("Identifier '" + propertyName + "' does not start with a valid AMQP start character"); + throw new IllegalArgumentException("Identifier '" + propertyName + + "' does not start with a valid AMQP start character"); } } @@ -713,7 +710,7 @@ public class FieldTable if (trace) { _logger.trace("FieldTable::writeToBuffer: Writing encoded length of " + getEncodedSize() + "..."); - _logger.trace(_properties); + _logger.trace(_properties.toString()); } EncodingUtils.writeUnsignedInteger(buffer, getEncodedSize()); @@ -732,6 +729,7 @@ public class FieldTable buffer.flip(); buffer.get(result); buffer.release(); + return result; } @@ -754,6 +752,7 @@ public class FieldTable } } + _encodedSize = encodedSize; } @@ -765,7 +764,6 @@ public class FieldTable recalculateEncodedSize(); } - public static interface FieldTableElementProcessor { public boolean processElement(String propertyName, AMQTypedValue value); @@ -787,15 +785,15 @@ public class FieldTable } } } - return processor.getResult(); + return processor.getResult(); } - public int size() { initMapIfNecessary(); + return _properties.size(); } @@ -808,6 +806,7 @@ public class FieldTable public boolean containsKey(AMQShortString key) { initMapIfNecessary(); + return _properties.containsKey(key); } @@ -824,23 +823,21 @@ public class FieldTable { keys.add(key.toString()); } + return keys; } - public Object get(AMQShortString key) { return getObject(key); } - public Object put(AMQShortString key, Object value) { return setObject(key, value); } - public Object remove(String key) { @@ -851,10 +848,10 @@ public class FieldTable public Object remove(AMQShortString key) { AMQTypedValue val = removeKey(key); - return val == null ? null : val.getValue(); - } + return (val == null) ? null : val.getValue(); + } public AMQTypedValue removeKey(AMQShortString key) { @@ -870,12 +867,12 @@ public class FieldTable _encodedSize -= EncodingUtils.encodedShortStringLength(key); _encodedSize--; _encodedSize -= value.getEncodingSize(); + return value; } } - public void clear() { initMapIfNecessary(); @@ -887,6 +884,7 @@ public class FieldTable public Set<AMQShortString> keySet() { initMapIfNecessary(); + return _properties.keySet(); } @@ -900,17 +898,17 @@ public class FieldTable { _encodedForm.flip(); } -// _encodedForm.limit((int)getEncodedSize()); + // _encodedForm.limit((int)getEncodedSize()); + buffer.put(_encodedForm); } else if (_properties != null) { final Iterator<Map.Entry<AMQShortString, AMQTypedValue>> it = _properties.entrySet().iterator(); - //If there are values then write out the encoded Size... could check _encodedSize != 0 + // If there are values then write out the encoded Size... could check _encodedSize != 0 // write out the total length, which we have kept up to date as data is added - while (it.hasNext()) { final Map.Entry<AMQShortString, AMQTypedValue> me = it.next(); @@ -918,14 +916,12 @@ public class FieldTable { if (_logger.isTraceEnabled()) { - _logger.trace("Writing Property:" + me.getKey() + - " Type:" + me.getValue().getType() + - " Value:" + me.getValue().getValue()); - _logger.trace("Buffer Position:" + buffer.position() + - " Remaining:" + buffer.remaining()); + _logger.trace("Writing Property:" + me.getKey() + " Type:" + me.getValue().getType() + " Value:" + + me.getValue().getValue()); + _logger.trace("Buffer Position:" + buffer.position() + " Remaining:" + buffer.remaining()); } - //Write the actual parameter name + // Write the actual parameter name EncodingUtils.writeShortStringBytes(buffer, me.getKey()); me.getValue().writeToBuffer(buffer); } @@ -934,19 +930,17 @@ public class FieldTable if (_logger.isTraceEnabled()) { _logger.trace("Exception thrown:" + e); - _logger.trace("Writing Property:" + me.getKey() + - " Type:" + me.getValue().getType() + - " Value:" + me.getValue().getValue()); - _logger.trace("Buffer Position:" + buffer.position() + - " Remaining:" + buffer.remaining()); + _logger.trace("Writing Property:" + me.getKey() + " Type:" + me.getValue().getType() + " Value:" + + me.getValue().getValue()); + _logger.trace("Buffer Position:" + buffer.position() + " Remaining:" + buffer.remaining()); } + throw new RuntimeException(e); } } } } - private void setFromBuffer(ByteBuffer buffer, long length) throws AMQFrameDecodingException { @@ -966,17 +960,17 @@ public class FieldTable if (trace) { - _logger.trace("FieldTable::PropFieldTable(buffer," + length + "): Read type '" + value.getType() + "', key '" + key + "', value '" + value.getValue() + "'"); + _logger.trace("FieldTable::PropFieldTable(buffer," + length + "): Read type '" + value.getType() + + "', key '" + key + "', value '" + value.getValue() + "'"); } - _properties.put(key, value); - } while (buffer.remaining() > expectedRemaining); } + _encodedSize = length; if (trace) @@ -988,20 +982,22 @@ public class FieldTable public int hashCode() { initMapIfNecessary(); + return _properties.hashCode(); } - public boolean equals(Object o) { if (o == this) { return true; } + if (o == null) { return false; } + if (!(o instanceof FieldTable)) { return false; diff --git a/java/common/src/main/java/org/apache/qpid/framing/VersionSpecificRegistry.java b/java/common/src/main/java/org/apache/qpid/framing/VersionSpecificRegistry.java index 916b476185..6006e9793c 100644 --- a/java/common/src/main/java/org/apache/qpid/framing/VersionSpecificRegistry.java +++ b/java/common/src/main/java/org/apache/qpid/framing/VersionSpecificRegistry.java @@ -20,15 +20,16 @@ */
package org.apache.qpid.framing;
-import org.apache.log4j.Logger;
-
import org.apache.mina.common.ByteBuffer;
import org.apache.qpid.framing.abstraction.ProtocolVersionMethodConverter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
public class VersionSpecificRegistry
{
- private static final Logger _log = Logger.getLogger(VersionSpecificRegistry.class);
+ private static final Logger _log = LoggerFactory.getLogger(VersionSpecificRegistry.class);
private final byte _protocolMajorVersion;
private final byte _protocolMinorVersion;
@@ -152,16 +153,17 @@ public class VersionSpecificRegistry }
catch (NullPointerException e)
{
- throw new AMQFrameDecodingException(null, "Class " + classID + " unknown in AMQP version " + _protocolMajorVersion
- + "-" + _protocolMinorVersion + " (while trying to decode class " + classID + " method " + methodID + ".", e);
+ throw new AMQFrameDecodingException(null, "Class " + classID + " unknown in AMQP version "
+ + _protocolMajorVersion + "-" + _protocolMinorVersion + " (while trying to decode class " + classID
+ + " method " + methodID + ".", e);
}
catch (IndexOutOfBoundsException e)
{
if (classID >= _registry.length)
{
- throw new AMQFrameDecodingException(null, "Class " + classID + " unknown in AMQP version " + _protocolMajorVersion
- + "-" + _protocolMinorVersion + " (while trying to decode class " + classID + " method " + methodID
- + ".", e);
+ throw new AMQFrameDecodingException(null, "Class " + classID + " unknown in AMQP version "
+ + _protocolMajorVersion + "-" + _protocolMinorVersion + " (while trying to decode class " + classID
+ + " method " + methodID + ".", e);
}
else
@@ -175,8 +177,9 @@ public class VersionSpecificRegistry if (bodyFactory == null)
{
- throw new AMQFrameDecodingException(null, "Method " + methodID + " unknown in AMQP version " + _protocolMajorVersion
- + "-" + _protocolMinorVersion + " (while trying to decode class " + classID + " method " + methodID + ".", null);
+ throw new AMQFrameDecodingException(null, "Method " + methodID + " unknown in AMQP version "
+ + _protocolMajorVersion + "-" + _protocolMinorVersion + " (while trying to decode class " + classID
+ + " method " + methodID + ".", null);
}
return bodyFactory.newInstance(_protocolMajorVersion, _protocolMinorVersion, classID, methodID, in, size);
diff --git a/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java b/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java index 7d3dfbee81..cbe08a192e 100644 --- a/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java +++ b/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java @@ -20,17 +20,18 @@ */ package org.apache.qpid.pool; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import org.apache.log4j.Logger; - import org.apache.mina.common.IdleStatus; import org.apache.mina.common.IoFilterAdapter; import org.apache.mina.common.IoSession; import org.apache.qpid.pool.Event.CloseEvent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + /** * PoolingFilter, is a no-op pass through filter that hands all events down the Mina filter chain by default. As it * adds no behaviour by default to the filter chain, it is abstract. @@ -81,7 +82,7 @@ import org.apache.qpid.pool.Event.CloseEvent; public abstract class PoolingFilter extends IoFilterAdapter implements Job.JobCompletionHandler { /** Used for debugging purposes. */ - private static final Logger _logger = Logger.getLogger(PoolingFilter.class); + private static final Logger _logger = LoggerFactory.getLogger(PoolingFilter.class); /** Holds a mapping from Mina sessions to batched jobs for execution. */ private final ConcurrentMap<IoSession, Job> _jobs = new ConcurrentHashMap<IoSession, Job>(); diff --git a/java/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java b/java/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java index 353c0d39c2..1774fa1194 100644 --- a/java/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java +++ b/java/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java @@ -20,18 +20,19 @@ */ package org.apache.qpid.url; +import org.apache.qpid.exchange.ExchangeDefaults; +import org.apache.qpid.framing.AMQShortString; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; -import org.apache.log4j.Logger; - -import org.apache.qpid.exchange.ExchangeDefaults; -import org.apache.qpid.framing.AMQShortString; - public class AMQBindingURL implements BindingURL { - private static final Logger _logger = Logger.getLogger(AMQBindingURL.class); + private static final Logger _logger = LoggerFactory.getLogger(AMQBindingURL.class); String _url; AMQShortString _exchangeClass; diff --git a/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedMessageQueueAtomicSize.java b/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedMessageQueueAtomicSize.java index 4636f44795..461cf9591d 100644 --- a/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedMessageQueueAtomicSize.java +++ b/java/common/src/main/java/org/apache/qpid/util/ConcurrentLinkedMessageQueueAtomicSize.java @@ -14,22 +14,23 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.util; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -import java.util.Queue; import java.util.Collection; import java.util.Iterator; +import java.util.Queue; import java.util.concurrent.atomic.AtomicInteger; public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQueueAtomicSize<E> implements MessageQueue<E> { - private static final Logger _logger = Logger.getLogger(ConcurrentLinkedMessageQueueAtomicSize.class); + private static final Logger _logger = LoggerFactory.getLogger(ConcurrentLinkedMessageQueueAtomicSize.class); protected Queue<E> _messageHead = new ConcurrentLinkedQueueAtomicSize<E>(); @@ -62,7 +63,6 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ _logger.debug("Providing item(" + e + ")from message head"); } - if (e != null) { _messageHeadSize.decrementAndGet(); @@ -85,6 +85,7 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ if (_messageHead.remove(o)) { _messageHeadSize.decrementAndGet(); + return true; } @@ -101,26 +102,25 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ } else { - //fixme this is super.removeAll but iterator here doesn't work + // fixme this is super.removeAll but iterator here doesn't work // we need to be able to correctly decrement _messageHeadSize -// boolean modified = false; -// Iterator<?> e = iterator(); -// while (e.hasNext()) -// { -// if (c.contains(e.next())) -// { -// e.remove(); -// modified = true; -// _size.decrementAndGet(); -// } -// } -// return modified; + // boolean modified = false; + // Iterator<?> e = iterator(); + // while (e.hasNext()) + // { + // if (c.contains(e.next())) + // { + // e.remove(); + // modified = true; + // _size.decrementAndGet(); + // } + // } + // return modified; throw new RuntimeException("Not implemented"); } } - @Override public boolean isEmpty() { @@ -173,6 +173,7 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ { _logger.debug("Peeking item (" + o + ") from message head"); } + return o; } @@ -182,36 +183,40 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ public Iterator<E> iterator() { final Iterator<E> mainMessageIterator = super.iterator(); + return new Iterator<E>() - { - final Iterator<E> _headIterator = _messageHead.iterator(); - final Iterator<E> _mainIterator = mainMessageIterator; + { + final Iterator<E> _headIterator = _messageHead.iterator(); + final Iterator<E> _mainIterator = mainMessageIterator; - Iterator<E> last; + Iterator<E> last; - public boolean hasNext() - { - return _headIterator.hasNext() || _mainIterator.hasNext(); - } + public boolean hasNext() + { + return _headIterator.hasNext() || _mainIterator.hasNext(); + } - public E next() - { - if (_headIterator.hasNext()) + public E next() { - last = _headIterator; - return _headIterator.next(); + if (_headIterator.hasNext()) + { + last = _headIterator; + + return _headIterator.next(); + } + else + { + last = _mainIterator; + + return _mainIterator.next(); + } } - else + + public void remove() { - last = _mainIterator; - return _mainIterator.next(); + last.remove(); } - } - public void remove() - { - last.remove(); - } - }; + }; } @Override @@ -232,11 +237,14 @@ public class ConcurrentLinkedMessageQueueAtomicSize<E> extends ConcurrentLinkedQ { _logger.debug("Adding item(" + o + ") to head of queue"); } + if (_messageHead.offer(o)) { _messageHeadSize.incrementAndGet(); + return true; } + return false; } -}
\ No newline at end of file +} diff --git a/java/common/src/main/java/org/apache/qpid/util/FileUtils.java b/java/common/src/main/java/org/apache/qpid/util/FileUtils.java index 3c8d3f916b..3b8ebc1666 100644 --- a/java/common/src/main/java/org/apache/qpid/util/FileUtils.java +++ b/java/common/src/main/java/org/apache/qpid/util/FileUtils.java @@ -22,8 +22,6 @@ package org.apache.qpid.util; import java.io.*;
-import org.apache.log4j.Logger;
-
/**
* FileUtils provides some simple helper methods for working with files. It follows the convention of wrapping all
* checked exceptions as runtimes, so code using these methods is free of try-catch blocks but does not expect to
diff --git a/java/common/src/main/java/org/apache/qpid/util/PropertiesUtils.java b/java/common/src/main/java/org/apache/qpid/util/PropertiesUtils.java index aa21841256..63cf6f252b 100644 --- a/java/common/src/main/java/org/apache/qpid/util/PropertiesUtils.java +++ b/java/common/src/main/java/org/apache/qpid/util/PropertiesUtils.java @@ -20,6 +20,9 @@ */
package org.apache.qpid.util;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -28,8 +31,6 @@ import java.net.URL; import java.util.Iterator;
import java.util.Properties;
-import org.apache.log4j.Logger;
-
/**
* PropertiesHelper defines some static methods which are useful when working with properties
* files.
@@ -46,7 +47,7 @@ import org.apache.log4j.Logger; public class PropertiesUtils
{
/** Used for logging. */
- private static final Logger log = Logger.getLogger(PropertiesUtils.class);
+ private static final Logger log = LoggerFactory.getLogger(PropertiesUtils.class);
/**
* Get properties from an input stream.
diff --git a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java index 38a2ae6256..e63b0df770 100644 --- a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java +++ b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java @@ -14,27 +14,25 @@ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations - * under the License. + * under the License. + * * - * */ package org.apache.qpid.framing; import junit.framework.Assert; import junit.framework.TestCase; -import java.util.Enumeration; -import java.util.Iterator; - import org.apache.mina.common.ByteBuffer; -import org.apache.log4j.Logger; + import org.apache.qpid.AMQPInvalidClassException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class PropertyFieldTableTest extends TestCase { - - private static final Logger _logger = Logger.getLogger(PropertyFieldTableTest.class); - + private static final Logger _logger = LoggerFactory.getLogger(PropertyFieldTableTest.class); /** * Test that setting a similar named value replaces any previous value set on that name @@ -42,9 +40,9 @@ public class PropertyFieldTableTest extends TestCase public void testReplacement() { FieldTable table1 = new FieldTable(); - //Set a boolean value + // Set a boolean value table1.setBoolean("value", true); - //Check length of table is correct (<Value length> + <type> + <Boolean length>) + // Check length of table is correct (<Value length> + <type> + <Boolean length>) int size = EncodingUtils.encodedShortStringLength("value") + 1 + EncodingUtils.encodedBooleanLength(); Assert.assertEquals(size, table1.getEncodedSize()); @@ -55,13 +53,12 @@ public class PropertyFieldTableTest extends TestCase size = EncodingUtils.encodedShortStringLength("value") + 1 + EncodingUtils.encodedIntegerLength(); Assert.assertEquals(size, table1.getEncodedSize()); - //Check boolean value is null + // Check boolean value is null Assert.assertEquals(null, table1.getBoolean("value")); // ... and integer value is good Assert.assertEquals((Integer) Integer.MAX_VALUE, table1.getInteger("value")); } - /** * Set a boolean and check that we can only get it back as a boolean and a string * Check that attempting to lookup a non existent value returns null @@ -72,10 +69,10 @@ public class PropertyFieldTableTest extends TestCase table1.setBoolean("value", true); Assert.assertTrue(table1.propertyExists("value")); - //Test Getting right value back + // Test Getting right value back Assert.assertEquals((Boolean) true, table1.getBoolean("value")); - //Check we don't get anything back for other gets + // Check we don't get anything back for other gets Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -86,7 +83,7 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //except value as a string + // except value as a string Assert.assertEquals("true", table1.getString("value")); table1.remove("value"); @@ -94,7 +91,7 @@ public class PropertyFieldTableTest extends TestCase // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getBoolean("Rubbish")); } @@ -108,8 +105,8 @@ public class PropertyFieldTableTest extends TestCase table1.setByte("value", Byte.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(Byte.MAX_VALUE, (byte) table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -120,14 +117,14 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Byte.MAX_VALUE, table1.getString("value")); table1.remove("value"); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getByte("Rubbish")); } @@ -141,8 +138,8 @@ public class PropertyFieldTableTest extends TestCase table1.setShort("value", Short.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(Short.MAX_VALUE, (short) table1.getShort("value")); @@ -153,18 +150,17 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Short.MAX_VALUE, table1.getString("value")); table1.remove("value"); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getShort("Rubbish")); } - /** * Set a char and check that we can only get it back as a char * Check that attempting to lookup a non existent value returns null @@ -175,8 +171,8 @@ public class PropertyFieldTableTest extends TestCase table1.setChar("value", 'c'); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -187,7 +183,7 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("c", table1.getString("value")); table1.remove("value"); @@ -195,11 +191,10 @@ public class PropertyFieldTableTest extends TestCase // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getCharacter("Rubbish")); } - /** * Set a double and check that we can only get it back as a double * Check that attempting to lookup a non existent value returns null @@ -210,8 +205,8 @@ public class PropertyFieldTableTest extends TestCase table1.setDouble("value", Double.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -222,20 +217,19 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Double.MAX_VALUE, table1.getString("value")); table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getDouble("Rubbish")); } - /** * Set a float and check that we can only get it back as a float * Check that attempting to lookup a non existent value returns null @@ -246,8 +240,8 @@ public class PropertyFieldTableTest extends TestCase table1.setFloat("value", Float.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -258,22 +252,20 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Float.MAX_VALUE, table1.getString("value")); - table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getFloat("Rubbish")); } - /** * Set an int and check that we can only get it back as an int * Check that attempting to lookup a non existent value returns null @@ -284,8 +276,8 @@ public class PropertyFieldTableTest extends TestCase table1.setInteger("value", Integer.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -296,22 +288,20 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Integer.MAX_VALUE, table1.getString("value")); - table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getInteger("Rubbish")); } - /** * Set a long and check that we can only get it back as a long * Check that attempting to lookup a non existent value returns null @@ -322,8 +312,8 @@ public class PropertyFieldTableTest extends TestCase table1.setLong("value", Long.MAX_VALUE); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -334,36 +324,34 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(Long.MAX_VALUE, (long) table1.getLong("value")); Assert.assertEquals(null, table1.getBytes("value")); - //... and a the string value of it. + // ... and a the string value of it. Assert.assertEquals("" + Long.MAX_VALUE, table1.getString("value")); - table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getLong("Rubbish")); } - /** * Set a double and check that we can only get it back as a double * Check that attempting to lookup a non existent value returns null */ public void testBytes() { - byte[] bytes = {99, 98, 97, 96, 95}; + byte[] bytes = { 99, 98, 97, 96, 95 }; FieldTable table1 = new FieldTable(); table1.setBytes("value", bytes); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -374,17 +362,17 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getLong("value")); assertBytesEqual(bytes, table1.getBytes("value")); - //... and a the string value of it is null + // ... and a the string value of it is null Assert.assertEquals(null, table1.getString("value")); table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); // Table should now have zero length for encoding checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getBytes("Rubbish")); } @@ -405,7 +393,6 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(0, table.keySet().size()); } - /** * Set a String and check that we can only get it back as a String * Check that attempting to lookup a non existent value returns null @@ -416,8 +403,8 @@ public class PropertyFieldTableTest extends TestCase table1.setString("value", "Hello"); Assert.assertTrue(table1.propertyExists("value")); - //Tets lookups we shouldn't get anything back for other gets - //we should get right value back for this type .... + // Tets lookups we shouldn't get anything back for other gets + // we should get right value back for this type .... Assert.assertEquals(null, table1.getBoolean("value")); Assert.assertEquals(null, table1.getByte("value")); Assert.assertEquals(null, table1.getShort("value")); @@ -429,40 +416,35 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals(null, table1.getBytes("value")); Assert.assertEquals("Hello", table1.getString("value")); - //Try setting a null value and read it back + // Try setting a null value and read it back table1.setString("value", null); Assert.assertEquals(null, table1.getString("value")); - //but still contains the value + // but still contains the value Assert.assertTrue(table1.containsKey("value")); table1.remove("value"); - //but after a removeKey it doesn't + // but after a removeKey it doesn't Assert.assertFalse(table1.containsKey("value")); checkEmpty(table1); - //Looking up an invalid value returns null + // Looking up an invalid value returns null Assert.assertEquals(null, table1.getString("Rubbish")); - //Additional Test that haven't been covered for string + // Additional Test that haven't been covered for string table1.setObject("value", "Hello"); - //Check that it was set correctly + // Check that it was set correctly Assert.assertEquals("Hello", table1.getString("value")); } - - - - - public void testValues() { FieldTable table = new FieldTable(); table.setBoolean("bool", true); table.setByte("byte", Byte.MAX_VALUE); - byte[] bytes = {99, 98, 97, 96, 95}; + byte[] bytes = { 99, 98, 97, 96, 95 }; table.setBytes("bytes", bytes); table.setChar("char", 'c'); table.setDouble("double", Double.MAX_VALUE); @@ -484,7 +466,6 @@ public class PropertyFieldTableTest extends TestCase table.setObject("object-short", Short.MAX_VALUE); table.setObject("object-string", "Hello"); - Assert.assertEquals((Boolean) true, table.getBoolean("bool")); Assert.assertEquals((Byte) Byte.MAX_VALUE, table.getByte("byte")); assertBytesEqual(bytes, table.getBytes("bytes")); @@ -509,10 +490,9 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals("Hello", table.getObject("object-string")); } - public void testwriteBuffer() { - byte[] bytes = {99, 98, 97, 96, 95}; + byte[] bytes = { 99, 98, 97, 96, 95 }; FieldTable table = new FieldTable(); table.setBoolean("bool", true); @@ -569,13 +549,11 @@ public class PropertyFieldTableTest extends TestCase size += 1 + EncodingUtils.encodedShortStringLength("boolean") + EncodingUtils.encodedBooleanLength(); Assert.assertEquals(size, result.getEncodedSize()); - result.setByte("byte", (byte) Byte.MAX_VALUE); size += 1 + EncodingUtils.encodedShortStringLength("byte") + EncodingUtils.encodedByteLength(); Assert.assertEquals(size, result.getEncodedSize()); - - byte[] _bytes = {99, 98, 97, 96, 95}; + byte[] _bytes = { 99, 98, 97, 96, 95 }; result.setBytes("bytes", _bytes); size += 1 + EncodingUtils.encodedShortStringLength("bytes") + 4 + _bytes.length; @@ -597,7 +575,6 @@ public class PropertyFieldTableTest extends TestCase size += 1 + EncodingUtils.encodedShortStringLength("int") + EncodingUtils.encodedIntegerLength(); Assert.assertEquals(size, result.getEncodedSize()); - result.setLong("long", (long) Long.MAX_VALUE); size += 1 + EncodingUtils.encodedShortStringLength("long") + EncodingUtils.encodedLongLength(); Assert.assertEquals(size, result.getEncodedSize()); @@ -610,7 +587,6 @@ public class PropertyFieldTableTest extends TestCase size += 1 + EncodingUtils.encodedShortStringLength("result") + EncodingUtils.encodedLongStringLength("Hello"); Assert.assertEquals(size, result.getEncodedSize()); - result.setObject("object-bool", true); size += 1 + EncodingUtils.encodedShortStringLength("object-bool") + EncodingUtils.encodedBooleanLength(); Assert.assertEquals(size, result.getEncodedSize()); @@ -639,7 +615,6 @@ public class PropertyFieldTableTest extends TestCase size += 1 + EncodingUtils.encodedShortStringLength("object-int") + EncodingUtils.encodedIntegerLength(); Assert.assertEquals(size, result.getEncodedSize()); - result.setObject("object-long", Long.MAX_VALUE); size += 1 + EncodingUtils.encodedShortStringLength("object-long") + EncodingUtils.encodedLongLength(); Assert.assertEquals(size, result.getEncodedSize()); @@ -650,63 +625,62 @@ public class PropertyFieldTableTest extends TestCase } -// public void testEncodingSize1() -// { -// PropertyFieldTable table = new PropertyFieldTable(); -// int length = 0; -// result.put("one", 1L); -// length = EncodingUtils.encodedShortStringLength("one"); -// length += 1 + EncodingUtils.encodedLongLength(); -// assertEquals(length, result.getEncodedSize()); -// -// result.put("two", 2L); -// length += EncodingUtils.encodedShortStringLength("two"); -// length += 1 + EncodingUtils.encodedLongLength(); -// assertEquals(length, result.getEncodedSize()); -// -// result.put("three", 3L); -// length += EncodingUtils.encodedShortStringLength("three"); -// length += 1 + EncodingUtils.encodedLongLength(); -// assertEquals(length, result.getEncodedSize()); -// -// result.put("four", 4L); -// length += EncodingUtils.encodedShortStringLength("four"); -// length += 1 + EncodingUtils.encodedLongLength(); -// assertEquals(length, result.getEncodedSize()); -// -// result.put("five", 5L); -// length += EncodingUtils.encodedShortStringLength("five"); -// length += 1 + EncodingUtils.encodedLongLength(); -// assertEquals(length, result.getEncodedSize()); -// -// //fixme should perhaps be expanded to incorporate all types. -// -// final ByteBuffer buffer = ByteBuffer.allocate((int) result.getEncodedSize()); // FIXME XXX: Is cast a problem? -// -// result.writeToBuffer(buffer); -// -// buffer.flip(); -// -// long length = buffer.getUnsignedInt(); -// -// try -// { -// PropertyFieldTable table2 = new PropertyFieldTable(buffer, length); -// -// Assert.assertEquals((Long) 1L, table2.getLong("one")); -// Assert.assertEquals((Long) 2L, table2.getLong("two")); -// Assert.assertEquals((Long) 3L, table2.getLong("three")); -// Assert.assertEquals((Long) 4L, table2.getLong("four")); -// Assert.assertEquals((Long) 5L, table2.getLong("five")); -// } -// catch (AMQFrameDecodingException e) -// { -// e.printStackTrace(); -// fail("PFT should be instantiated from bytes." + e.getCause()); -// } -// -// } - + // public void testEncodingSize1() + // { + // PropertyFieldTable table = new PropertyFieldTable(); + // int length = 0; + // result.put("one", 1L); + // length = EncodingUtils.encodedShortStringLength("one"); + // length += 1 + EncodingUtils.encodedLongLength(); + // assertEquals(length, result.getEncodedSize()); + // + // result.put("two", 2L); + // length += EncodingUtils.encodedShortStringLength("two"); + // length += 1 + EncodingUtils.encodedLongLength(); + // assertEquals(length, result.getEncodedSize()); + // + // result.put("three", 3L); + // length += EncodingUtils.encodedShortStringLength("three"); + // length += 1 + EncodingUtils.encodedLongLength(); + // assertEquals(length, result.getEncodedSize()); + // + // result.put("four", 4L); + // length += EncodingUtils.encodedShortStringLength("four"); + // length += 1 + EncodingUtils.encodedLongLength(); + // assertEquals(length, result.getEncodedSize()); + // + // result.put("five", 5L); + // length += EncodingUtils.encodedShortStringLength("five"); + // length += 1 + EncodingUtils.encodedLongLength(); + // assertEquals(length, result.getEncodedSize()); + // + // //fixme should perhaps be expanded to incorporate all types. + // + // final ByteBuffer buffer = ByteBuffer.allocate((int) result.getEncodedSize()); // FIXME XXX: Is cast a problem? + // + // result.writeToBuffer(buffer); + // + // buffer.flip(); + // + // long length = buffer.getUnsignedInt(); + // + // try + // { + // PropertyFieldTable table2 = new PropertyFieldTable(buffer, length); + // + // Assert.assertEquals((Long) 1L, table2.getLong("one")); + // Assert.assertEquals((Long) 2L, table2.getLong("two")); + // Assert.assertEquals((Long) 3L, table2.getLong("three")); + // Assert.assertEquals((Long) 4L, table2.getLong("four")); + // Assert.assertEquals((Long) 5L, table2.getLong("five")); + // } + // catch (AMQFrameDecodingException e) + // { + // e.printStackTrace(); + // fail("PFT should be instantiated from bytes." + e.getCause()); + // } + // + // } /** * Additional test for setObject @@ -715,7 +689,7 @@ public class PropertyFieldTableTest extends TestCase { FieldTable table = new FieldTable(); - //Try setting a non primative object + // Try setting a non primative object try { @@ -724,7 +698,7 @@ public class PropertyFieldTableTest extends TestCase } catch (AMQPInvalidClassException iae) { - //normal path + // normal path } // so length should be zero Assert.assertEquals(0, table.getEncodedSize()); @@ -739,18 +713,17 @@ public class PropertyFieldTableTest extends TestCase try { - table.setObject((String)null, "String"); + table.setObject((String) null, "String"); fail("Null property name is not allowed"); } catch (IllegalArgumentException iae) { - //normal path + // normal path } // so length should be zero Assert.assertEquals(0, table.getEncodedSize()); } - /** * Additional test checkPropertyName doesn't accept an empty String */ @@ -765,20 +738,19 @@ public class PropertyFieldTableTest extends TestCase } catch (IllegalArgumentException iae) { - //normal path + // normal path } // so length should be zero Assert.assertEquals(0, table.getEncodedSize()); } - /** * Additional test checkPropertyName doesn't accept an empty String */ public void testCheckPropertyNamehasMaxLength() { - String oldVal =System.getProperty("STRICT_AMQP"); - System.setProperty("STRICT_AMQP","true"); + String oldVal = System.getProperty("STRICT_AMQP"); + System.setProperty("STRICT_AMQP", "true"); FieldTable table = new FieldTable(); StringBuffer longPropertyName = new StringBuffer(129); @@ -795,13 +767,13 @@ public class PropertyFieldTableTest extends TestCase } catch (IllegalArgumentException iae) { - //normal path + // normal path } // so length should be zero Assert.assertEquals(0, table.getEncodedSize()); - if(oldVal != null) + if (oldVal != null) { - System.setProperty("STRICT_AMQP",oldVal); + System.setProperty("STRICT_AMQP", oldVal); } else { @@ -809,31 +781,30 @@ public class PropertyFieldTableTest extends TestCase } } - /** * Additional test checkPropertyName starts with a letter */ public void testCheckPropertyNameStartCharacterIsLetter() { - String oldVal =System.getProperty("STRICT_AMQP"); - System.setProperty("STRICT_AMQP","true"); + String oldVal = System.getProperty("STRICT_AMQP"); + System.setProperty("STRICT_AMQP", "true"); FieldTable table = new FieldTable(); - //Try a name that starts with a number + // Try a name that starts with a number try { - table.setObject("1", "String"); + table.setObject("1", "String"); fail("property name must start with a letter"); } catch (IllegalArgumentException iae) { - //normal path + // normal path } // so length should be zero Assert.assertEquals(0, table.getEncodedSize()); - if(oldVal != null) + if (oldVal != null) { - System.setProperty("STRICT_AMQP",oldVal); + System.setProperty("STRICT_AMQP", oldVal); } else { @@ -841,17 +812,16 @@ public class PropertyFieldTableTest extends TestCase } } - /** * Additional test checkPropertyName starts with a hash or a dollar */ public void testCheckPropertyNameStartCharacterIsHashorDollar() { - String oldVal =System.getProperty("STRICT_AMQP"); - System.setProperty("STRICT_AMQP","true"); + String oldVal = System.getProperty("STRICT_AMQP"); + System.setProperty("STRICT_AMQP", "true"); FieldTable table = new FieldTable(); - //Try a name that starts with a number + // Try a name that starts with a number try { table.setObject("#", "String"); @@ -861,9 +831,10 @@ public class PropertyFieldTableTest extends TestCase { fail("property name are allowed to start with # and $s"); } - if(oldVal != null) + + if (oldVal != null) { - System.setProperty("STRICT_AMQP",oldVal); + System.setProperty("STRICT_AMQP", oldVal); } else { @@ -871,8 +842,6 @@ public class PropertyFieldTableTest extends TestCase } } - - /** * Additional test to test the contents of the table */ @@ -884,7 +853,7 @@ public class PropertyFieldTableTest extends TestCase Assert.assertEquals("String", table.getString("StringProperty")); - //Test Clear + // Test Clear table.clear(); @@ -903,18 +872,12 @@ public class PropertyFieldTableTest extends TestCase table.setObject("n2", "2"); table.setObject("n3", "3"); - Assert.assertEquals("1", table.getObject("n1")); Assert.assertEquals("2", table.getObject("n2")); Assert.assertEquals("3", table.getObject("n3")); - - - } - - private void assertBytesEqual(byte[] expected, byte[] actual) { Assert.assertEquals(expected.length, actual.length); diff --git a/java/common/src/test/java/org/apache/qpid/util/CommandLineParserTest.java b/java/common/src/test/java/org/apache/qpid/util/CommandLineParserTest.java index c480ce3944..815b61d293 100644 --- a/java/common/src/test/java/org/apache/qpid/util/CommandLineParserTest.java +++ b/java/common/src/test/java/org/apache/qpid/util/CommandLineParserTest.java @@ -1,10 +1,11 @@ package org.apache.qpid.util;
-import java.util.Properties;
-
import junit.framework.*;
-import org.apache.log4j.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Properties;
/**
* Unit tests the {@link CommandLineParser} class.
@@ -37,7 +38,7 @@ import org.apache.log4j.*; */
public class CommandLineParserTest extends TestCase
{
- private static final Logger log = Logger.getLogger(CommandLineParserTest.class);
+ private static final Logger log = LoggerFactory.getLogger(CommandLineParserTest.class);
public CommandLineParserTest(String name)
{
@@ -58,11 +59,6 @@ public class CommandLineParserTest extends TestCase return suite;
}
- public void setUp()
- {
- NDC.push(getName());
- }
-
/** Check that get errors returns an empty string on no errors. */
public void testGetErrorsReturnsEmptyStringOnNoErrors() throws Exception
{
@@ -534,9 +530,4 @@ public class CommandLineParserTest extends TestCase assertTrue("IllegalArgumentException not thrown for an unknown option when errors on unknowns mode is on.",
testPassed);
}
-
- protected void tearDown() throws Exception
- {
- NDC.pop();
- }
}
diff --git a/java/integrationtests/src/main/java/org/apache/qpid/interop/testclient/testcases/TestCase1DummyRun.java b/java/integrationtests/src/main/java/org/apache/qpid/interop/testclient/testcases/TestCase1DummyRun.java index 874f86daa9..85b89172bb 100644 --- a/java/integrationtests/src/main/java/org/apache/qpid/interop/testclient/testcases/TestCase1DummyRun.java +++ b/java/integrationtests/src/main/java/org/apache/qpid/interop/testclient/testcases/TestCase1DummyRun.java @@ -20,14 +20,14 @@ */
package org.apache.qpid.interop.testclient.testcases;
-import javax.jms.JMSException;
-import javax.jms.Message;
-import javax.jms.Session;
-
import org.apache.log4j.Logger;
import org.apache.qpid.interop.testclient.InteropClientTestCase;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.Session;
+
/**
* Implements tet case 1, dummy run. This test case sends no test messages, it exists to confirm that the test harness
* is interacting with the coordinator correctly.
diff --git a/java/management/eclipse-plugin/pom.xml b/java/management/eclipse-plugin/pom.xml index 152b5e9b1a..4fbc8a0e3f 100644 --- a/java/management/eclipse-plugin/pom.xml +++ b/java/management/eclipse-plugin/pom.xml @@ -167,16 +167,27 @@ <version>3.2.0</version> <scope>compile</scope> </dependency> + + <!-- Test Dependencies --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.0</version> + <scope>test</scope> + </dependency> + <dependency> <groupId>org.apache.qpid</groupId> <artifactId>qpid-broker</artifactId> <scope>test</scope> </dependency> + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> + </dependencies> <build> diff --git a/java/pom.xml b/java/pom.xml index 0ebdc45fde..c22aa7574a 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -423,7 +423,7 @@ under the License. <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> - <version>3.1</version> + <version>3.2</version> </dependency> <dependency> <groupId>commons-configuration</groupId> diff --git a/java/systests/pom.xml b/java/systests/pom.xml index d9d07ed6f9..8a245b73a9 100644 --- a/java/systests/pom.xml +++ b/java/systests/pom.xml @@ -54,6 +54,15 @@ <artifactId>junit</artifactId> <scope>compile</scope> </dependency> + + <!-- Test Dependencies --> + <dependency> + <groupId>org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + <version>1.4.0</version> + <scope>test</scope> + </dependency> + </dependencies> <build> |