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();


Reply via email to