diff options
Diffstat (limited to 'java')
4 files changed, 50 insertions, 24 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java b/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java index 4e8c5836e0..0dc702dcbc 100644 --- a/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java +++ b/java/client/src/main/java/org/apache/qpid/client/AMQDestination.java @@ -121,8 +121,6 @@ public abstract class AMQDestination implements Destination, Referenceable } } - - protected static DestSyntax defaultDestSyntax; protected DestSyntax _destSyntax; @@ -140,6 +138,7 @@ public abstract class AMQDestination implements Destination, Referenceable protected Node _sourceNode; protected Link _targetLink; protected Link _link; + // ----- / Fields required to support new address syntax ------- static @@ -390,7 +389,7 @@ public abstract class AMQDestination implements Destination, Referenceable { return _isExclusive; } - + public boolean isAutoDelete() { return _isAutoDelete; @@ -838,6 +837,8 @@ public abstract class AMQDestination implements Destination, Referenceable _delete = _addrHelper.getDelete() != null ? AddressOption.getOption(_addrHelper.getDelete()):AddressOption.NEVER; + + _browseOnly = _addrHelper.isBrowseOnly(); _addressType = _addrHelper.getTargetNodeType(); _targetNode = _addrHelper.getTargetNode(_addressType); 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 73987d8b75..5c6da08723 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 @@ -693,23 +693,7 @@ public abstract class BasicMessageConsumer<U> extends Closeable implements Messa { _logger.debug("Message is of type: " + jmsMessage.getClass().getName()); } - // synchronized (_closed) - - { - // if (!_closed.get()) - { - - //preDeliver(jmsMessage); - - notifyMessage(jmsMessage); - } - // else - // { - // _logger.error("MESSAGE REJECTING!"); - // _session.rejectMessage(jmsMessage, true); - // //_logger.error("MESSAGE JUST DROPPED!"); - // } - } + notifyMessage(jmsMessage); } catch (Exception e) { @@ -973,7 +957,7 @@ public abstract class BasicMessageConsumer<U> extends Closeable implements Messa public boolean isNoConsume() { - return _noConsume; + return _noConsume || _destination.isBrowseOnly() ; } public void rollback() diff --git a/java/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java b/java/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java index 50757931aa..12758c2d88 100644 --- a/java/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java +++ b/java/client/src/main/java/org/apache/qpid/client/messaging/address/AddressHelper.java @@ -56,7 +56,8 @@ public class AddressHelper public static final String TYPE = "type"; public static final String ALT_EXCHANGE = "alt-exchange"; public static final String BINDINGS = "bindings"; - public static final String BROWSE_ONLY = "browse"; + public static final String BROWSE = "browse"; + public static final String MODE = "mode"; public static final String CAPACITY = "capacity"; public static final String CAPACITY_SOURCE = "source"; public static final String CAPACITY_TARGET = "target"; @@ -112,8 +113,8 @@ public class AddressHelper public boolean isBrowseOnly() { - Boolean b = nodeProps.getBoolean(BROWSE_ONLY); - return b == null ? false : b ; + String mode = addressProps.getString(MODE); + return mode != null && mode.equals(BROWSE) ? true : false ; } public QpidQueueOptions getQpidQueueOptions(MapAccessor args) diff --git a/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java b/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java index 5bf2de836d..bd7f146a94 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java +++ b/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java @@ -608,6 +608,7 @@ public class AddressBasedDestinationTest extends QpidBrokerTestCase } /** + * Test Goal : Verify the default subjects used for each exchange type. * The default for amq.topic is "#" and for the rest it's "" */ public void testDefaultSubjects() throws Exception @@ -635,4 +636,43 @@ public class AddressBasedDestinationTest extends QpidBrokerTestCase "with '#' binding key should have received the message ", ((TextMessage)topicCons.receive(1000)).getText(),"1000"); } + + /** + * Test Goal : Verify that 'mode : browse' works as expected using a regular consumer. + * This indirectly tests ring queues as well. + */ + public void testBrowseMode() throws Exception + { + + Session ssn = _connection.createSession(false,Session.AUTO_ACKNOWLEDGE); + + String addr = "ADDR:my-ring-queue; {create: always, mode: browse, " + + "node: {x-bindings: [{exchange : 'amq.direct', key : test}], " + + "x-declare:{'qpid.policy_type':ring, 'qpid.max_count':2}}}"; + + Destination dest = ssn.createQueue(addr); + MessageConsumer browseCons = ssn.createConsumer(dest); + MessageProducer prod = ssn.createProducer(ssn.createQueue("ADDR:amq.direct/test")); + + prod.send(ssn.createTextMessage("Test1")); + prod.send(ssn.createTextMessage("Test2")); + + TextMessage msg = (TextMessage)browseCons.receive(1000); + assertEquals("Didn't receive the first message",msg.getText(),"Test1"); + + msg = (TextMessage)browseCons.receive(1000); + assertEquals("Didn't receive the first message",msg.getText(),"Test2"); + + browseCons.close(); + prod.send(ssn.createTextMessage("Test3")); + browseCons = ssn.createConsumer(dest); + + msg = (TextMessage)browseCons.receive(1000); + assertEquals("Should receive the second message again",msg.getText(),"Test2"); + + msg = (TextMessage)browseCons.receive(1000); + assertEquals("Should receive the third message since it's a ring queue",msg.getText(),"Test3"); + + assertNull("Should not receive anymore messages",browseCons.receive(500)); + } } |
