Author: ritchiem
Date: Thu Jul 5 05:40:50 2007
New Revision: 553480
URL: http://svn.apache.org/viewvc?view=rev&rev=553480
Log:
Minor changes and tidy up when running via command line.
Added Copy command.
Added:
incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml (contents,
props changed)
- copied, changed from r553248,
incubator/qpid/branches/M2/java/broker/etc/messagestoretool-log4j.xml
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
(with props)
Removed:
incubator/qpid/branches/M2/java/broker/etc/messagestoretool-log4j.xml
Modified:
incubator/qpid/branches/M2/java/broker/bin/msTool.sh
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/MessageStoreTool.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Dump.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Help.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/List.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Select.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Show.java
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/utils/SimpleCommandParser.java
Modified: incubator/qpid/branches/M2/java/broker/bin/msTool.sh
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/bin/msTool.sh?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
--- incubator/qpid/branches/M2/java/broker/bin/msTool.sh (original)
+++ incubator/qpid/branches/M2/java/broker/bin/msTool.sh Thu Jul 5 05:40:50
2007
@@ -19,16 +19,38 @@
#
# Set classpath to include Qpid jar with all required jars in manifest
-QPID_LIBS=$QPID_HOME/lib/qpid-incubating.jar
+QPID_LIBS=$QPID_TOOLS/lib/qpid-incubating.jar
+
+die() {
+ if [[ $1 = -usage ]]; then
+ shift
+ usage=true
+ else
+ usage=false
+ fi
+ echo "$@"
+ $usage && echo
+ $usage && usage
+ exit 1
+}
+
+cygwin=false
+if [[ "$(uname -a | fgrep Cygwin)" != "" ]]; then
+ cygwin=true
+fi
+
+if $cygwin; then
+ QPID_TOOLS=$(cygpath -w $QPID_TOOLS)
+fi
# Set other variables used by the qpid-run script before calling
export JAVA=java \
JAVA_VM=-server \
-
JAVA_OPTS=-Dlog4j.configuration=$QPID_TOOLS\etc\messagestoretool-log4j.xml \
+ JAVA_OPTS=-Dlog4j.configuration=file:$QPID_TOOLS/etc/mstool-log4j.xml \
QPID_CLASSPATH=$QPID_LIBS
if [ -z "$QPID_TOOLS" ]; then
- die "QPID_HOME must be set"
+ die "QPID_TOOLS be set"
fi
. qpid-run org.apache.qpid.tools.messagestore.MessageStoreTool "$@"
Copied: incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml (from
r553248, incubator/qpid/branches/M2/java/broker/etc/messagestoretool-log4j.xml)
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml?view=diff&rev=553480&p1=incubator/qpid/branches/M2/java/broker/etc/messagestoretool-log4j.xml&r1=553248&p2=incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml&r2=553480
==============================================================================
--- incubator/qpid/branches/M2/java/broker/etc/messagestoretool-log4j.xml
(original)
+++ incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml Thu Jul 5
05:40:50 2007
@@ -25,7 +25,8 @@
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d %-5p [%t] %C{2} (%F:%L)
- %m%n"/>
+ <!--param name="ConversionPattern" value="%d %-5p [%t] %C{2}
(%F:%L) - %m%n"/-->
+ <param name="ConversionPattern" value="%d %-5p [%t] (%F:%L) -
%m%n"/>
</layout>
</appender>
@@ -34,11 +35,11 @@
</category>
<category name="org.apache.qpid">
- <priority value="info"/>
+ <priority value="error"/>
</category>
<category name="org.apache.qpid.server.security">
- <priority value="info"/>
+ <priority value="error"/>
</category>
<category name="org.apache.qpid.server.management">
Propchange: incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: incubator/qpid/branches/M2/java/broker/etc/mstool-log4j.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/MessageStoreTool.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/MessageStoreTool.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/MessageStoreTool.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/MessageStoreTool.java
Thu Jul 5 05:40:50 2007
@@ -32,6 +32,7 @@
import org.apache.qpid.server.virtualhost.VirtualHost;
import org.apache.qpid.tools.messagestore.commands.Clear;
import org.apache.qpid.tools.messagestore.commands.Command;
+import org.apache.qpid.tools.messagestore.commands.Copy;
import org.apache.qpid.tools.messagestore.commands.Dump;
import org.apache.qpid.tools.messagestore.commands.Help;
import org.apache.qpid.tools.messagestore.commands.List;
@@ -56,7 +57,9 @@
import java.io.OutputStreamWriter;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.Map;
+import java.util.StringTokenizer;
/**
* MessageStoreTool.
@@ -85,6 +88,7 @@
/** Control used for main run loop. */
private boolean _running = true;
+ private boolean _initialised = false;
//---------------------------------------------------------------------------------------------------/
@@ -182,13 +186,16 @@
public void quit()
{
- ApplicationRegistry.remove(1);
+ _running = false;
+
+ if (_initialised)
+ {
+ ApplicationRegistry.remove(1);
+ }
_console.println("...exiting");
_console.close();
-
- _running = false;
}
public void setBatchMode(boolean batchmode)
@@ -203,6 +210,15 @@
{
setup();
+ if (!_initialised)
+ {
+ System.exit(1);
+ }
+
+ _console.println("");
+
+ _console.println(BOILER_PLATE);
+
runCLI();
}
@@ -212,8 +228,6 @@
loadCommands();
- _console.println(BOILER_PLATE);
-
_state.clearAll();
}
@@ -222,6 +236,7 @@
_commands.clear();
//todo Dynamically load the classes that exis in
com.redhat.etp.qpid.commands
_commands.put("close", new Clear(this));
+ _commands.put("copy", new Copy(this));
_commands.put("dump", new Dump(this));
_commands.put("help", new Help(this));
_commands.put("list", new List(this));
@@ -256,9 +271,11 @@
ConfigurationFileApplicationRegistry registry = new
ConfigurationFileApplicationRegistry(configFile);
ApplicationRegistry.remove(1);
+
ApplicationRegistry.initialise(registry);
checkMessageStores();
+ _initialised = true;
}
catch (ConfigurationException e)
{
@@ -314,12 +331,15 @@
{
exec(args);
- if (!_batchMode)
+ if (_running)
{
- printPrompt();
- }
+ if (!_batchMode)
+ {
+ printPrompt();
+ }
- args = _console.readCommand();
+ args = _console.readCommand();
+ }
}
}
}
@@ -571,6 +591,47 @@
public void clearMessages()
{
_msgids = null;
+ }
+
+ /**
+ * A common location to provide parsing of the message id string
+ * utilised by a number of the commands.
+ * The String is comma separated list of ids that can be individual ids
+ * or a range (4-10)
+ *
+ * @param msgString string of msg ids to parse 1,2,4-10
+ */
+ public void setMessages(String msgString)
+ {
+ StringTokenizer tok = new StringTokenizer(msgString, ",");
+
+ if (tok.hasMoreTokens())
+ {
+ _msgids = new LinkedList<Long>();
+ }
+
+ while (tok.hasMoreTokens())
+ {
+ String next = tok.nextToken();
+ if (next.contains("-"))
+ {
+ Long start = Long.parseLong(next.substring(0,
next.indexOf("-")));
+ Long end = Long.parseLong(next.substring(next.indexOf("-")
+ 1));
+
+ if (end >= start)
+ {
+ for (long l = start; l <= end; l++)
+ {
+ _msgids.add(l);
+ }
+ }
+ }
+ else
+ {
+ _msgids.add(Long.parseLong(next));
+ }
+ }
+
}
public void setMessages(java.util.List<Long> msgids)
Added:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java?view=auto&rev=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
(added)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
Thu Jul 5 05:40:50 2007
@@ -0,0 +1,149 @@
+/*
+ * 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.tools.messagestore.commands;
+
+import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.server.queue.AMQQueue;
+import org.apache.qpid.server.store.StoreContext;
+import org.apache.qpid.tools.messagestore.MessageStoreTool;
+
+public class Copy extends AbstractCommand
+{
+
+ /**
+ * Since the Coopy command is not associated with a real channel we can
safely create our own store context
+ * for use in the few methods that require one.
+ */
+ private StoreContext _storeContext = new StoreContext();
+
+ public Copy(MessageStoreTool tool)
+ {
+ super(tool);
+ }
+
+ public String help()
+ {
+ return "Copy messages between queues.\n" +
+ "The currently selected message set will be copied to the
specifed queue.\n" +
+ "Alternatively the values can be provided on the command line.";
+ }
+
+ public String usage()
+ {
+ return "copy to=<queue> [from=<queue>] [msgids=<msgids eg, 1,2,4-10>]";
+ }
+
+ public String getCommand()
+ {
+ return "copy";
+ }
+
+ public void execute(String... args)
+ {
+ AMQQueue toQueue = null;
+ AMQQueue fromQueue = _tool.getState().getQueue();
+ java.util.List<Long> msgids = _tool.getState().getMessages();
+
+ if (args.length >= 2)
+ {
+ for (String arg : args)
+ {
+ if (arg.startsWith("to="))
+ {
+ String queueName = arg.substring(arg.indexOf("=") + 1);
+ toQueue =
_tool.getState().getVhost().getQueueRegistry().getQueue(new
AMQShortString(queueName));
+ }
+
+ if (arg.startsWith("from="))
+ {
+ String queueName = arg.substring(arg.indexOf("=") + 1);
+ fromQueue =
_tool.getState().getVhost().getQueueRegistry().getQueue(new
AMQShortString(queueName));
+ }
+
+ if (arg.startsWith("msgids="))
+ {
+ String msgidStr = arg.substring(arg.indexOf("=") + 1);
+
+ // Record the current message selection
+ java.util.List<Long> currentIDs =
_tool.getState().getMessages();
+
+ // Use the ToolState class to perform the messasge parsing
+ _tool.getState().setMessages(msgidStr);
+ msgids = _tool.getState().getMessages();
+
+ // Reset the original selection of messages
+ _tool.getState().setMessages(currentIDs);
+ }
+ }
+ }
+
+ if (toQueue == null)
+ {
+ _console.println("Queue to copy to not specifed.");
+ _console.println(usage());
+ return;
+ }
+
+ if (fromQueue == null)
+ {
+ _console.println("Queue to copy from not specifed.");
+ _console.println(usage());
+ return;
+ }
+
+ performCopy(fromQueue, toQueue, msgids);
+ }
+
+ protected void performCopy(AMQQueue fromQueue, AMQQueue toQueue,
java.util.List<Long> msgids)
+ {
+ Long previous = null;
+ Long start = null;
+
+ for (long id : msgids)
+ {
+ if (previous != null)
+ {
+ if (id == previous + 1)
+ {
+ if (start == null)
+ {
+ start = previous;
+ }
+ }
+ else
+ {
+ if (start != null)
+ {
+ //move a range of ids
+ fromQueue.moveMessagesToAnotherQueue(start, id,
toQueue.getName().toString(), _storeContext);
+ }
+ else
+ {
+ //move a single id
+ fromQueue.moveMessagesToAnotherQueue(id, id,
toQueue.getName().toString(), _storeContext);
+ }
+ }
+ }
+
+ previous = id;
+ }
+ }
+}
Propchange:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Copy.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Dump.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Dump.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Dump.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Dump.java
Thu Jul 5 05:40:50 2007
@@ -54,7 +54,7 @@
public String usage()
{
- return getCommand() + "
[show=[all],[msgheaders],[_amqHeaders],[routing],[content] id=<msgid e.g.
1,2,4-10>";
+ return getCommand() + "
[show=[all],[msgheaders],[_amqHeaders],[routing],[content]] [id=<msgid e.g.
1,2,4-10>]";
}
public String getCommand()
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Help.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Help.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Help.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Help.java
Thu Jul 5 05:40:50 2007
@@ -35,7 +35,7 @@
public String help()
{
- return "Provides detailed help on commands. ";
+ return "Provides detailed help on commands.";
}
public String getCommand()
@@ -59,6 +59,7 @@
if (command != null)
{
_console.println(command.help());
+ _console.println("Usage:" + command.usage());
}
else
{
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/List.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/List.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/List.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/List.java
Thu Jul 5 05:40:50 2007
@@ -47,12 +47,12 @@
public String help()
{
- return "list availble items.";
+ return "list available items.";
}
public String usage()
{
- return "list queues [<exchange>] | exchanges| bindings [<exchange>] |
all.";
+ return "list queues [<exchange>] | exchanges | bindings [<exchange>] |
all";
}
public String getCommand()
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Select.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Select.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Select.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Select.java
Thu Jul 5 05:40:50 2007
@@ -41,12 +41,12 @@
public String help()
{
- return "Perform a selection";
+ return "Perform a selection.";
}
public String usage()
{
- return "select virtualhost <name> |exchange <name> |queue <name> |
msgs id=< msgids eg. 1,2,4-10 >";
+ return "select virtualhost <name> |exchange <name> |queue <name> |
msgs id=<msgids eg. 1,2,4-10>";
}
public String getCommand()
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Show.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Show.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Show.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/messagestore/commands/Show.java
Thu Jul 5 05:40:50 2007
@@ -52,7 +52,7 @@
public String usage()
{
- return getCommand() + "
[show=[all],[msgheaders],[amqheaders],[routing] id=<msgid e.g. 1,2,4-10>";
+ return getCommand() + "
[show=[all],[msgheaders],[amqheaders],[routing]] [id=<msgid e.g. 1,2,4-10>]";
}
public String getCommand()
@@ -94,35 +94,6 @@
if (arg.startsWith("id="))
{
- StringTokenizer tok = new
StringTokenizer(arg.substring(arg.indexOf("=") + 1), ",");
-
- if (tok.hasMoreTokens())
- {
- msgids = new LinkedList<Long>();
- }
-
- while (tok.hasMoreTokens())
- {
- String next = tok.nextToken();
- if (next.contains("-"))
- {
- Long start = Long.parseLong(next.substring(0,
next.indexOf("-")));
- Long end =
Long.parseLong(next.substring(next.indexOf("-") + 1));
-
- if (end >= start)
- {
- for (long l = start; l <= end; l++)
- {
- msgids.add(l);
- }
- }
- }
- else
- {
- msgids.add(Long.parseLong(next));
- }
- }
-
_tool.getState().setMessages(msgids);
}
}//for args
@@ -133,7 +104,7 @@
{
if (_tool.getState().getVhost() == null)
{
- _console.println("No Virtualhost open. Open a Virtualhost first.");
+ _console.println("No Virtualhost selected. 'DuSelect' a
Virtualhost first.");
return;
}
Modified:
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/utils/SimpleCommandParser.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/utils/SimpleCommandParser.java?view=diff&rev=553480&r1=553479&r2=553480
==============================================================================
---
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/utils/SimpleCommandParser.java
(original)
+++
incubator/qpid/branches/M2/java/broker/src/main/java/org/apache/qpid/tools/utils/SimpleCommandParser.java
Thu Jul 5 05:40:50 2007
@@ -65,6 +65,11 @@
_nextCommand = null;
}
+ if (input == null)
+ {
+ return null;
+ }
+
StringTokenizer tok = new StringTokenizer(input, " ");
int tokenCount = tok.countTokens();