package org.jboss.mq.server.jmx;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import javax.jms.IllegalStateException;
import org.jboss.mq.MessageStatistics;
import org.jboss.mq.SpyTopic;
import org.jboss.mq.server.BasicQueue;
import org.jboss.mq.server.JMSDestinationManager;
import org.jboss.mq.server.JMSTopic;
import org.jboss.mq.server.MessageCounter;
public class Topic
extends DestinationMBeanSupport
implements TopicMBean
{
JMSTopic destination;
public String getTopicName()
{
return destinationName;
}
public void startService() throws Exception
{
if (destinationName == null || destinationName.length() == 0)
{
throw new IllegalStateException("TopicName was not set");
}
JMSDestinationManager jmsServer = (JMSDestinationManager)
server.getAttribute(jbossMQService, "Interceptor");
spyDest = new SpyTopic(destinationName);
destination = new JMSTopic(spyDest, null, jmsServer, parameters);
jmsServer.addDestination(destination);
if (jndiName == null) {
setJNDIName("topic/" + destinationName);
}
else {
setJNDIName(jndiName);
}
super.startService();
}
public void removeAllMessages() throws Exception
{
destination.removeAllMessages();
}
public int getAllMessageCount()
{
return destination.getAllMessageCount();
}
public int getDurableMessageCount()
{
return destination.getDurableMessageCount();
}
public int getNonDurableMessageCount()
{
return destination.getNonDurableMessageCount();
}
public int getAllSubscriptionsCount()
{
return destination.getAllSubscriptionsCount();
}
public int getDurableSubscriptionsCount()
{
return destination.getDurableSubscriptionsCount();
}
public int getNonDurableSubscriptionsCount()
{
return destination.getNonDurableSubscriptionsCount();
}
public List listAllSubscriptions()
{
return destination.getAllSubscriptions();
}
public List listDurableSubscriptions()
{
return destination.getDurableSubscriptions();
}
public List listNonDurableSubscriptions()
{
return destination.getNonDurableSubscriptions();
}
public List listMessages(String id) throws Exception
{
BasicQueue queue = findBasicQueue(id);
return Arrays.asList(queue.browse(null));
}
public List listMessages(String id, String selector) throws Exception
{
BasicQueue queue = findBasicQueue(id);
return Arrays.asList(queue.browse(selector));
}
public MessageCounter[] getMessageCounter()
{
return destination.getMessageCounter();
}
public MessageStatistics[] getMessageStatistics() throws Exception
{
return MessageCounter.getMessageStatistics(destination.getMessageCounter());
}
protected BasicQueue findBasicQueue(String id) throws Exception
{
List queues = destination.getAllQueues();
if (id == null)
throw new IllegalArgumentException("Null subscription id: " + help(queues));
for (Iterator i = queues.iterator(); i.hasNext();)
{
BasicQueue q = (BasicQueue) i.next();
if (q.getDescription().equals(id))
return q;
}
throw new IllegalArgumentException("Invalid subscription id: " + help(queues));
}
protected String help(List queues)
{
return "id must be one from the following list " + queues;
}
}