/*
* JBoss, Home of Professional Open Source
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.mq.server.jmx;
import java.util.List;
import javax.management.MBeanRegistration;
import javax.management.MBeanServer;
import javax.management.NotificationFilter;
import javax.management.NotificationListener;
import javax.management.ObjectName;
import org.jboss.jms.server.destination.QueueService;
import org.jboss.managed.api.ManagedOperation.Impact;
import org.jboss.managed.api.annotation.ManagementComponent;
import org.jboss.managed.api.annotation.ManagementObject;
import org.jboss.managed.api.annotation.ManagementOperation;
import org.jboss.managed.api.annotation.ManagementProperties;
import org.jboss.managed.api.annotation.ManagementProperty;
import org.jboss.managed.api.annotation.ViewUse;
import org.w3c.dom.Element;
/**
* Portability class that maps the mbean ops onto the
* org.jboss.jms.server.destination.QueueService.
*
* @author Scott.Stark@jboss.org
* @author Clebert.suconic@jboss.com
* @version $Revision: 85945 $
*/
@ManagementObject(componentType = @ManagementComponent(type = "JMSDestination", subtype = "Queue"), properties = ManagementProperties.EXPLICIT)
public class Queue implements MBeanRegistration, QueueMBean {
private QueueService delegate;
public Queue() {
delegate = new QueueService();
}
public Queue(boolean createProgramatically) {
delegate = new QueueService(createProgramatically);
}
public void addNotificationListener(NotificationListener listener,
NotificationFilter filter, Object handback) {
delegate.addNotificationListener(listener, filter, handback);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#create()
*/
@ManagementOperation(description = "Service lifecycle operation", impact = Impact.WriteOnly)
public void create() throws Exception {
delegate.create();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#destroy()
*/
@ManagementOperation(description = "Service lifecycle operation", impact = Impact.WriteOnly)
public void destroy() {
delegate.destroy();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getDownCacheSize()
*/
@ManagementProperty(use={ViewUse.CONFIGURATION}, description="The write-cache size, can only be set when queue is stopped")
public int getDownCacheSize() {
return delegate.getDownCacheSize();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getFullSize()
*/
@ManagementProperty(use={ViewUse.CONFIGURATION}, description="The in-memory message limit, can only be set when queue is stopped")
public int getFullSize() {
return delegate.getFullSize();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getJNDIName()
*/
@ManagementProperty(use={ViewUse.RUNTIME})
public String getJNDIName() {
return delegate.getJNDIName();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getMessageCount()
*/
@ManagementProperty(use={ViewUse.STATISTIC})
public int getMessageCount() throws Exception {
return delegate.getMessageCount();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getName()
*/
@ManagementProperty(use={ViewUse.RUNTIME})
public String getName() {
return delegate.getName();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getPageSize()
*/
@ManagementProperty(use={ViewUse.CONFIGURATION}, description="he paging size, can only be set when queue is stopped")
public int getPageSize() {
return delegate.getPageSize();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#getServerPeer()
*/
@ManagementProperty(use={ViewUse.RUNTIME})
public ObjectName getServerPeer() {
return delegate.getServerPeer();
}
public ObjectName getServiceName() {
return delegate.getServiceName();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#isCreatedProgrammatically()
*/
@ManagementProperty(use={ViewUse.STATISTIC})
public boolean isCreatedProgrammatically() {
return delegate.isCreatedProgrammatically();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#listMessages(java.lang.String)
*/
@ManagementOperation(description = "List all mesages with the selector", impact = Impact.ReadOnly)
public List listMessages(String arg0) throws Exception {
return delegate.listAllMessages(arg0);
}
@ManagementOperation(description = "List all mesages", impact = Impact.ReadOnly)
public List listAllMessages() throws Exception {
return delegate.listAllMessages();
}
@ManagementOperation(description = "List all durable mesages", impact = Impact.ReadOnly)
public List listDurableMessages() throws Exception
{
return delegate.listDurableMessages();
}
@ManagementOperation(description = "List all durable mesages using a selector", impact = Impact.ReadOnly)
public List listDurableMessages(String selector) throws Exception
{
return delegate.listDurableMessages(selector);
}
@ManagementOperation(description = "List all non durable mesages", impact = Impact.ReadOnly)
public List listNonDurableMessages() throws Exception
{
return delegate.listNonDurableMessages();
}
@ManagementOperation(description = "List all non durable mesages using a selector", impact = Impact.ReadOnly)
public List listNonDurableMessages(String selector) throws Exception
{
return delegate.listNonDurableMessages(selector);
}
@ManagementOperation(description = "Reset the message counter", impact = Impact.WriteOnly)
public void resetMessageCounter() throws Exception
{
delegate.resetMessageCounter();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#removeAllMessages()
*/
@ManagementOperation(description = "Remove all messages in the queue", impact = Impact.WriteOnly)
public void removeAllMessages() throws Exception {
delegate.removeAllMessages();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setDownCacheSize(int)
*/
public void setDownCacheSize(int arg0) {
delegate.setDownCacheSize(arg0);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setFullSize(int)
*/
public void setFullSize(int arg0) {
delegate.setFullSize(arg0);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setJNDIName(java.lang.String)
*/
public void setJNDIName(String arg0) throws Exception {
delegate.setJNDIName(arg0);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setPageSize(int)
*/
public void setPageSize(int arg0) {
delegate.setPageSize(arg0);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setSecurityConfig(org.w3c.dom.Element)
*/
public void setSecurityConfig(Element arg0) throws Exception {
delegate.setSecurityConfig(arg0);
}
public void setSecurityConf(Element arg0) throws Exception {
delegate.setSecurityConfig(arg0);
}
public void setSecurityManager(ObjectName arg0) {
// noop
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#setServerPeer(javax.management.ObjectName)
*/
public void setServerPeer(ObjectName arg0) {
delegate.setServerPeer(arg0);
}
public void setDestinationManager(ObjectName arg0) throws Exception {
ObjectName peer = new ObjectName("jboss.messaging:service=ServerPeer");
delegate.setServerPeer(peer);
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#start()
*/
@ManagementOperation(description = "Service lifecycle operation", impact = Impact.WriteOnly)
public void start() throws Exception {
delegate.start();
}
/*
* (non-Javadoc)
*
* @see org.jboss.mq.server.jmx.QueueMBean#stop()
*/
@ManagementOperation(description = "Service lifecycle operation", impact = Impact.WriteOnly)
public void stop() {
delegate.stop();
}
public void setMessageCounterHistoryDayLimit(int arg0) {
// noop
}
@ManagementProperty(use={ViewUse.CONFIGURATION})
public ObjectName getExpiryDestination()
{
return delegate.getExpiryQueue();
}
public void setExpiryDestination(ObjectName destination)
{
try
{
delegate.setExpiryQueue(destination);
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}
public String toString() {
return delegate.toString();
}
public void postDeregister() {
delegate.postDeregister();
}
public void postRegister(Boolean registrationDone) {
delegate.postRegister(registrationDone);
}
public void preDeregister() throws Exception {
delegate.preDeregister();
}
public ObjectName preRegister(MBeanServer server, ObjectName name)
throws Exception {
return delegate.preRegister(server, name);
}
}