diff options
| author | Lahiru Gunathilake <lahiru@apache.org> | 2008-10-07 09:07:34 +0000 |
|---|---|---|
| committer | Lahiru Gunathilake <lahiru@apache.org> | 2008-10-07 09:07:34 +0000 |
| commit | cc4c4be4b6b7c4a4fdfe22de9d9f40974f7d6971 (patch) | |
| tree | 1a713368ba8ab8ce222e23fe1760d1e01ea2d559 /java/management/tools/qpid-cli/src/org | |
| parent | cdd462bf0c1d899f46d2b72615408f183e6a952e (diff) | |
| download | qpid-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')
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; + } +} |
