You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by de...@apache.org on 2011/07/21 12:19:44 UTC
svn commit: r1149097 -
/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java
Author: dejanb
Date: Thu Jul 21 10:19:42 2011
New Revision: 1149097
URL: http://svn.apache.org/viewvc?rev=1149097&view=rev
Log:
https://issues.apache.org/jira/browse/AMQ-3410 - custom factory for shell commands
Modified:
activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java
Modified: activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java?rev=1149097&r1=1149096&r2=1149097&view=diff
==============================================================================
--- activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java (original)
+++ activemq/trunk/activemq-console/src/main/java/org/apache/activemq/console/command/AbstractAmqCommand.java Thu Jul 21 10:19:42 2011
@@ -16,6 +16,7 @@
*/
package org.apache.activemq.console.command;
+import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
@@ -31,6 +32,7 @@ import org.apache.activemq.ActiveMQConne
public abstract class AbstractAmqCommand extends AbstractCommand {
private URI brokerUrl;
private ConnectionFactory factory;
+ private String factoryClassString;
private final List<Connection> connections = new ArrayList<Connection>();
/**
@@ -48,11 +50,7 @@ public abstract class AbstractAmqCommand
return null;
}
- if (factory == null) {
- factory = new ActiveMQConnectionFactory(getBrokerUrl());
- }
-
- Connection conn = factory.createConnection();
+ Connection conn = getFactory().createConnection();
connections.add(conn);
return conn;
@@ -75,11 +73,7 @@ public abstract class AbstractAmqCommand
return null;
}
- if (factory == null) {
- factory = new ActiveMQConnectionFactory(getBrokerUrl());
- }
-
- Connection conn = factory.createConnection(username, password);
+ Connection conn = getFactory().createConnection(username, password);
connections.add(conn);
conn.start();
@@ -134,6 +128,8 @@ public abstract class AbstractAmqCommand
tokens.clear();
return;
}
+ } else if (token.equals("--factory")) {
+ factoryClassString = (String) tokens.remove(0);
} else {
// Let the super class handle the option
super.handleOption(token, tokens);
@@ -167,4 +163,49 @@ public abstract class AbstractAmqCommand
protected URI getBrokerUrl() {
return brokerUrl;
}
+
+ /**
+ * @return the factory
+ */
+ @SuppressWarnings("unchecked")
+ public ConnectionFactory getFactory() {
+ if (factory == null && factoryClassString != null) {
+ try {
+ Class klass = Class.forName(factoryClassString);
+ if (klass.isInstance(ConnectionFactory.class)) {
+ Class<ConnectionFactory> factoryClass = (Class<ConnectionFactory>) klass;
+ factory = factoryClass.getConstructor(URI.class)
+ .newInstance(getBrokerUrl());
+ }
+ } catch (IllegalArgumentException e) {
+ e.printStackTrace();
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+
+ // Preserve the fallback case, if someone did specify a bad class, let them realize when things don't work.
+ if (factory == null) {
+ factory = new ActiveMQConnectionFactory(getBrokerUrl());
+ }
+
+ return factory;
+ }
+
+ /**
+ * @param factory the factory to set
+ */
+ public void setFactory(ConnectionFactory factory) {
+ this.factory = factory;
+ }
}