diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java b/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java index e3c1952da8..006d65bf85 100644 --- a/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java @@ -79,7 +79,6 @@ import org.apache.activemq.network.NetworkConnector; import org.apache.activemq.network.jms.JmsConnector; import org.apache.activemq.proxy.ProxyConnector; import org.apache.activemq.security.MessageAuthorizationPolicy; -import org.apache.activemq.security.SecurityContext; import org.apache.activemq.selector.SelectorParser; import org.apache.activemq.store.PersistenceAdapter; import org.apache.activemq.store.PersistenceAdapterFactory; @@ -92,13 +91,7 @@ import org.apache.activemq.transport.TransportFactory; import org.apache.activemq.transport.TransportServer; import org.apache.activemq.transport.vm.VMTransportFactory; import org.apache.activemq.usage.SystemUsage; -import org.apache.activemq.util.DefaultIOExceptionHandler; -import org.apache.activemq.util.IOExceptionHandler; -import org.apache.activemq.util.IOExceptionSupport; -import org.apache.activemq.util.IOHelper; -import org.apache.activemq.util.JMXSupport; -import org.apache.activemq.util.ServiceStopper; -import org.apache.activemq.util.URISupport; +import org.apache.activemq.util.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** @@ -2017,25 +2010,7 @@ public class BrokerService implements Service { * configuring the broker at startup */ public ConnectionContext getAdminConnectionContext() throws Exception { - ConnectionContext adminConnectionContext = getBroker().getAdminConnectionContext(); - if (adminConnectionContext == null) { - adminConnectionContext = createAdminConnectionContext(); - getBroker().setAdminConnectionContext(adminConnectionContext); - } - return adminConnectionContext; - } - - /** - * Factory method to create the new administration connection context - * object. Note this method is here rather than inside a default broker - * implementation to ensure that the broker reference inside it is the outer - * most interceptor - */ - protected ConnectionContext createAdminConnectionContext() throws Exception { - ConnectionContext context = new ConnectionContext(); - context.setBroker(getBroker()); - context.setSecurityContext(SecurityContext.BROKER_SECURITY_CONTEXT); - return context; + return BrokerSupport.getConnectionContext(getBroker()); } protected void waitForSlave() { diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java index 3a9c3ef355..85822f00c6 100755 --- a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/BrokerView.java @@ -26,7 +26,6 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.management.ObjectName; import org.apache.activemq.ActiveMQConnectionMetaData; -import org.apache.activemq.broker.Broker; import org.apache.activemq.broker.BrokerService; import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.broker.TransportConnector; @@ -37,7 +36,7 @@ import org.apache.activemq.command.ConsumerId; import org.apache.activemq.command.ConsumerInfo; import org.apache.activemq.command.RemoveSubscriptionInfo; import org.apache.activemq.network.NetworkConnector; -import org.apache.activemq.security.SecurityContext; +import org.apache.activemq.util.BrokerSupport; /** * @version $Revision$ @@ -243,20 +242,20 @@ public class BrokerView implements BrokerViewMBean { } public void addTopic(String name) throws Exception { - broker.getContextBroker().addDestination(getConnectionContext(broker.getContextBroker()), new ActiveMQTopic(name),true); + broker.getContextBroker().addDestination(BrokerSupport.getConnectionContext(broker.getContextBroker()), new ActiveMQTopic(name),true); } public void addQueue(String name) throws Exception { - broker.getContextBroker().addDestination(getConnectionContext(broker.getContextBroker()), new ActiveMQQueue(name),true); + broker.getContextBroker().addDestination(BrokerSupport.getConnectionContext(broker.getContextBroker()), new ActiveMQQueue(name),true); } public void removeTopic(String name) throws Exception { - broker.getContextBroker().removeDestination(getConnectionContext(broker.getContextBroker()), new ActiveMQTopic(name), + broker.getContextBroker().removeDestination(BrokerSupport.getConnectionContext(broker.getContextBroker()), new ActiveMQTopic(name), 1000); } public void removeQueue(String name) throws Exception { - broker.getContextBroker().removeDestination(getConnectionContext(broker.getContextBroker()), new ActiveMQQueue(name), + broker.getContextBroker().removeDestination(BrokerSupport.getConnectionContext(broker.getContextBroker()), new ActiveMQQueue(name), 1000); } @@ -292,32 +291,6 @@ public class BrokerView implements BrokerViewMBean { broker.removeSubscription(context, info); } - /** - * Returns the broker's administration connection context used for - * configuring the broker at startup - */ - public static ConnectionContext getConnectionContext(Broker broker) { - ConnectionContext adminConnectionContext = broker.getAdminConnectionContext(); - if (adminConnectionContext == null) { - adminConnectionContext = createAdminConnectionContext(broker); - broker.setAdminConnectionContext(adminConnectionContext); - } - return adminConnectionContext; - } - - /** - * Factory method to create the new administration connection context - * object. Note this method is here rather than inside a default broker - * implementation to ensure that the broker reference inside it is the outer - * most interceptor - */ - protected static ConnectionContext createAdminConnectionContext(Broker broker) { - ConnectionContext context = new ConnectionContext(); - context.setBroker(broker); - context.setSecurityContext(SecurityContext.BROKER_SECURITY_CONTEXT); - return context; - } - // doc comment inherited from BrokerViewMBean public void reloadLog4jProperties() throws Throwable { diff --git a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java index 8844dc39ac..59909017fe 100644 --- a/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java +++ b/activemq-core/src/main/java/org/apache/activemq/broker/jmx/QueueView.java @@ -24,6 +24,7 @@ import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.broker.region.Queue; import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.Message; +import org.apache.activemq.util.BrokerSupport; /** * Provides a JMX Management view of a Queue. @@ -58,37 +59,37 @@ public class QueueView extends DestinationView implements QueueViewMBean { } public boolean copyMessageTo(String messageId, String destinationName) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).copyMessageTo(context, messageId, toDestination); } public int copyMatchingMessagesTo(String selector, String destinationName) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).copyMatchingMessagesTo(context, selector, toDestination); } public int copyMatchingMessagesTo(String selector, String destinationName, int maximumMessages) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).copyMatchingMessagesTo(context, selector, toDestination, maximumMessages); } public boolean moveMessageTo(String messageId, String destinationName) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).moveMessageTo(context, messageId, toDestination); } public int moveMatchingMessagesTo(String selector, String destinationName) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).moveMatchingMessagesTo(context, selector, toDestination); } public int moveMatchingMessagesTo(String selector, String destinationName, int maximumMessages) throws Exception { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); ActiveMQDestination toDestination = ActiveMQDestination.createDestination(destinationName, ActiveMQDestination.QUEUE_TYPE); return ((Queue)destination).moveMatchingMessagesTo(context, selector, toDestination, maximumMessages); } @@ -104,7 +105,7 @@ public class QueueView extends DestinationView implements QueueViewMBean { rc.getMessage().setRedeliveryCounter(0); ActiveMQDestination originalDestination = rc.getOriginalDestination(); if (originalDestination != null) { - ConnectionContext context = BrokerView.getConnectionContext(broker.getContextBroker()); + ConnectionContext context = BrokerSupport.getConnectionContext(broker.getContextBroker()); return queue.moveMessageTo(context, rc, originalDestination); } else { diff --git a/activemq-core/src/main/java/org/apache/activemq/util/BrokerSupport.java b/activemq-core/src/main/java/org/apache/activemq/util/BrokerSupport.java index 9d70c8d9c6..64a8d2db03 100644 --- a/activemq-core/src/main/java/org/apache/activemq/util/BrokerSupport.java +++ b/activemq-core/src/main/java/org/apache/activemq/util/BrokerSupport.java @@ -16,15 +16,17 @@ */ package org.apache.activemq.util; +import org.apache.activemq.broker.Broker; import org.apache.activemq.broker.ConnectionContext; import org.apache.activemq.broker.ProducerBrokerExchange; import org.apache.activemq.command.ActiveMQDestination; import org.apache.activemq.command.Message; import org.apache.activemq.command.ProducerInfo; +import org.apache.activemq.security.SecurityContext; import org.apache.activemq.state.ProducerState; /** - * Utility class for re-sending messages + * Utility class for broker operations * */ public final class BrokerSupport { @@ -68,4 +70,29 @@ public final class BrokerSupport { } } + /** + * Returns the broker's administration connection context used for + * configuring the broker at startup + */ + public static ConnectionContext getConnectionContext(Broker broker) { + ConnectionContext adminConnectionContext = broker.getAdminConnectionContext(); + if (adminConnectionContext == null) { + adminConnectionContext = createAdminConnectionContext(broker); + broker.setAdminConnectionContext(adminConnectionContext); + } + return adminConnectionContext; + } + + /** + * Factory method to create the new administration connection context + * object. Note this method is here rather than inside a default broker + * implementation to ensure that the broker reference inside it is the outer + * most interceptor + */ + protected static ConnectionContext createAdminConnectionContext(Broker broker) { + ConnectionContext context = new ConnectionContext(); + context.setBroker(broker); + context.setSecurityContext(SecurityContext.BROKER_SECURITY_CONTEXT); + return context; + } }