diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java index c62c72e589..92bab6707f 100644 --- a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/DestinationView.java @@ -13,11 +13,13 @@ */ package org.apache.activemq.broker.jmx; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.Map; import javax.jms.Connection; +import javax.jms.InvalidSelectorException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.management.openmbean.CompositeData; @@ -35,8 +37,11 @@ import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.ActiveMQMessage; import org.apache.activemq.command.ActiveMQTextMessage; import org.apache.activemq.command.Message; +import org.apache.activemq.filter.BooleanExpression; +import org.apache.activemq.filter.MessageEvaluationContext; +import org.apache.activemq.selector.SelectorParser; -public class DestinationView { +public class DestinationView implements DestinationViewMBean { protected final Destination destination; protected final ManagedRegionBroker broker; @@ -91,27 +96,80 @@ public class DestinationView { } public CompositeData[] browse() throws OpenDataException{ + try { + return browse(null); + } catch (InvalidSelectorException e) { + // should not happen. + throw new RuntimeException(e); + } + } + + public CompositeData[] browse(String selector) throws OpenDataException, InvalidSelectorException{ Message[] messages=destination.browse(); - CompositeData c[]=new CompositeData[messages.length]; - for(int i=0;i