diff options
author | Martin Ritchie <ritchiem@apache.org> | 2007-02-16 13:00:39 +0000 |
---|---|---|
committer | Martin Ritchie <ritchiem@apache.org> | 2007-02-16 13:00:39 +0000 |
commit | 267709b3bb825f6cfb652510307687bc67f3dbb0 (patch) | |
tree | 4a87d5e6b71ece9a51c3c46e5a6748d1d26f210d /java/client | |
parent | 0c7c587920299fdc5b2639e5ed7efc143a83c532 (diff) | |
download | qpid-python-267709b3bb825f6cfb652510307687bc67f3dbb0.tar.gz |
QPID-11 remove protocol literals from code.
QPID-376 use of getChannel() does not correct handle error cases when null is returned.
Updated AMQMethodBody - to have a convenience method getChannelNotFoundException to be used for QPID-376 when channel is null.
This allows the replyCode NOT_FOUND=404 to be changed to changed easily if required.
QPID-376 - Updated All Handlers to throw channel exception when channel is null.
QPID-11 Updated all handlers to use AMQConstant values rather than hardcoded literals.
- Updated AMQException to use AMQConstant values rather than int to ensure that no more literal values creep back in to the code base. Replaced all usages of int above framing to store replycode with AMQConstant to prevent creep.
Had to create new constants for literals used in code base but not yet part of spec.
405=Already Exists
406=In Use
323=Invalid Routing Key
Remove non spec constant
500=Unknown_Exchange_Name replaced with generic NOT_FOUND
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@508381 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client')
9 files changed, 26 insertions, 17 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java b/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java index 52dcfcfbfb..0bc474f6e6 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQAuthenticationException.java @@ -21,10 +21,11 @@ package org.apache.qpid.client; import org.apache.qpid.AMQException; +import org.apache.qpid.protocol.AMQConstant; public class AMQAuthenticationException extends AMQException { - public AMQAuthenticationException(int error, String msg) + public AMQAuthenticationException(AMQConstant error, String msg) { super(error,msg); } 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 cb2533c2bb..ebaa22ce44 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 @@ -966,7 +966,7 @@ public class AMQConnection extends Closeable implements Connection, QueueConnect { if (cause instanceof AMQException) { - je = new JMSException(Integer.toString(((AMQException) cause).getErrorCode()), "Exception thrown against " + toString() + ": " + cause); + je = new JMSException(Integer.toString(((AMQException) cause).getErrorCode().getCode()), "Exception thrown against " + toString() + ": " + cause); } else { diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQNoConsumersException.java b/java/client/src/main/java/org/apache/qpid/client/AMQNoConsumersException.java index 277e3f7eaf..bec2958cb9 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQNoConsumersException.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQNoConsumersException.java @@ -28,7 +28,7 @@ public class AMQNoConsumersException extends AMQUndeliveredException { public AMQNoConsumersException(String msg, Object bounced) { - super(AMQConstant.NO_CONSUMERS.getCode(), msg, bounced); + super(AMQConstant.NO_CONSUMERS, msg, bounced); } diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQNoRouteException.java b/java/client/src/main/java/org/apache/qpid/client/AMQNoRouteException.java index 0e84ad75f2..6ea8413446 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQNoRouteException.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQNoRouteException.java @@ -28,7 +28,7 @@ public class AMQNoRouteException extends AMQUndeliveredException { public AMQNoRouteException(String msg, Object bounced) { - super(AMQConstant.NO_ROUTE.getCode(), msg, bounced); + super(AMQConstant.NO_ROUTE, msg, bounced); } 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 d011d02a91..6ef187286b 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 @@ -24,6 +24,7 @@ import org.apache.log4j.Logger; import org.apache.qpid.AMQChannelClosedException; import org.apache.qpid.AMQException; import org.apache.qpid.AMQInvalidSelectorException; +import org.apache.qpid.AMQInvalidRoutingKeyException; import org.apache.qpid.client.AMQNoConsumersException; import org.apache.qpid.client.AMQNoRouteException; import org.apache.qpid.client.protocol.AMQProtocolSession; @@ -52,34 +53,39 @@ public class ChannelCloseMethodHandler implements StateAwareMethodListener _logger.debug("ChannelClose method received"); ChannelCloseBody method = (ChannelCloseBody) evt.getMethod(); - int errorCode = method.replyCode; + AMQConstant errorCode = AMQConstant.getConstant(method.replyCode); AMQShortString reason = method.replyText; if (_logger.isDebugEnabled()) { _logger.debug("Channel close reply code: " + errorCode + ", reason: " + reason); } - // 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.getCode()) + if (errorCode != AMQConstant.REPLY_SUCCESS) { _logger.error("Channel close received with errorCode " + errorCode + ", and reason " + reason); - if (errorCode == AMQConstant.NO_CONSUMERS.getCode()) + if (errorCode == AMQConstant.NO_CONSUMERS) { throw new AMQNoConsumersException("Error: " + reason, null); } - else if (errorCode == AMQConstant.NO_ROUTE.getCode()) + else if (errorCode == AMQConstant.NO_ROUTE) { throw new AMQNoRouteException("Error: " + reason, null); } - else if (errorCode == AMQConstant.INVALID_SELECTOR.getCode()) + else if (errorCode == AMQConstant.INVALID_SELECTOR) { - _logger.info("Broker responded with Invalid Selector."); + _logger.debug("Broker responded with Invalid Selector."); throw new AMQInvalidSelectorException(String.valueOf(reason)); } + else if (errorCode == AMQConstant.INVALID_ROUTING_KEY) + { + _logger.debug("Broker responded with Invalid Routing Key."); + + throw new AMQInvalidRoutingKeyException(String.valueOf(reason)); + } else { throw new AMQChannelClosedException(errorCode, "Error: " + reason); 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 f928ab56eb..57d987712a 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 @@ -57,16 +57,16 @@ public class ConnectionCloseMethodHandler implements StateAwareMethodListener // does it matter //stateManager.changeState(AMQState.CONNECTION_CLOSING); - int errorCode = method.replyCode; + AMQConstant errorCode = AMQConstant.getConstant(method.replyCode); AMQShortString reason = method.replyText; // 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())); - if (errorCode != 200) + if (errorCode != AMQConstant.REPLY_SUCCESS) { - if(errorCode == AMQConstant.NOT_ALLOWED.getCode()) + if(errorCode == AMQConstant.NOT_ALLOWED) { _logger.info("Authentication Error:"+Thread.currentThread().getName()); diff --git a/java/client/src/main/java/org/apache/qpid/client/message/UnexpectedBodyReceivedException.java b/java/client/src/main/java/org/apache/qpid/client/message/UnexpectedBodyReceivedException.java index 51a9aa7226..21526ac6d2 100644 --- a/java/client/src/main/java/org/apache/qpid/client/message/UnexpectedBodyReceivedException.java +++ b/java/client/src/main/java/org/apache/qpid/client/message/UnexpectedBodyReceivedException.java @@ -22,6 +22,7 @@ package org.apache.qpid.client.message; import org.apache.log4j.Logger; import org.apache.qpid.AMQException; +import org.apache.qpid.protocol.AMQConstant; public class UnexpectedBodyReceivedException extends AMQException { @@ -36,7 +37,7 @@ public class UnexpectedBodyReceivedException extends AMQException super(logger, msg); } - public UnexpectedBodyReceivedException(Logger logger, int errorCode, String msg) + public UnexpectedBodyReceivedException(Logger logger, AMQConstant errorCode, String msg) { super(logger, errorCode, msg); } 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 d4d700966a..055109d3be 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 @@ -48,6 +48,7 @@ import org.apache.qpid.framing.ProtocolInitiation; import org.apache.qpid.framing.ProtocolVersionList; import org.apache.qpid.framing.VersionSpecificRegistry; import org.apache.qpid.protocol.AMQVersionAwareProtocolSession; +import org.apache.qpid.protocol.AMQConstant; /** * Wrapper for protocol session that provides type-safe access to session attributes. @@ -389,7 +390,7 @@ public class AMQProtocolSession implements ProtocolVersionList, AMQVersionAwareP * initiated the channel close, false if the channel close is just the server * responding to the client's earlier request to close the channel. */ - public boolean channelClosed(int channelId, int code, String text) throws AMQException + public boolean channelClosed(int channelId, AMQConstant code, String text) throws AMQException { final Integer chId = channelId; // if this is not a response to an earlier request to close the channel 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 9b214e88f9..f957df2c34 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 @@ -63,7 +63,7 @@ public class DurableSubscriptionTest extends TestCase Session session2 = con.createSession(false, AMQSession.NO_ACKNOWLEDGE); TopicSubscriber consumer2 = session2.createDurableSubscriber(topic, "MySubscription"); - con.start(); + con.start(); producer.send(session1.createTextMessage("A")); |