summaryrefslogtreecommitdiff
path: root/java/management/tools/qpid-cli/src/org
diff options
context:
space:
mode:
authorLahiru Gunathilake <lahiru@apache.org>2008-10-07 09:07:34 +0000
committerLahiru Gunathilake <lahiru@apache.org>2008-10-07 09:07:34 +0000
commitcc4c4be4b6b7c4a4fdfe22de9d9f40974f7d6971 (patch)
tree1a713368ba8ab8ce222e23fe1760d1e01ea2d559 /java/management/tools/qpid-cli/src/org
parentcdd462bf0c1d899f46d2b72615408f183e6a952e (diff)
downloadqpid-python-cc4c4be4b6b7c4a4fdfe22de9d9f40974f7d6971.tar.gz
committing qpid-cli for the first time.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@702402 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/management/tools/qpid-cli/src/org')
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/Command.java62
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/CommandConstants.java50
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/CommandExecusionEngine.java88
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/CommandLineInterpreter.java194
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/Connector.java76
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/ConnectorFactory.java72
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/ReportGenerator.java180
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Command.java113
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java228
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandhelp.java73
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandinfo.java259
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandlist.java296
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandmove.java294
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandview.java276
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandviewcontent.java284
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/AllObjects.java44
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ConnectionObject.java54
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ExchangeObject.java53
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ObjectNames.java477
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/QueueObject.java86
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/UserManagementObject.java45
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/VirtualHostObject.java53
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOption.java112
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionConstants.java53
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionParser.java218
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfigProperty.java47
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfiguration.java148
-rw-r--r--java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXinfo.java72
28 files changed, 4007 insertions, 0 deletions
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/Command.java b/java/management/tools/qpid-cli/src/org/apache/qpid/Command.java
new file mode 100644
index 0000000000..6845361192
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/Command.java
@@ -0,0 +1,62 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+import org.apache.qpid.utils.CommandLineOption;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: May 29, 2008
+ * Time: 9:21:46 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public interface
+ Command {
+
+ public static String commandname = null;
+ public static CommandLineOption options = null;
+
+ void execute();
+
+ void printusage();
+
+ void optionchecker();
+
+ void optionvaluechecker();
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/CommandConstants.java b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandConstants.java
new file mode 100644
index 0000000000..9285501693
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandConstants.java
@@ -0,0 +1,50 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+public interface CommandConstants {
+
+ String LIST_COMMAND = "list";
+ String INFO_COMMAND = "info";
+ String HELP_COMMAND = "help";
+ String DELETE_COMMAND = "delete";
+ String MOVE_COMMAND = "move";
+ String VIEW_COMMAND = "view";
+ String VIEWCONTENT_COMMAND = "viewcontent";
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/CommandExecusionEngine.java b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandExecusionEngine.java
new file mode 100644
index 0000000000..ed54883759
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandExecusionEngine.java
@@ -0,0 +1,88 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+import org.apache.qpid.utils.CommandLineOptionParser;
+import org.apache.qpid.utils.JMXinfo;
+import org.apache.qpid.commands.*;
+import org.apache.qpid.commands.Command;
+
+
+public class CommandExecusionEngine {
+ private Command currentcommand = null;
+ private String commandname = null;
+ private JMXinfo info = null;
+
+ public CommandExecusionEngine(JMXinfo info) {
+ this.info = info;
+ this.commandname = info.getCommandLineOptionParser().getcommandname();
+ }
+
+ public boolean CommandSelector() {
+
+ if (CommandConstants.INFO_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandinfo(info, this.commandname);
+ else if (CommandConstants.LIST_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandlist(info, this.commandname);
+ else if (CommandConstants.HELP_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandhelp(info, this.commandname);
+ else if (CommandConstants.DELETE_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commanddelete(info, this.commandname);
+ else if (CommandConstants.MOVE_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandmove(info, this.commandname);
+ else if (CommandConstants.VIEW_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandview(info, this.commandname);
+ else if (CommandConstants.VIEWCONTENT_COMMAND.equalsIgnoreCase(this.commandname))
+ currentcommand = new Commandviewcontent(info, this.commandname);
+ else {
+ usage();
+ return false;
+ }
+ return true;
+
+
+ }
+
+ public void runcommand() {
+ currentcommand.execute();
+ }
+
+ public void usage() {
+ System.out.println(commandname + ":Command not found");
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/CommandLineInterpreter.java b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandLineInterpreter.java
new file mode 100644
index 0000000000..e9073c79ce
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/CommandLineInterpreter.java
@@ -0,0 +1,194 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid;
+
+import org.apache.qpid.utils.CommandLineOptionParser;
+import org.apache.qpid.utils.JMXConfiguration;
+import org.apache.qpid.utils.JMXinfo;
+
+import javax.management.MBeanServerConnection;
+import javax.management.remote.JMXConnector;
+import javax.naming.ServiceUnavailableException;
+import java.io.PrintWriter;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.FileInputStream;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.StringTokenizer;
+import java.util.Properties;
+import java.rmi.ConnectException;
+
+import jline.ConsoleReader;
+import jline.ArgumentCompletor;
+import jline.SimpleCompletor;
+
+
+public class CommandLineInterpreter {
+ public static void main(String[] args) {
+ Connector conn = null;
+ try {
+ // Create an RMI connector client and
+ // connect it to the RMI connector server
+
+ /*checking the commandline options and
+ parse them in to config method */
+ JMXConnector jmxc = null;
+ MBeanServerConnection mbsc = null;
+ ConsoleReader reader = new ConsoleReader();
+ reader.setBellEnabled(false);
+ CommandLineOptionParser commandlineoptionparser = null;
+
+ if ((args == null) || (args.length) == 0) {
+ Usage();
+ }
+ /* here special constructor is calling, when parsing options,in here first option value is starting from minus sign
+ so this is handle by a special constructor */
+ else {
+ if (args[0].startsWith("-")) {
+ commandlineoptionparser = new CommandLineOptionParser(args, args[0]); // if user specify any argument with the qpid-cli script
+ }
+ }
+
+ /* Connecting with the broker */
+// commandlineoptionparser = new CommandLineOptionParser(args);
+// JMXConfiguration config = new JMXConfiguration(commandlineoptionparser.getAlloptions());
+ try {
+ if (commandlineoptionparser == null)
+ commandlineoptionparser = new CommandLineOptionParser(args);
+
+ JMXConfiguration config = new JMXConfiguration(commandlineoptionparser.getAlloptions());
+ conn = ConnectorFactory.getConnector(config.gethostname(), config.getport());
+ jmxc = conn.getConnector();
+ mbsc = conn.getMBeanServerConnection();
+ if (config.checkoptionsetting("r", commandlineoptionparser.getAlloptions())) {
+ JMXinfo info = new JMXinfo(jmxc, commandlineoptionparser, mbsc);
+ ReportGenerator reportgen = new ReportGenerator(config.optionchecker("r", commandlineoptionparser.getAlloptions()), info);
+ reportgen.loadproperties();
+ reportgen.run();
+ }
+ /* This implementation is for the people who are using the interactive
+ mode for one shot this run the user given command and exit */
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].compareTo("list") == 0 || args[i].compareTo("info") == 0 || args[i].compareTo("view") == 0 || args[i].compareTo("viewcontent") == 0
+ || args[i].compareTo("delete") == 0 || args[i].compareTo("move") == 0) {
+ oneshotmode(args,commandlineoptionparser,jmxc,mbsc);
+
+ return;
+ }
+ }
+ } catch (Exception ex) {
+ connectionrefuse();
+ return;
+ }
+ /* In this point connection has been established */
+ String line;
+ String[] command;
+
+ /* prividing GNU readline features using Jline library */
+ //String list = "list";
+ PrintWriter out = new PrintWriter(System.out);
+ reader.addCompletor(new ArgumentCompletor(
+ new SimpleCompletor(new String[]{"list", "info", "exit", "quit", "delete", "move", "view", "viewcontent", "queue", "exchange", "connection", "usermanagement", "virtualhost"})));
+ while ((line = reader.readLine("qpid-admin-$ ")) != null) {
+ out.flush();
+ if (removeSpaces(line).equalsIgnoreCase("quit") || removeSpaces(line).equalsIgnoreCase("exit"))
+ break;
+ else if (line.length() == 0)
+ continue;
+ else {
+ command = line.split("\\s+");
+ commandlineoptionparser = new CommandLineOptionParser(command);
+ JMXinfo info = new JMXinfo(jmxc, commandlineoptionparser, mbsc);
+ CommandExecusionEngine engine = new CommandExecusionEngine(info);
+ if (engine.CommandSelector())
+ engine.runcommand();
+ }
+ }
+ conn.getConnector().close();
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private static void Usage() {
+ System.out.println("Connecting to localhost Qpid java broker...");
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+ private static void connectionrefuse() {
+ System.out.println("Cannot connect with the broker in given host with given port");
+ System.out.println("Please check the host name and the port given");
+ }
+
+ private static void commandlineerror() {
+ System.out.println("Please run the script again and try to connect to broker again");
+ }
+ public static String[] oneshotmode(String[] args,CommandLineOptionParser commandlineoptionparser,JMXConnector jmxc,MBeanServerConnection mbsc)
+ {
+ int check = 0;
+ String [] temp;
+ for (int i = 0; i < args.length; i++) {
+
+ if (args[i].compareTo("-h") == 0)
+ check++;
+ else if (args[i].compareTo("-p") == 0)
+ check++;
+ }
+ for (int i = 0; i < (args.length - 2 * check); i++) { // mulitply by 2 because have to remove the option letter with the option value//
+ args[i] = args[i + check * 2];
+ }
+
+ commandlineoptionparser = new CommandLineOptionParser(args); //change the args string array which works as interactive mode//
+ JMXinfo info = new JMXinfo(jmxc, commandlineoptionparser, mbsc);
+ CommandExecusionEngine engine = new CommandExecusionEngine(info);
+ if (engine.CommandSelector())
+ engine.runcommand();
+ return args;
+
+ }
+}
+
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/Connector.java b/java/management/tools/qpid-cli/src/org/apache/qpid/Connector.java
new file mode 100644
index 0000000000..d3357e31b7
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/Connector.java
@@ -0,0 +1,76 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+import javax.management.MBeanServerConnection;
+import javax.management.remote.JMXConnector;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnectorFactory;
+import java.io.IOException;
+
+
+public class Connector {
+ private JMXServiceURL url = null;
+ private JMXConnector jmxc = null;
+ private MBeanServerConnection mbsc = null;
+
+
+ public Connector(JMXServiceURL url, JMXConnector jmxc, MBeanServerConnection mbsc) {
+
+
+ this.url = url;
+ this.jmxc = jmxc;
+ this.mbsc = mbsc;
+
+
+ }
+
+ public JMXServiceURL getURL() {
+ return url;
+ }
+
+ public JMXConnector getConnector() {
+ return jmxc;
+ }
+
+ public MBeanServerConnection getMBeanServerConnection() {
+ return mbsc;
+ }
+
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/ConnectorFactory.java b/java/management/tools/qpid-cli/src/org/apache/qpid/ConnectorFactory.java
new file mode 100644
index 0000000000..6c0bacf3ac
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/ConnectorFactory.java
@@ -0,0 +1,72 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+ /*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+import javax.management.remote.JMXConnectorFactory;
+import javax.management.remote.JMXServiceURL;
+import javax.management.remote.JMXConnector;
+import javax.management.MBeanServerConnection;
+import java.io.IOException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jul 3, 2008
+ * Time: 10:51:28 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ConnectorFactory {
+
+ public static Connector getConnector(String host, String port) {
+
+ String url_string = "service:jmx:rmi:///jndi/rmi://" + host + ":" + port + "/jmxrmi";
+ JMXServiceURL url;
+ JMXConnector jmxc;
+ MBeanServerConnection mbsc;
+ try {
+ url = new JMXServiceURL(url_string);
+ jmxc = JMXConnectorFactory.connect(url, null);
+ mbsc = jmxc.getMBeanServerConnection();
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ return null; //To change body of catch statement use File | Settings | File Templates.
+ }
+ return new Connector(url, jmxc, mbsc);
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/ReportGenerator.java b/java/management/tools/qpid-cli/src/org/apache/qpid/ReportGenerator.java
new file mode 100644
index 0000000000..0a63d73a98
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/ReportGenerator.java
@@ -0,0 +1,180 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid;
+
+import org.apache.qpid.commands.objects.*;
+import org.apache.qpid.utils.JMXinfo;
+
+import javax.management.MBeanServerConnection;
+import java.util.*;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Aug 12, 2008
+ * Time: 4:03:21 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ReportGenerator implements Runnable {
+
+ String[] propertyname = {"object", "column", "filter.name", "filter.virtualhost", "output", "seperator", "interval"};
+ String[] propertyvalue = null;
+ String propertyfilepath = null;
+ String[] columnvalue = null;
+ List<String> columns = null;
+ Properties props = null;
+ JMXinfo info = null;
+ int interval = 10;
+
+ public void run() {
+ for (; ;) // creating infinite loop
+ {
+ generatereport();
+ try {
+ Thread.sleep(this.interval * 60000);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ public ReportGenerator(String propfile, JMXinfo info) {
+ this.propertyfilepath = propfile;
+ props = new Properties();
+ propertyvalue = new String[propertyname.length];
+ this.info = info;
+ columns = new ArrayList<String>();
+ }
+
+ public void loadproperties() // get all the property file values and set the columen values//
+ {
+ try {
+
+ props.load(new FileInputStream(this.propertyfilepath));
+ for (int i = 0; i < propertyname.length; i++) {
+ propertyvalue[i] = props.getProperty(propertyname[i]);
+ }
+ this.setcolumnvalues();
+ this.setinterval();
+ }
+
+ //catch exception in case properties file does not exist
+
+ catch (IOException e) {
+ System.out.println("Oooops Give property file is not exist");
+ }
+ }
+
+ public void generatereport() {
+ this.listobjects(propertyvalue[0]);
+ }
+
+ private void setcolumnvalues() {
+ columnvalue = propertyvalue[1].split(",");
+ for (int i = 0; i < columnvalue.length; i++) {
+ columns.add(columnvalue[i]);
+ }
+ }
+
+ private void setinterval() {
+ this.interval = (new Integer(propertyvalue[6])).intValue();
+ }
+
+ private void listobjects(String option_value) {
+ /*pring usage if use is not give the correct option letter or no options */
+ if (option_value == null) {
+// System.out.println("testing");
+ return;
+ }
+ MBeanServerConnection mbsc = info.getmbserverconnector();
+ Set set = null;
+ ObjectNames objname = null;
+
+ try {
+ if (option_value.compareToIgnoreCase("queue") == 0 || option_value.compareToIgnoreCase("queues") == 0) {
+ objname = new QueueObject(mbsc);
+
+ } else
+ if (option_value.compareToIgnoreCase("Virtualhosts") == 0 || option_value.compareToIgnoreCase("Virtualhost") == 0) {
+ objname = new VirtualHostObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Exchange") == 0 || option_value.compareToIgnoreCase("Exchanges") == 0) {
+ objname = new ExchangeObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Connection") == 0 || option_value.compareToIgnoreCase("Connections") == 0) {
+ objname = new ConnectionObject(mbsc);
+// this.name = option_value;
+ } else if (option_value.compareToIgnoreCase("all") == 0) {
+ objname = new AllObjects(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Usermanagement") == 0 || option_value.compareToIgnoreCase("Usermanagmenets") == 0) {
+ objname = new UserManagementObject(mbsc);
+// this.name = option_value;
+ } else {
+ printusage();
+ echo("Wrong objectName");
+ return;
+ }
+ objname.setQueryString(this.propertyvalue[0], this.propertyvalue[2], this.propertyvalue[3]);
+ objname.returnObjects();
+ if (objname.getSet().size() != 0) {
+ objname.reportgenerator(this.propertyvalue[4], this.propertyvalue[5], columns);
+ } else {
+ printusage();
+ }
+ }
+ catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ }
+
+ public void echo(String str) {
+ System.out.println(str);
+ }
+
+ public void printusage() {
+ System.out.println("Wrong option or wrong option value");
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Command.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Command.java
new file mode 100644
index 0000000000..02c50e37e4
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Command.java
@@ -0,0 +1,113 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+
+import org.apache.qpid.utils.CommandLineOptionParser;
+import org.apache.qpid.utils.JMXinfo;
+import org.apache.qpid.utils.CommandLineOption;
+
+import javax.management.remote.JMXConnector;
+import javax.management.MBeanServerConnection;
+import java.util.Map;
+
+
+public class Command {
+ public JMXinfo info = null;
+ public String commandname = null;
+
+
+ public Command(JMXinfo info, String name) {
+ this.info = info;
+ this.commandname = name;
+ }
+
+ public Command() {
+
+ }
+
+ public void execute() {
+
+
+ }
+
+ public void printusage() {
+ }
+
+
+ public String optionchecker(String option_letter) {
+ Map map = info.getCommandLineOptionParser().getAlloptions();
+ if (map == null)
+ return null;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if (option == null)
+ return null;
+ String value = option.getOptionValue();
+ return value;
+ }
+
+ public boolean checkoptionsetting(String option_letter) {
+ Map map = info.getCommandLineOptionParser().getAlloptions();
+ if (map == null)
+ return false;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if (option == null)
+ return false;
+ String value = option.getOptionType();
+
+ if (value != null)
+ return true;
+ else
+ return false;
+ }
+
+ public void optionvaluechecker() {
+
+ }
+
+ public void echo(String str) {
+ System.out.println(str);
+ }
+
+ public void unrecognizeoption() {
+ echo("list: Unrecognized option");
+ echo("Try `" + this.commandname + " --help` for more information");
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java
new file mode 100644
index 0000000000..eb24012405
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commanddelete.java
@@ -0,0 +1,228 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.qpid.commands;
+
+import org.apache.qpid.utils.JMXinfo;
+import org.apache.qpid.commands.objects.*;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.StringTokenizer;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Aug 6, 2008
+ * Time: 5:34:51 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Commanddelete extends Command {
+ private String object;
+ private String name;
+ private String vhost;
+ private int number = 0;
+ private QueueObject objname;
+ private MBeanServerConnection mbsc;
+ private String method1, method2;
+ private ObjectName queue;
+
+ public Commanddelete(JMXinfo info, String name) {
+ super(info, name);
+ this.mbsc = info.getmbserverconnector();
+ this.objname = new QueueObject(mbsc);
+ this.method1 = "deleteMessageFromTop";
+ this.method2 = "clearQueue";
+
+ }
+
+ public void deletemessages() {
+ Set set = null;
+ objname.setQueryString(this.object, this.name, this.vhost);
+ set = objname.returnObjects();
+
+ if (objname.getSet().size() != 0) {
+ Iterator it = set.iterator();
+ this.queue = (ObjectName) it.next();
+ try {
+ if (this.number == 0) {
+ echo("");
+ System.out.print("Do you want to delete all the messages from the Queue [Y/N] :");
+ InputStreamReader isr = new InputStreamReader(System.in);
+ BufferedReader br = new BufferedReader(isr);
+ String s = br.readLine();
+ echo(s);
+ if (s.compareToIgnoreCase("y") == 0)
+ this.mbsc.invoke(queue, this.method2, null, null);
+ else
+ return;
+ } else if (objname.getmessagecount(this.queue) < this.number) {
+ echo("Given number is Greater than the Queue Depth");
+ return;
+ } else {
+ for (int i = 0; i < this.number; i++) {
+ this.mbsc.invoke(queue, this.method1, null, null);
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ } else {
+ if (isname()) {
+
+ echo("The Queue you have specified is not in the current broker");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ if (object.compareToIgnoreCase("queue") == 0)
+ setobject(object);
+ else {
+ unrecognizeoption();
+ echo("This command is only applicable for delete command so please start with queue");
+ }
+ if (checkoptionsetting("name") || checkoptionsetting("n")) {
+ String name = optionchecker("name");
+ if (name == null)
+ name = optionchecker("n");
+
+ setname(name);
+ }
+ if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) {
+ String vhost = optionchecker("virtualhost");
+ if (vhost == null)
+ vhost = optionchecker("v");
+ setvhost(vhost);
+ }
+ if (checkoptionsetting("top") || checkoptionsetting("t")) {
+ String number = optionchecker("top");
+ if (number == null)
+ number = optionchecker("t");
+
+ setnumber(removeSpaces(number));
+ }
+ this.deletemessages();
+ } else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:delete [OPTION] ... [OBJECT TYPE]...\n");
+ echo("Delete the top most messages from the given queue object\n");
+ echo("To specify the desired queue you have to give the virtualhost name and the queue name with following commands\n");
+ echo("Where possible options include:\n");
+ echo(" -v --virtualhost Give the virtuallhost name of the desired queue");
+ echo(" -n --name Give the queue name of the desired queue you want to do the delete operation");
+ echo(" -t --top Give how many number of messages you want to delete from the top (Default = all the messages will be deleted");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+
+ private void setname(String name) {
+ this.name = name;
+ }
+
+ private boolean isname() {
+ if (this.name == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private void setvhost(String vhost) {
+ this.vhost = vhost;
+ }
+
+ public String getvhost() {
+ return this.vhost;
+ }
+
+ public String getname() {
+ return this.name;
+ }
+
+ private void setnumber(String number) {
+ Integer i = new Integer(number);
+ this.number = i.intValue();
+ }
+
+ public int getnumber() {
+ return this.number;
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandhelp.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandhelp.java
new file mode 100644
index 0000000000..962b606c12
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandhelp.java
@@ -0,0 +1,73 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+import org.apache.qpid.utils.JMXinfo;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jul 6, 2008
+ * Time: 5:55:28 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Commandhelp extends Command {
+ public Commandhelp(JMXinfo info, String name) {
+ super(info, name);
+ }
+
+ public void execute() {
+ displayhelp();
+ }
+
+ private void displayhelp() {
+ echo("");
+ echo("Current version of qpid CLI is supporting following commands");
+ echo("");
+ echo("[list] This command is listing limited information about a given type of object");
+ echo(" For more information about list command run `list --help`");
+ echo("[info] This command is listing All the information about a given type of object");
+ echo(" For more information about list command run `info --help`");
+
+ echo("");
+ echo("[exit] This command is disconnect the connection with the Qpid Java broker and go back to normal propmt");
+ echo("[quit] This command is disconnect the connection with the Qpid Java broker and go back to normal propmt");
+ echo("");
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandinfo.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandinfo.java
new file mode 100644
index 0000000000..51cbb2b929
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandinfo.java
@@ -0,0 +1,259 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+
+import org.apache.qpid.utils.CommandLineOptionParser;
+import org.apache.qpid.utils.JMXinfo;
+import org.apache.qpid.commands.objects.*;
+
+import javax.management.MBeanServerConnection;
+import java.util.Set;
+
+
+public class Commandinfo extends Command {
+ private String object = null;
+ private String name = null;
+ private String virtualhost = null;
+ private String outputformat = null;
+ private String seperator = ",";
+
+ public Commandinfo(JMXinfo info, String name) {
+
+ super(info, name);
+
+ }
+
+ private void listobjects(String option_value) {
+ /*pring usage if use is not give the correct option letter or no options */
+ if (option_value == null) {
+// System.out.println("testing");
+ printusage();
+ return;
+ }
+ MBeanServerConnection mbsc = info.getmbserverconnector();
+ Set set = null;
+ ObjectNames objname = null;
+
+ try {
+ if (option_value.compareToIgnoreCase("queue") == 0 || option_value.compareToIgnoreCase("queues") == 0) {
+ objname = new QueueObject(mbsc);
+
+ } else
+ if (option_value.compareToIgnoreCase("Virtualhosts") == 0 || option_value.compareToIgnoreCase("Virtualhost") == 0) {
+ objname = new VirtualHostObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Exchange") == 0 || option_value.compareToIgnoreCase("Exchanges") == 0) {
+ objname = new ExchangeObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Connection") == 0 || option_value.compareToIgnoreCase("Connections") == 0) {
+ objname = new ConnectionObject(mbsc);
+// this.name = option_value;
+ } else if (option_value.compareToIgnoreCase("all") == 0) {
+ objname = new AllObjects(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Usermanagement") == 0 || option_value.compareToIgnoreCase("Usermanagmenets") == 0) {
+ objname = new UserManagementObject(mbsc);
+// this.name = option_value;
+ } else {
+ printusage();
+ echo("Wrong objectName");
+ return;
+ }
+ objname.setQueryString(this.object, this.name, this.virtualhost);
+ objname.returnObjects();
+ if (objname.getSet().size() != 0) {
+ objname.displayinfo(this.outputformat, this.seperator);
+
+ } else {
+ if (isname()) {
+
+ echo("You might quering wrong " + this.object + " name with --name or -n option ");
+ echo("");
+ echo(this.object + "Type Objects might not in the broker currently");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+ if (checkoptionsetting("output")) {
+ setoutputformat(optionchecker("output"));
+ if (checkoptionsetting("separator"))
+ setseperator(optionchecker("separator"));
+ }
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ setobject(object);
+ if (checkoptionsetting("name") || checkoptionsetting("n")) {
+ String name = optionchecker("name");
+ if (name == null)
+ name = optionchecker("n");
+
+ setname(name);
+ }
+ if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) {
+ String vhost = optionchecker("virtualhost");
+ if (vhost == null)
+ vhost = optionchecker("v");
+ setvirtualhost(vhost);
+ }
+ listobjects(this.object);
+ } else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:info [OPTION] ... [OBJECT TYPE]...\n");
+ echo("Give ALL the information about the given object\n");
+ echo("Where possible options include:\n");
+ echo(" -o --object type of objects which you want to list\n");
+ echo(" ex: < list -o queue > : lists all the queues created in the java broker\n");
+ echo(" For now list command is supporting following object typse \n");
+ echo(" Queue Connection VirtualHost UserMangement Exchange");
+ echo(" Or You can specify object type by giving it at the beginning rather giving ");
+ echo(" it as a argument");
+ echo(" Ex:< queue info > this command is equal to <info -o queue> command \n");
+ echo(" -v --virtualhost After specifying the object type you can filter output with this option");
+ echo(" list objects with the given virtualhost which will help to find identical");
+ echo(" queue objects with -n option");
+ echo(" ex: queue info -v developement");
+ echo(" -output Specify which output format you want to get the ouput");
+ echo(" Although the option is there current version supports only for CSV output format");
+ echo(" -separator This option use with output option to specify which separator you want to get the CSV output (default seperator is comma");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+ echo(" -n --name After specifying what type of objects you want to monitor you can filter");
+ echo(" the output using -n option by specifying the name of the object you want");
+ echo(" to monitor exactly");
+ echo(" ex: <queue info -n ping> : Give all the information about queue objects ");
+ echo(" having queue name of ping\n");
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ private void setname(String name) {
+ this.name = name;
+ }
+
+ private boolean isname() {
+ if (this.name == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private void setvirtualhost(String vhost) {
+ this.virtualhost = vhost;
+ }
+
+ public String getvirtualhost() {
+ return this.virtualhost;
+ }
+
+ private void setoutputformat(String outputformat) {
+ this.outputformat = outputformat;
+ }
+
+ private void setseperator(String seperator) {
+ this.seperator = seperator;
+ }
+
+ private boolean isseperator() {
+ if (this.seperator == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private boolean isoutputformat() {
+ if (this.outputformat == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ public String getname() {
+ return this.name;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+
+ /*
+ public String optionchecker(String option_letter) {
+ Map map = info.getCommandLineOptionParser().getAlloptions();
+ if(map == null)
+ return null;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if(option == null)
+ return null;
+ String value = option.getOptionValue();
+ return value;
+
+
+ }
+ */
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandlist.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandlist.java
new file mode 100644
index 0000000000..856dfcf0f2
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandlist.java
@@ -0,0 +1,296 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+import org.apache.qpid.utils.JMXinfo;
+import org.apache.qpid.utils.CommandLineOptionParser;
+import org.apache.qpid.utils.CommandLineOptionConstants;
+import org.apache.qpid.utils.CommandLineOption;
+import org.apache.qpid.commands.objects.*;
+
+import javax.management.ObjectName;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServerConnection;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.Map;
+
+
+public class Commandlist extends Command {
+
+ private String object;
+ private String name;
+ private String vhost;
+ private String outputformat = null;
+ private String seperator = ","; //this variable is assigning if -n option is used otherwise this is null
+
+ public Commandlist(JMXinfo info, String name) {
+ super(info, name);
+
+ }
+
+ private void listobjects(String option_value) {
+ /*pring usage if use is not give the correct option letter or no options */
+ if (option_value == null) {
+// System.out.println("testing");
+ printusage();
+ return;
+ }
+ MBeanServerConnection mbsc = info.getmbserverconnector();
+ Set set = null;
+ ObjectNames objname = null;
+
+ try {
+ if (option_value.compareToIgnoreCase("queue") == 0 || option_value.compareToIgnoreCase("queues") == 0) {
+ objname = new QueueObject(mbsc);
+
+ } else
+ if (option_value.compareToIgnoreCase("Virtualhosts") == 0 || option_value.compareToIgnoreCase("Virtualhost") == 0) {
+ objname = new VirtualHostObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Exchange") == 0 || option_value.compareToIgnoreCase("Exchanges") == 0) {
+ objname = new ExchangeObject(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Connection") == 0 || option_value.compareToIgnoreCase("Connections") == 0) {
+ objname = new ConnectionObject(mbsc);
+// this.name = option_value;
+ } else if (option_value.compareToIgnoreCase("all") == 0) {
+ objname = new AllObjects(mbsc);
+// this.name = option_value;
+ } else
+ if (option_value.compareToIgnoreCase("Usermanagement") == 0 || option_value.compareToIgnoreCase("Usermanagmenets") == 0) {
+ objname = new UserManagementObject(mbsc);
+// this.name = option_value;
+ } else {
+ printusage();
+ echo("Wrong objectName");
+ return;
+ }
+ objname.setQueryString(this.object, this.name, this.vhost);
+ objname.returnObjects();
+ if (objname.getSet().size() != 0) {
+ if (this.object.compareToIgnoreCase("queue") == 0 || this.object.compareToIgnoreCase("queues") == 0)
+ objname.displayqueues(this.outputformat, this.seperator);
+ else
+ objname.displayobjects(this.outputformat, this.seperator);
+ } else {
+ if (isname()) {
+
+ echo("You might quering wrong " + this.object + " name with --name or -n option ");
+ echo("");
+ echo(this.object + "Type Objects might not in the broker currently");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ }
+
+ public void listdomains() {
+ MBeanServerConnection mbsc = info.getmbserverconnector();
+ try {
+ String[] domains = mbsc.getDomains();
+ echo("DOMAINS");
+ for (int i = 0; i < domains.length; i++)
+ echo("\tDomain[" + i + "] = " + domains[i]);
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+ if (checkoptionsetting("output")) {
+ setoutputformat(optionchecker("output"));
+ if (checkoptionsetting("separator"))
+ setseperator(optionchecker("separator"));
+ }
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ setobject(object);
+ if (checkoptionsetting("name") || checkoptionsetting("n")) {
+ String name = optionchecker("name");
+ if (name == null)
+ name = optionchecker("n");
+
+ setname(name);
+ }
+ if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) {
+ String vhost = optionchecker("virtualhost");
+ if (vhost == null)
+ vhost = optionchecker("v");
+ setvhost(vhost);
+ }
+ listobjects(this.object);
+ } else if (checkoptionsetting("domain") || checkoptionsetting("d"))
+ listdomains();
+ else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:list [OPTION] ... [OBJECT TYPE]...\n");
+ echo("List the information about the given object\n");
+ echo("Where possible options include:\n");
+ echo(" -o --object type of objects which you want to list\n");
+ echo(" ex: < list -o queue > : lists all the queues created in the java broker\n");
+ echo(" For now list command is supporting following object typse \n");
+ echo(" Queue Connection VirtualHost UserMangement Exchange");
+ echo(" Or You can specify object type by giving it at the beginning");
+ echo(" rather giving it as a argument");
+ echo(" Ex:< queue list > this command is equal to list -o queue \n");
+ echo(" -d --domain list all the domains of objects available for remote monitoring\n");
+ echo(" -v --virtualhost After specifying the object type you can filter output with this option");
+ echo(" list objects with the given virtualhost which will help to find ");
+ echo(" identical queue objects with -n option");
+ echo(" ex: queue list -v develop ment");
+ echo(" -output Specify which output format you want to get the ouput");
+ echo(" Although the option is there current version supports only for CSV output format");
+ echo(" -separator This option use with output option to specify which separator you want to get the CSV output (default seperator is comma");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+ echo(" -n --name After specifying what type of objects you want to monitor you can filter");
+ echo(" the output using -n option by specifying the name of the object you want ");
+ echo(" to monitor exactly");
+ echo(" ex: <list -o queue -n ping> : list all the queue objects having queue name");
+ echo(" of ping");
+ echo(" ex: <queue list -n ping -v development> list all the queue objects with name ");
+ echo(" of ping and virtualhost of developement \n");
+
+
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ private void setname(String name) {
+ this.name = name;
+ }
+
+ private boolean isname() {
+ if (this.name == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private void setvhost(String vhost) {
+ this.vhost = vhost;
+ }
+
+ public String getvhost() {
+ return this.vhost;
+ }
+
+ public String getname() {
+ return this.name;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+
+ private void setoutputformat(String outputformat) {
+ this.outputformat = outputformat;
+ }
+
+ private void setseperator(String seperator) {
+ this.seperator = seperator;
+ }
+
+ private boolean isseperator() {
+ if (this.seperator == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private boolean isoutputformat() {
+ if (this.outputformat == null)
+ return false;
+
+ else
+ return true;
+ }
+
+
+ /*
+ public String optionchecker(String option_letter) {
+ Map map = info.getCommandLineOptionParser().getAlloptions();
+ if(map == null)
+ return null;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if(option == null)
+ return null;
+ String value = option.getOptionValue();
+ return value;
+
+
+ }
+ */
+ public void optionvaluechecker() {
+
+ }
+}
+
+
+
+
+
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandmove.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandmove.java
new file mode 100644
index 0000000000..a4deb19315
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandmove.java
@@ -0,0 +1,294 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.qpid.commands;
+
+
+import org.apache.qpid.commands.objects.QueueObject;
+import org.apache.qpid.commands.objects.ObjectNames;
+import org.apache.qpid.utils.JMXinfo;
+
+import javax.management.ObjectName;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanAttributeInfo;
+import java.util.StringTokenizer;
+import java.util.Set;
+import java.util.Iterator;
+import java.util.List;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Aug 6, 2008
+ * Time: 5:35:05 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Commandmove extends Command {
+ private String object;
+ private String name1 = null, name2 = null, vhost1 = null, vhost2 = null, method1 = null, method2 = null; //target and starting queue specifications happen with these options
+ private int number = 0;
+ private QueueObject queue1, queue2;
+ private MBeanServerConnection mbsc;
+ private ObjectName queue;
+ private int fmid = 0, tmid = 0;
+
+ public Commandmove(JMXinfo info, String name) {
+ super(info, name);
+ this.mbsc = info.getmbserverconnector();
+ this.queue1 = new QueueObject(mbsc);
+// this.queue2 = new QueueObject(mbsc);
+ this.method1 = "moveMessages";
+ this.method2 = "getMessagesOnTheQueue";
+
+ }
+
+ public void movemessages() {
+ Set set = null;
+ queue1.setQueryString(this.object, this.name1, this.vhost1);
+// queue2.setQueryString(this.object, this.name2, this.vhost2);
+ set = queue1.returnObjects();
+ List messageidlist = null;
+ Long frommessageid = null, tomessageid, middle;
+ int temp = 0;
+ if (queue1.getSet().size() != 0) { // find the queue
+ Iterator it = set.iterator();
+ this.queue = (ObjectName) it.next();
+ } else {
+ if (isname1() || isname2()) { // if the specified queue is not there in the broker
+
+ echo("The Queue you have specified is not in the current broker");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+// if(this.tmid == 0 || this.fmid == 0)
+// {
+// this.number = queue1.getmessagecount(this.queue);
+// echo("");
+// System.out.print("Do you want to delete all the messages from the Queue[Y/N] :");
+// InputStreamReader isr = new InputStreamReader(System.in);
+// BufferedReader br = new BufferedReader(isr);
+// try{
+// String s = br.readLine();
+// echo(s);
+// if(s.compareToIgnoreCase("y") != 0)
+// return;
+// }catch(Exception ex)
+// {
+// ex.printStackTrace();
+// }
+//
+// }
+// if(this.number > queue1.getmessagecount(this.queue))
+// {
+// System.out.println("Given number is Greater than the Queue Depth");
+// return;
+// }//if user doesn't specify -t option all the messages will be moved
+// Object[] params = {new Integer(this.number)};
+// String[] signature = {new String("java.lang.Integer")};
+// try{
+// messageidlist = (List)this.mbsc.invoke(queue,this.method2,params,signature);
+// Iterator it1 = messageidlist.iterator();
+// temp++;
+// do
+// {
+// middle = (Long)it1.next();
+// if(temp == 1)
+// frommessageid = middle; // get the messageid of first message
+//
+// }while(it1.hasNext());
+// tomessageid = middle; // get the messageid of the last message
+ try {
+ Object[] params1 = {getfmid(), gettmid(), this.name2};
+ String[] signature1 = {new String("long"), new String("long"), new String("java.lang.String")};
+ this.mbsc.invoke(this.queue, this.method1, params1, signature1);
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ echo("Given messageId's might be wrong please run the view command and check messageId's you have given\n");
+ echo("From MessageId should be greater than 0 and should less than To messageId");
+ }
+
+
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ if (object.compareToIgnoreCase("queue") == 0)
+ setobject(object);
+ else {
+ unrecognizeoption();
+ echo("This command is only applicable for queue command so please start with queue");
+ }
+ if (checkoptionsetting("n2") && checkoptionsetting("n1")) {
+ setname1(optionchecker("n1"));
+ setname2(optionchecker("n2"));
+ } else {
+ echo("You have to specify both n1 and n2 option value to move a message"); /* when user forget to specify target or starting queue name */
+ return;
+ }
+
+ if (checkoptionsetting("v1")) {
+
+ setvhost1(optionchecker("v1"));
+ }
+ if (checkoptionsetting("tmid") && checkoptionsetting("fmid")) {
+ String tmid = optionchecker("tmid");
+ String fmid = optionchecker("fmid");
+
+
+ settomessageIdandfrommessageId(removeSpaces(tmid), removeSpaces(fmid));
+ } else {
+ echo("You have to set from MessageId and to MessageId in order to move messages between queues");
+ echo("To view MessageId's use <view> command with -n and -v options");
+ return;
+ }
+ this.movemessages();
+
+ } else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:move [OPTION] ... [OBJECT TYPE]...\n");
+ echo("Move the top most messages from the given queue object to the given destination object\n");
+ echo("To specify the desired queues you have to give the virtualhost name and the queue name with following commands\n");
+ echo("Where possible options include:\n");
+ echo(" -v1 Give the virtuallhost name from which queue you want to move messages");
+ echo(" -n1 Give the queue name which you want to move messages from");
+ echo(" -n2 Give the queue name of the destination queue");
+ echo(" -tmid Give From MessageId you want to move from the Queue");
+ echo(" -fmid Give To MessageId you want to move from the Queue");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ private void setname1(String name) {
+ this.name1 = name;
+ }
+
+ private void setname2(String name) {
+ this.name2 = name;
+ }
+
+ private boolean isname1() {
+ if (this.name1 == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private boolean isname2() {
+ if (this.name2 == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private void setvhost1(String vhost) {
+ this.vhost1 = vhost;
+ }
+// private void setvhost2(String vhost) {
+// this.vhost2 = vhost;
+// }
+
+ private void setnumber(String number) {
+ Integer i = new Integer(number);
+ this.number = i.intValue();
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+ private void settomessageIdandfrommessageId(String tmid, String fmid) {
+ Integer i = new Integer(tmid);
+ Integer j = new Integer(fmid);
+ this.tmid = i.intValue();
+ this.fmid = j.intValue();
+ }
+
+ public int gettmid() {
+ return this.tmid;
+ }
+
+ public int getfmid() {
+ return this.fmid;
+ }
+
+ public String getname1() {
+ return this.name1;
+ }
+
+ public String getname2() {
+ return this.name2;
+ }
+
+ public String getvhost() {
+ return this.vhost1;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandview.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandview.java
new file mode 100644
index 0000000000..a4c6394589
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandview.java
@@ -0,0 +1,276 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+ /*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+import org.apache.qpid.commands.objects.ObjectNames;
+import org.apache.qpid.commands.objects.QueueObject;
+import org.apache.qpid.utils.JMXinfo;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.openmbean.*;
+import java.util.*;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.awt.font.OpenType;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Aug 8, 2008
+ * Time: 11:33:05 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Commandview extends Command {
+ private String object;
+ private String name;
+ private String vhost;
+ private int number = 0;
+ private QueueObject objname;
+ private MBeanServerConnection mbsc;
+ private String method1, method2;
+ private ObjectName queue;
+
+ public Commandview(JMXinfo info, String name) {
+ super(info, name);
+ this.mbsc = info.getmbserverconnector();
+ this.objname = new QueueObject(mbsc);
+ this.method1 = "viewMessages";
+ this.method2 = "viewMessaegContent";
+
+ }
+
+ public void viewmessages() {
+ Set set = null;
+ Object temp[] = {null};
+ objname.setQueryString(this.object, this.name, this.vhost);
+ set = objname.returnObjects();
+ String header = "", temp_header = "", message_data = "", outline = "";
+
+
+ if (objname.getSet().size() != 0) {
+ Iterator it = set.iterator();
+ this.queue = (ObjectName) it.next();
+ try {
+ if (objname.getmessagecount(this.queue) == 0) {
+ echo("Selected Queue doesn't contain any messages");
+ return;
+ }
+ if (this.number == 0)
+ this.number = objname.getmessagecount(this.queue);
+
+
+ if (objname.getmessagecount(this.queue) < this.number) {
+ echo("Given number is Greater than the Queue Depth");
+ return;
+ } else {
+ Object[] params = {1, this.number};
+ String[] signature = {new String("int"), new String("int")};
+ TabularDataSupport data = (TabularDataSupport) this.mbsc.invoke(queue, this.method1, params, signature);
+
+ Set entrySet = data.entrySet();
+ ArrayList<Map.Entry> list = new ArrayList<Map.Entry>(entrySet);
+ if (list.size() != 0) {// no data}
+ for (int i = 0; i < list.size(); i++) {
+ CompositeData compositedata =
+ (CompositeData) (list.get(i)).getValue();
+ List<String> itemNames = new
+ ArrayList<String>(compositedata.getCompositeType().keySet());
+ if (i == 0) // display the table headers
+ {
+ for (int j = 0; j < itemNames.size(); j++) {
+ temp_header = "";
+ if (j != 1) //skipping header information
+ {
+ temp_header = itemNames.get(j);
+ while (temp_header.length() < 15)
+ temp_header = " " + temp_header;
+
+ header = header + temp_header + "|";
+ } else
+ continue;
+ }
+ echo(header);
+ while (outline.length() < header.length())
+ outline = outline + "-";
+ echo(outline);
+ }
+
+ for (int j = 0; j < itemNames.size(); j++) {
+ temp_header = "";
+ if (j != 1) {
+ temp_header = String.valueOf(compositedata.get(itemNames.get(j)));
+ while (temp_header.length() < 15)
+ temp_header = " " + temp_header;
+ message_data = message_data + temp_header + "|";
+ } else // header information is not displaying unless user specify header information is needed
+ continue;
+
+
+ }
+ echo(message_data);
+ header = "";
+ message_data = "";
+ }
+ } else {
+ System.out.println("No Data to Display");
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ } else {
+ if (isname()) {
+
+ echo("The Queue you have specified is not in the current broker");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ if (object.compareToIgnoreCase("queue") == 0)
+ setobject(object);
+ else {
+ unrecognizeoption();
+ echo("This command is only applicable for delete command so please start with queue");
+ }
+ if (checkoptionsetting("name") || checkoptionsetting("n")) {
+ String name = optionchecker("name");
+ if (name == null)
+ name = optionchecker("n");
+
+ setname(name);
+ }
+ if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) {
+ String vhost = optionchecker("virtualhost");
+ if (vhost == null)
+ vhost = optionchecker("v");
+ setvhost(vhost);
+ }
+ if (checkoptionsetting("top") || checkoptionsetting("t")) {
+ String number = optionchecker("top");
+ if (number == null)
+ number = optionchecker("t");
+
+ setnumber(removeSpaces(number));
+ }
+ this.viewmessages();
+ } else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:view [OPTION] ... [OBJECT TYPE]...\n");
+ echo("view the information about given number of messages from the given queue object\n");
+ echo("To specify the desired queue you have to give the virtualhost name and the queue name with following commands\n");
+ echo("Where possible options include:\n");
+ echo(" -v --virtualhost Give the virtuallhost name of the desired queue");
+ echo(" -n --name Give the queue name of the desired queue you want to view messages");
+ echo(" -t --top Give how many number of messages you want to delete from the top (Default = all the messages will be deleted");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ private void setname(String name) {
+ this.name = name;
+ }
+
+ private boolean isname() {
+ if (this.name == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ private void setvhost(String vhost) {
+ this.vhost = vhost;
+ }
+
+ public String getvhost() {
+ return this.vhost;
+ }
+
+ private void setnumber(String number) {
+ Integer i = new Integer(number);
+ this.number = i.intValue();
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+ public String getname() {
+ return this.name;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+
+ public int getnumber() {
+ return this.number;
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandviewcontent.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandviewcontent.java
new file mode 100644
index 0000000000..f24fd08a99
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/Commandviewcontent.java
@@ -0,0 +1,284 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.commands;
+
+import org.apache.qpid.commands.objects.QueueObject;
+import org.apache.qpid.utils.JMXinfo;
+
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.openmbean.TabularData;
+import javax.management.openmbean.CompositeData;
+import java.util.*;
+import java.nio.charset.Charset;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Aug 10, 2008
+ * Time: 12:19:16 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class Commandviewcontent extends Command {
+ private String object;
+ private String name;
+ private String vhost;
+ private int number = 0;
+ private QueueObject objname;
+ private MBeanServerConnection mbsc;
+ private String method1;
+ private ObjectName queue;
+
+ public Commandviewcontent(JMXinfo info, String name) {
+ super(info, name);
+ this.mbsc = info.getmbserverconnector();
+ this.objname = new QueueObject(mbsc);
+ this.method1 = "viewMessageContent";
+
+ }
+
+ public void viewcontent() {
+ Set set = null;
+ Object temp[] = {null};
+ objname.setQueryString(this.object, this.name, this.vhost);
+ set = objname.returnObjects();
+ String temp_header = "", header = "", message_data = "", encoding = null;
+
+ if (objname.getSet().size() != 0) {
+ Iterator it = set.iterator();
+ this.queue = (ObjectName) it.next();
+ try {
+ if (objname.getmessagecount(this.queue) == 0) {
+ echo("Selected Queue doesn't contain any messages");
+ return;
+ }
+ if (this.number == 0) {
+ echo("You haven't selected a MessageId Please use -id and give a message id");
+ echo("Or run view command with same arguemnts to view messageId list for the queue");
+ }
+
+// if(objname.getmessagecount(this.queue) < this.number)
+// {
+// echo("Given number is Greater than the Queue Depth");
+// return;
+// }
+ else {
+ Object[] params = {this.number};
+ String[] signature = {new String("long")};
+ CompositeData data = (CompositeData) this.mbsc.invoke(queue, this.method1, params, signature);
+ List<String> itemNames = new
+ ArrayList<String>(data.getCompositeType().keySet());
+ for (int j = 0; j < itemNames.size(); j++) {
+ temp_header = "";
+ temp_header = itemNames.get(j);
+ while (temp_header.length() < 15)
+ temp_header = " " + temp_header;
+
+ header = header + temp_header + "|";
+ }
+ echo(header);
+ encoding = String.valueOf(data.get(itemNames.get(2))); // set the encoding at the beginning because encoding comes later in the loop
+ if (encoding == null || encoding.length() == 0) {
+ encoding = Charset.defaultCharset().name();
+
+ }
+ for (int j = 0; j < itemNames.size(); j++) {
+ temp_header = "";
+ if (j != 1) {
+ temp_header = String.valueOf(data.get(itemNames.get(j)));
+ while (temp_header.length() < 15)
+ temp_header = " " + temp_header;
+ } else {
+ Byte[] arrayItems = (Byte[]) data.get(itemNames.get(j));
+ byte[] byteArray = new byte[arrayItems.length];
+ for (int i = 0; i < arrayItems.length; i++) {
+ byteArray[i] = arrayItems[i];
+ temp_header = new String(byteArray, encoding);
+ while (temp_header.length() < 15)
+ temp_header = " " + temp_header;
+ }
+ }
+ message_data = message_data + temp_header + "|";
+
+
+ }
+ echo(message_data);
+// Object keys[] = data.keySet().toArray();
+// CompositeData comdata = data.get(keys);
+// for(int i=0;i < keys.length;i++)
+// {
+// System.out.println(keys[i].toString());
+// CompositeData cdata = data.get(temp);
+// System.out.println(cdata.toString());
+// temp[0] = null;
+// }
+// TabularType tabular = data.getTabularType();
+//// System.out.println(tabular.toString());
+// List info = tabular.getIndexNames();
+// Iterator it1 = info.iterator();
+//
+// do{
+// String temp1 = (String)it1.next();
+// System.out.println(temp1);
+// }while(it1.hasNext());
+
+ }
+ } catch (Exception ex) {
+ echo("Given MessageId is invalid, There's no message with the given messageId");
+ ex.printStackTrace();
+ return;
+ }
+
+ } else {
+ if (isname()) {
+
+ echo("The Queue you have specified is not in the current broker");
+ echo("");
+ } else {
+ printusage();
+ }
+ }
+ }
+
+ public void execute() {
+ /* In here you it's easy to handle any number of otpions which are going to add with the list command which works
+ with main option object or o
+ */
+
+ if (checkoptionsetting("object") || checkoptionsetting("o")) {
+ String object = optionchecker("object");
+ if (object == null) {
+ object = optionchecker("o");
+ }
+ if (object.compareToIgnoreCase("queue") == 0)
+ setobject(object);
+ else {
+ unrecognizeoption();
+ echo("This command is only applicable for delete command so please start with queue");
+ }
+ if (checkoptionsetting("name") || checkoptionsetting("n")) {
+ String name = optionchecker("name");
+ if (name == null)
+ name = optionchecker("n");
+
+ setname(name);
+ }
+ if (checkoptionsetting("virtualhost") || checkoptionsetting("v")) {
+ String vhost = optionchecker("virtualhost");
+ if (vhost == null)
+ vhost = optionchecker("v");
+ setvhost(vhost);
+ }
+ if (checkoptionsetting("messageid") || checkoptionsetting("id")) {
+ String number = optionchecker("id");
+ if (number == null)
+ number = optionchecker("id");
+
+ setnumber(removeSpaces(number));
+ }
+ this.viewcontent();
+ } else if (checkoptionsetting("h") || checkoptionsetting("help"))
+ printusage();
+ else
+ unrecognizeoption();
+ }
+
+ public void printusage() {
+ echo("");
+ echo("Usage:viewcontent [OPTION] ... [OBJECT TYPE]...\n");
+ echo("view the information about given number of messages from the given queue object\n");
+ echo("To specify the desired queue you have to give the virtualhost name and the queue name with following commands\n");
+ echo("Where possible options include:\n");
+ echo(" -v --virtualhost Give the virtuallhost name of the desired queue");
+ echo(" -n --name Give the queue name of the desired queue you want to view messages");
+ echo(" -id Give the messageId of the required message you want to view the content");
+ echo(" -h --help Display the help and back to the qpid-cli prompt\n");
+
+ }
+
+ private void setobject(String object) {
+ this.object = object;
+ }
+
+ private void setname(String name) {
+ this.name = name;
+ }
+
+ private boolean isname() {
+ if (this.name == null)
+ return false;
+
+ else
+ return true;
+ }
+
+ public void setvhost(String vhost) {
+ this.vhost = vhost;
+ }
+
+ public String getvhost() {
+ return this.vhost;
+ }
+
+ private void setnumber(String number) {
+ Integer i = new Integer(number);
+ this.number = i.intValue();
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+ public String getname() {
+ return this.name;
+ }
+
+ public String getobject() {
+ return this.object;
+ }
+
+ public int getnumber() {
+ return this.number;
+ }
+
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/AllObjects.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/AllObjects.java
new file mode 100644
index 0000000000..7f16109f0c
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/AllObjects.java
@@ -0,0 +1,44 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 20, 2008
+ * Time: 9:04:22 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class AllObjects extends ObjectNames {
+
+ public AllObjects(MBeanServerConnection mbsc) {
+ ObjectNames(mbsc);
+// querystring = "org.apache.qpid:*";
+// set = returnObjects();
+ }
+
+ public void setQueryString(String object, String name) {
+ querystring = "org.apache.qpid:*";
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ConnectionObject.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ConnectionObject.java
new file mode 100644
index 0000000000..6c427660c0
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ConnectionObject.java
@@ -0,0 +1,54 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 26, 2008
+ * Time: 9:58:02 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ConnectionObject extends ObjectNames {
+ public ConnectionObject(MBeanServerConnection mbsc) {
+ /*calling parent classes constructor */
+ ObjectNames(mbsc);
+// querystring = "org.apache.qpid:type=VirtualHost.Connection,*";
+// set = returnObjects();
+
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+ if (name != null && vhost == null)
+ querystring = "org.apache.qpid:type=Connection,name=" + name + ",*";
+ else if (name != null && vhost != null)
+ querystring = "org.apache.qpid:type=Connection,VirtualHost=" + vhost + ",name=" + name + ",*";
+ else if (name == null && vhost != null)
+ querystring = "org.apache.qpid:type=Connection,VirtualHost=" + vhost + ",*";
+ else
+ querystring = "org.apache.qpid:type=Connection,*";
+
+ }
+}
+
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ExchangeObject.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ExchangeObject.java
new file mode 100644
index 0000000000..22439e9d61
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ExchangeObject.java
@@ -0,0 +1,53 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 24, 2008
+ * Time: 12:15:19 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ExchangeObject extends ObjectNames {
+ public ExchangeObject(MBeanServerConnection mbsc) {
+ ObjectNames(mbsc);
+// querystring = "org.apache.qpid:type=VirtualHost.Exchange,*";
+// set = returnObjects();
+
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+ if (name != null && vhost == null)
+ querystring = "org.apache.qpid:type=VirtualHost.Exchange,name=" + name + ",*";
+ else if (name != null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.Exchange,VirtualHost=" + vhost + ",name=" + name + ",*";
+ else if (name == null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.Exchange,VirtualHost=" + vhost + ",*";
+ else
+ querystring = "org.apache.qpid:type=VirtualHost.Exchange,*";
+
+ }
+}
+
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ObjectNames.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ObjectNames.java
new file mode 100644
index 0000000000..127c9f0a67
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/ObjectNames.java
@@ -0,0 +1,477 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanServerConnection;
+import javax.management.ObjectName;
+import javax.management.MBeanInfo;
+import java.util.Iterator;
+import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 20, 2008
+ * Time: 8:39:01 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class ObjectNames {
+ public String querystring = null;
+ public MBeanServerConnection mbsc;
+ public Set set = null;
+ public String attributes = "";
+ public String attributevalues = "";// = null;
+
+ /* method return the Set objects according to the Object type */
+ public void ObjectNames(MBeanServerConnection mbsc) {
+ this.mbsc = mbsc;
+ }
+
+ public Set returnObjects() {
+ try {
+ set = mbsc.queryNames(new ObjectName(querystring), null);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ return set;
+ }
+
+ public void echo(String str) {
+ System.out.println(str);
+ }
+ /* display appropriate objects according to the ojbect type */
+
+ public void displayobjects(String output, String seperator) {
+ Iterator it = set.iterator();
+ String line = "";
+ String temp2 = "";
+ int iterator = 0;
+ try {
+ do {
+ ObjectName temp_object = null;
+ if (it.hasNext()) {
+ temp_object = (ObjectName) it.next();
+ if (temp_object == null)
+ System.out.println("null test");
+ }
+ // echo(temp_object.getCanonicalKeyPropertyListString());
+ MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
+ MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
+ if (attr_info == null) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ if (output == null)
+ echo(temp);
+
+ } else {
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+
+ try {
+ String temp1 = attr.getName();
+ if (output == null) {
+ while (temp1.length() < 15)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ } else if (output.compareToIgnoreCase("csv") == 0)
+ attributes = attributes + temp1 + seperator;
+ else {
+ echo("Wrong output format current version is supporting only for CSV");
+ return;
+ }
+ } catch (Exception x) {
+ x.printStackTrace();
+ }
+ }
+ if (attributes.equalsIgnoreCase("")) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ echo(temp);
+ echo("There are no attributes for this object Type");
+ return;
+ }
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+ temp2 = null;
+ try {
+ toWrite = mbsc.getAttribute(temp_object, attr.getName());
+ } catch (Exception x) {
+ temp2 = "-";
+ }
+ if (toWrite != null)
+ temp2 = toWrite.toString();
+ else
+ temp2 = "-";
+ if (output == null) {
+
+ while (temp2.length() < 15)
+ temp2 = " " + temp2;
+
+ attributevalues = attributevalues + temp2 + "|";
+ } else if (output.compareToIgnoreCase("csv") == 0)
+ attributevalues = attributevalues + temp2 + seperator;
+
+ //echo(temp1 + " " + temp2 + " " + temp3);
+
+
+ }
+ }
+ iterator++;
+ if (iterator == 1) {
+ echo(attributes);
+ for (int i = 0; i < attributes.length(); i++)
+ line = line + "-";
+ if (output == null)
+ echo(line);
+ }
+ echo(attributevalues);
+ line = "";
+ attributes = "";
+ attributevalues = "";
+ } while (it.hasNext());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ public void reportgenerator(String output, String seperator, List<String> column) {
+ Iterator it = set.iterator();
+ String line = "";
+ String temp2 = "";
+ int iterator = 0;
+ try {
+ do {
+ ObjectName temp_object = null;
+ if (it.hasNext()) {
+ temp_object = (ObjectName) it.next();
+ if (temp_object == null)
+ System.out.println("null test");
+ }
+ // echo(temp_object.getCanonicalKeyPropertyListString());
+ MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
+ MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
+ if (attr_info == null) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ if (output == null)
+ echo(temp);
+
+ } else {
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+
+ try {
+ String temp1 = attr.getName();
+ if (column.contains(temp1)) {
+ if (output == null) {
+ while (temp1.length() < 15)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ } else if (output.compareToIgnoreCase("csv") == 0)
+ attributes = attributes + temp1 + seperator;
+ else {
+ echo("Wrong output format current version is supporting only for CSV");
+ return;
+ }
+ }
+ } catch (Exception x) {
+ x.printStackTrace();
+ }
+ }
+ if (attributes.equalsIgnoreCase("")) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ echo(temp);
+ echo("There are no attributes for this object Type");
+ return;
+ }
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+ temp2 = null;
+ if (column.contains(attr.getName())) {
+ try {
+ toWrite = mbsc.getAttribute(temp_object, attr.getName());
+ } catch (Exception x) {
+ temp2 = "-";
+ }
+ if (toWrite != null)
+ temp2 = toWrite.toString();
+ else
+ temp2 = "-";
+ if (output == null) {
+
+ while (temp2.length() < 15)
+ temp2 = " " + temp2;
+
+ attributevalues = attributevalues + temp2 + "|";
+ } else if (output.compareToIgnoreCase("csv") == 0)
+ attributevalues = attributevalues + temp2 + seperator;
+
+ //echo(temp1 + " " + temp2 + " " + temp3);
+
+ }
+
+
+ }
+ }
+ iterator++;
+ if (iterator == 1) {
+ echo(attributes);
+ for (int i = 0; i < attributes.length(); i++)
+ line = line + "-";
+ if (output == null)
+ echo(line);
+ }
+ echo(attributevalues);
+ line = "";
+ attributes = "";
+ attributevalues = "";
+ } while (it.hasNext());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ public void displayqueues(String output, String seperator) {
+ Iterator it = set.iterator();
+ String line = "";
+ int iterator = 0;
+ int attr_count = 0;
+ String temp1 = "";
+ String temp2 = "";
+ try {
+ do {
+ attr_count = 0;
+ ObjectName temp_object = null;
+ if (it.hasNext()) {
+ temp_object = (ObjectName) it.next();
+ }
+ // echo(temp_object.getCanonicalKeyPropertyListString());
+ MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
+ MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
+ if (attr_info == null) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ if (output == null)
+ echo(temp);
+
+ } else {
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+ attr_count++;
+ try {
+ toWrite = mbsc.getAttribute(temp_object, attr.getName());
+ if (output == null) {
+ switch (attr_count) {
+ case 1:
+ case 3:
+ temp1 = attr.getName();
+ while (temp1.length() < 10)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ temp2 = toWrite.toString();
+ while (temp2.length() < 10)
+ temp2 = " " + temp2;
+ attributevalues = attributevalues + temp2 + "|";
+ break;
+ case 6:
+ temp1 = attr.getName();
+ while (temp1.length() < 20)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ temp2 = toWrite.toString();
+ while (temp2.length() < 20)
+ temp2 = " " + temp2;
+ attributevalues = attributevalues + temp2 + "|";
+ break;
+ case 7:
+ temp1 = attr.getName();
+ while (temp1.length() < 13)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ temp2 = toWrite.toString();
+ while (temp2.length() < 13)
+ temp2 = " " + temp2;
+ attributevalues = attributevalues + temp2 + "|";
+ break;
+ case 9:
+ temp1 = attr.getName();
+ while (temp1.length() < 20)
+ temp1 = " " + temp1;
+ attributes = attributes + temp1 + "|";
+ temp2 = toWrite.toString();
+ while (temp2.length() < 20)
+ temp2 = " " + temp2;
+ attributevalues = attributevalues + temp2 + "|";
+ break;
+ }
+ } else if (output.compareToIgnoreCase("csv") == 0) {
+ switch (attr_count) {
+ case 1:
+ case 3:
+ case 6:
+ temp1 = attr.getName();
+ attributes = attributes + temp1 + seperator;
+ temp2 = toWrite.toString();
+ attributevalues = attributevalues + temp2 + seperator;
+ break;
+ case 7:
+ temp1 = attr.getName();
+ attributes = attributes + temp1 + seperator;
+ temp2 = toWrite.toString();
+ attributevalues = attributevalues + temp2 + seperator;
+ break;
+ case 9:
+ temp1 = attr.getName();
+ attributes = attributes + temp1 + seperator;
+ temp2 = toWrite.toString();
+ attributevalues = attributevalues + temp2 + seperator;
+ break;
+ }
+ } else {
+ echo("Wrong output format specified currently CLI supports only csv output format");
+ return;
+ }
+
+
+ } catch (Exception x) {
+ x.printStackTrace();
+ }
+
+ }
+ }
+ iterator++;
+ if (iterator == 1) {
+ for (int i = 0; i < attributes.length(); i++)
+ line = line + "-";
+ if (output == null)
+ echo(line);
+ echo(attributes);
+ if (output == null)
+ echo(line);
+ }
+ echo(attributevalues);
+ line = "";
+ attributes = "";
+ attributevalues = "";
+ } while (it.hasNext());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ public void displayinfo(String output, String seperator) {
+ Iterator it = set.iterator();
+ String temp1, temp2 = "";
+ try {
+ do {
+
+ ObjectName temp_object = null;
+ if (it.hasNext()) {
+ temp_object = (ObjectName) it.next();
+ }
+ // echo(temp_object.getCanonicalKeyPropertyListString());
+ MBeanInfo bean_info = mbsc.getMBeanInfo(temp_object);
+ MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
+ if (attr_info == null) {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ echo(temp);
+
+ } else {
+ echo(temp_object.toString());
+ String temp = "";
+ while (temp_object.toString().length() > temp.length())
+ temp = "=" + temp;
+ echo(temp);
+
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+
+ try {
+ toWrite = mbsc.getAttribute(temp_object, attr.getName());
+ } catch (Exception x) {
+ temp2 = "-";
+ }
+ temp1 = attr.getName();
+ if (toWrite != null)
+ temp2 = toWrite.toString();
+
+ if (output == null) {
+ while (temp1.length() < 35)
+ temp1 = " " + temp1;
+
+ while (temp2.length() < 35)
+ temp2 = " " + temp2;
+ echo(temp1 + " " + temp2);
+ } else if (output.compareToIgnoreCase("csv") == 0)
+ echo(temp1 + seperator + temp2);
+ else {
+ echo("Wrong output format specified currently CLI supports only csv output format");
+ return;
+ }
+ }
+ echo("");
+ echo("");
+
+ }
+ } while (it.hasNext());
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+
+ }
+
+ public void setQueryStringforinfo(String object, String name, String virtualhost) {
+
+ }
+
+ public String getQueryString() {
+ return querystring;
+ }
+
+ public Set getSet() {
+ return set;
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/QueueObject.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/QueueObject.java
new file mode 100644
index 0000000000..7bbcbf5840
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/QueueObject.java
@@ -0,0 +1,86 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.ObjectName;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 20, 2008
+ * Time: 8:49:56 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class QueueObject extends ObjectNames {
+ public QueueObject(MBeanServerConnection mbsc) {
+ ObjectNames(mbsc);
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+ if (name != null && vhost == null)
+ querystring = "org.apache.qpid:type=VirtualHost.Queue,name=" + name + ",*";
+ else if (name != null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.Queue,VirtualHost=" + vhost + ",name=" + name + ",*";
+ else if (name == null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.Queue,VirtualHost=" + vhost + ",*";
+ else
+ querystring = "org.apache.qpid:type=VirtualHost.Queue,*";
+ }
+
+ public int getmessagecount(ObjectName queue) {
+ int attr_count = 0;
+ String value;
+ Integer depth = null;
+
+ try {
+ MBeanInfo bean_info;
+ bean_info = mbsc.getMBeanInfo(queue);
+ MBeanAttributeInfo[] attr_info = bean_info.getAttributes();
+ if (attr_info == null)
+ return 0;
+ else {
+ for (MBeanAttributeInfo attr : attr_info) {
+ Object toWrite = null;
+ attr_count++;
+ toWrite = mbsc.getAttribute(queue, attr.getName());
+ if (attr_count == 7) {
+ value = toWrite.toString();
+ depth = new Integer(value);
+ }
+ }
+
+ }
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ if (depth != null)
+ return depth.intValue();
+ else
+ return -1;
+ }
+
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/UserManagementObject.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/UserManagementObject.java
new file mode 100644
index 0000000000..a5f84ea39e
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/UserManagementObject.java
@@ -0,0 +1,45 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 24, 2008
+ * Time: 12:11:52 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class UserManagementObject extends ObjectNames {
+ public UserManagementObject(MBeanServerConnection mbsc) {
+ ObjectNames(mbsc);
+// querystring = "org.apache.qpid:type=UserManagement,*";
+// set = returnObjects();
+
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+ querystring = "org.apache.qpid:type=UserManagement,*";
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/VirtualHostObject.java b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/VirtualHostObject.java
new file mode 100644
index 0000000000..16bb159990
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/commands/objects/VirtualHostObject.java
@@ -0,0 +1,53 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.qpid.commands.objects;
+
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 20, 2008
+ * Time: 9:02:04 AM
+ * To change this template use File | Settings | File Templates.
+ */
+public class VirtualHostObject extends ObjectNames {
+
+ public VirtualHostObject(MBeanServerConnection mbsc) {
+ ObjectNames(mbsc);
+// querystring = "org.apache.qpid:type=VirtualHost.VirtualHostManager,*";
+// set = returnObjects();
+ }
+
+ public void setQueryString(String object, String name, String vhost) {
+ if (name != null && vhost == null)
+ querystring = "org.apache.qpid:type=VirtualHost.VirtualHostManager,name=" + name + ",*";
+ else if (name != null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost=" + vhost + ",name=" + name + ",*";
+ else if (name == null && vhost != null)
+ querystring = "org.apache.qpid:type=VirtualHost.VirtualHostManager,VirtualHost=" + vhost + ",*";
+ else
+ querystring = "org.apache.qpid:type=VirtualHost.VirtualHostManager,*";
+
+
+ }
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOption.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOption.java
new file mode 100644
index 0000000000..fb6afa6344
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOption.java
@@ -0,0 +1,112 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.qpid.utils;
+
+import java.util.ArrayList;
+
+public class CommandLineOption implements CommandLineOptionConstants {
+ private String type;
+ private ArrayList optionValues;
+
+ public CommandLineOption(String type, String[] values) {
+ setOptionType(type);
+ ArrayList arrayList = new ArrayList(values.length);
+ for (int i = 0; i < values.length; i++) {
+ arrayList.add(values[i]);
+ }
+ this.optionValues = arrayList;
+ }
+
+ private void setOptionType(String type) {
+ //cater for the long options first
+ if (type.startsWith("--")) {
+ type = type.replaceFirst("--", "");
+ }
+ if (type.startsWith("-")) {
+ type = type.replaceFirst("-", "");
+ }
+
+ //we do not change the case of the option!
+
+ this.type = type;
+ }
+
+ /**
+ * @param type
+ */
+ public CommandLineOption(String type, ArrayList values) {
+ setOptionType(type);
+
+ if (null != values) {
+ this.optionValues = values;
+ }
+ }
+
+
+ /**
+ * @return Returns the type.
+ * @see CommandLineOptionConstants
+ */
+ public String getOptionType() {
+ return type;
+ }
+
+
+ /**
+ * @return Returns the optionValues.
+ */
+ public String getOptionValue() {
+ if ((optionValues != null) && (optionValues.size() > 0)) {
+ return (String) optionValues.get(0);
+ } else {
+ return null;
+ }
+ }
+
+
+ /**
+ * @return Returns the optionValues.
+ */
+ public ArrayList getOptionValues() {
+ return optionValues;
+ }
+
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionConstants.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionConstants.java
new file mode 100644
index 0000000000..fe84e2ebd2
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionConstants.java
@@ -0,0 +1,53 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.qpid.utils;
+
+
+public interface CommandLineOptionConstants {
+ static interface JMXCommandLineOptionConstants {
+ String HOST_OPTION = "h";
+ String PORT_OPTION = "p";
+ String INTERVAL_OPTION = "i";
+ String REPORT_OPTION = "r";
+
+ }
+
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionParser.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionParser.java
new file mode 100644
index 0000000000..33a117cad5
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/CommandLineOptionParser.java
@@ -0,0 +1,218 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.utils;
+
+import java.util.Map;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.StringTokenizer;
+
+
+public class CommandLineOptionParser {
+ private static int STARTED = 0;
+ private static int NEW_OPTION = 1;
+ private static int SUB_PARAM_OF_OPTION = 2;
+
+ private Map commandlineoption;
+ private String commandname;
+
+ public CommandLineOptionParser(Map commandlineoptions) {
+ this.commandlineoption = commandlineoptions;
+ }
+
+ public CommandLineOptionParser(String[] args) {
+ /* check whether user just type the enter key */
+ this.commandlineoption = this.parse(args);
+
+ }
+
+ public CommandLineOptionParser(String[] args, String first) {
+ this.commandname = first;
+ this.commandlineoption = this.parsefirst(args);
+ }
+
+ public Map parse(String[] args) {
+ Map commandLineOptions = new HashMap();
+
+ if (0 == args.length) {
+ return commandLineOptions;
+ } else if (1 == args.length) {
+ commandname = args[0];
+ return commandLineOptions;
+ }
+ /* when user is not giving the command line option with a "=" */
+// if (!args[2].startsWith("-"))
+// return commandLineOptions;
+
+ //State 0 means started
+ //State 1 means earlier one was a new -option
+ //State 2 means earlier one was a sub param of a -option
+
+ int state = STARTED;
+ ArrayList optionBundle = null;
+ String optionType = null;
+ CommandLineOption commandLineOption;
+ String newcommand = "";
+ String[] newargs;
+ int j;
+ if (args[1].compareTo("list") == 0 || args[1].compareTo("info") == 0 || args[1].compareTo("delete") == 0 ||
+ args[1].compareTo("move") == 0 || args[1].compareTo("view") == 0 || args[1].compareTo("viewcontent") == 0) {
+ String object = args[0];
+ for (j = 0; j < (args.length - 1); j++) {
+ newcommand = newcommand + args[j + 1] + " ";
+ }
+ newcommand = newcommand + "-o " + object;
+ newargs = newcommand.split(" ");
+ args = newargs;
+ } else
+ if (!args[1].startsWith("-")) //if user give command like list queue or something without minus argument
+ return commandLineOptions; //for the second wordxi
+
+ commandname = args[0];
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].startsWith("-")) {
+ if (STARTED == state) {
+ // fresh one
+ state = NEW_OPTION;
+ optionType = args[i];
+ } else if (SUB_PARAM_OF_OPTION == state || NEW_OPTION == state) {
+ // new one but old one should be saved
+ commandLineOption =
+ new CommandLineOption(optionType, optionBundle);
+ commandLineOptions.put(commandLineOption.getOptionType(),
+ commandLineOption);
+ state = NEW_OPTION;
+ optionType = args[i];
+ optionBundle = null;
+
+ }
+ } else {
+ if (NEW_OPTION == state) {
+ optionBundle = new ArrayList();
+ optionBundle.add(args[i]);
+ state = SUB_PARAM_OF_OPTION;
+
+ } else if (SUB_PARAM_OF_OPTION == state) {
+ optionBundle.add(args[i]);
+ }
+
+
+ }
+ }
+ commandLineOption = new CommandLineOption(optionType, optionBundle);
+ commandLineOptions.put(commandLineOption.getOptionType(), commandLineOption);
+ return commandLineOptions;
+
+ }
+
+ public Map parsefirst(String[] args) {
+ Map commandLineOptions = new HashMap();
+ if (0 == args.length) {
+ return commandLineOptions;
+ } else if (1 == args.length) {
+ return commandLineOptions;
+ }
+ /* when user is not giving the command line option with a "=" */
+// if (!args[2].startsWith("-"))
+// return commandLineOptions;
+
+ //State 0 means started
+ //State 1 means earlier one was a new -option
+ //State 2 means earlier one was a sub param of a -option
+
+ int state = STARTED;
+ ArrayList optionBundle = null;
+ String optionType = null;
+ CommandLineOption commandLineOption;
+ String newcommand = "";
+ String[] newargs;
+ int j;
+
+ for (int i = 0; i < args.length; i++) {
+ if (args[i].startsWith("-")) {
+ if (STARTED == state) {
+ // fresh one
+ state = NEW_OPTION;
+ optionType = args[i];
+ } else if (SUB_PARAM_OF_OPTION == state || NEW_OPTION == state) {
+ // new one but old one should be saved
+ commandLineOption =
+ new CommandLineOption(optionType, optionBundle);
+ commandLineOptions.put(commandLineOption.getOptionType(),
+ commandLineOption);
+ state = NEW_OPTION;
+ optionType = args[i];
+ optionBundle = null;
+
+ }
+ } else {
+ if (NEW_OPTION == state) {
+ optionBundle = new ArrayList();
+ optionBundle.add(args[i]);
+ state = SUB_PARAM_OF_OPTION;
+
+ } else if (SUB_PARAM_OF_OPTION == state) {
+ optionBundle.add(args[i]);
+ }
+
+
+ }
+ }
+ commandLineOption = new CommandLineOption(optionType, optionBundle);
+ commandLineOptions.put(commandLineOption.getOptionType(), commandLineOption);
+ return commandLineOptions;
+
+ }
+
+ public Map getAlloptions() {
+ return this.commandlineoption;
+ }
+
+ public String getcommandname() {
+ return this.commandname;
+ }
+
+ private static String removeSpaces(String s) {
+ StringTokenizer st = new StringTokenizer(s, " ", false);
+ String t = "";
+ while (st.hasMoreElements()) t += st.nextElement();
+ return t;
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfigProperty.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfigProperty.java
new file mode 100644
index 0000000000..27e4527619
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfigProperty.java
@@ -0,0 +1,47 @@
+/*
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*/
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.utils;
+
+
+public class JMXConfigProperty {
+
+ private static final String DEFAULT_HOST_NAME = "localhost";
+ private static final String DEFAULT_PORT = "8999";
+ private static final String DEFAULT_INTERVAL = "4000";
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfiguration.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfiguration.java
new file mode 100644
index 0000000000..622f9d78bd
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXConfiguration.java
@@ -0,0 +1,148 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.qpid.utils;
+
+import org.apache.qpid.Command;
+
+import java.util.Map;
+
+public class JMXConfiguration {
+ private String hostname = "localhost";
+ private String port = "8999";
+ private String interval = "40000";
+ private String outputpath = ".";
+ private String report_file = "report.output";
+ private boolean isreport_mode = false;
+
+ public JMXConfiguration(Map map) {
+ if (checkoptionsetting(CommandLineOptionConstants.JMXCommandLineOptionConstants.HOST_OPTION, map)) {
+ this.hostname = optionchecker(CommandLineOptionConstants.JMXCommandLineOptionConstants.HOST_OPTION, map);
+ }
+ if (checkoptionsetting(CommandLineOptionConstants.JMXCommandLineOptionConstants.PORT_OPTION, map)) {
+ this.port = optionchecker(CommandLineOptionConstants.JMXCommandLineOptionConstants.PORT_OPTION, map);
+ }
+ if (checkoptionsetting(CommandLineOptionConstants.JMXCommandLineOptionConstants.REPORT_OPTION, map)) {
+
+ this.report_file = optionchecker(CommandLineOptionConstants.JMXCommandLineOptionConstants.REPORT_OPTION, map);
+ }
+
+ }
+
+ public void sethostname(String hostname) {
+ this.hostname = hostname;
+ }
+
+ public void setport(String port) {
+ this.port = port;
+ }
+
+ public void setinterval(String interval) {
+ this.interval = interval;
+ }
+
+ public void setoutputpath(String output) {
+ this.outputpath = output;
+ }
+
+ public String gethostname() {
+ return this.hostname;
+ }
+
+ public String getport() {
+ return this.port;
+ }
+
+ public String getinterval() {
+ return this.interval;
+ }
+
+ public String getoutputpath() {
+ return this.outputpath;
+ }
+
+ public CommandLineOption loadoption(String option, Map options) {
+ CommandLineOption op = null;
+ if (option != null) {
+ op = (CommandLineOption) options.get(option);
+
+ }
+ return op;
+
+ }
+
+ public void setreportfile(String reportfile) {
+ this.report_file = reportfile;
+ this.isreport_mode = true;
+
+ }
+
+ public boolean isreportmode() {
+ return this.isreport_mode;
+ }
+
+ public String getreportfile() {
+ return this.report_file;
+ }
+
+ public String optionchecker(String option_letter, Map map) {
+
+ if (map == null)
+ return null;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if (option == null)
+ return null;
+ String value = option.getOptionValue();
+ return value;
+ }
+
+ public boolean checkoptionsetting(String option_letter, Map map) {
+ if (map == null)
+ return false;
+ CommandLineOption option = (CommandLineOption) map.get(option_letter);
+ if (option == null)
+ return false;
+ String value = option.getOptionType();
+
+ if (value != null)
+ return true;
+ else
+ return false;
+ }
+
+}
diff --git a/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXinfo.java b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXinfo.java
new file mode 100644
index 0000000000..af3e5c7be0
--- /dev/null
+++ b/java/management/tools/qpid-cli/src/org/apache/qpid/utils/JMXinfo.java
@@ -0,0 +1,72 @@
+ /*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+/*
+ *
+ * Copyright (c) 2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.qpid.utils;
+
+import javax.management.remote.JMXConnector;
+import javax.management.MBeanServerConnection;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: lahiru
+ * Date: Jun 3, 2008
+ * Time: 9:21:08 PM
+ * To change this template use File | Settings | File Templates.
+ */
+public class JMXinfo {
+ private JMXConnector jmxconnector;
+ private CommandLineOptionParser input;
+ private MBeanServerConnection mbserverconnector;
+
+ public JMXinfo(JMXConnector jmxc, CommandLineOptionParser input, MBeanServerConnection mbsc) {
+ this.jmxconnector = jmxc;
+ this.input = input;
+ this.mbserverconnector = mbsc;
+ }
+
+ public JMXConnector getjmxconnectot() {
+ return jmxconnector;
+ }
+
+ public CommandLineOptionParser getCommandLineOptionParser() {
+ return input;
+ }
+
+ public MBeanServerConnection getmbserverconnector() {
+ return mbserverconnector;
+ }
+}