From a9223e42ebc04d420b2e62e9e57450408ee9f513 Mon Sep 17 00:00:00 2001 From: "Adrian T. Co" Date: Mon, 18 Jun 2007 04:32:17 +0000 Subject: [PATCH] Fix for https://issues.apache.org/activemq/browse/AMQ-1167. Thanks for the heads up Woonsan. Added some spelling corrections. git-svn-id: https://svn.apache.org/repos/asf/activemq/branches/activemq-4.1@548207 13f79535-47bb-0310-9956-ffa450edef68 --- ...neSupport.java => CommandLineSupport.java} | 228 +++++++++--------- .../src/release/example/src/ConsumerTool.java | 6 +- .../example/src/ProducerAndConsumerTool.java | 24 +- .../src/release/example/src/ProducerTool.java | 10 +- .../release/example/src/RequesterTool.java | 6 +- .../release/example/src/TopicListener.java | 8 +- .../release/example/src/TopicPublisher.java | 6 +- .../src/release/example/src/Utilities.java | 39 +++ 8 files changed, 183 insertions(+), 144 deletions(-) rename assembly/src/release/example/src/{CommnadLineSupport.java => CommandLineSupport.java} (95%) create mode 100644 assembly/src/release/example/src/Utilities.java diff --git a/assembly/src/release/example/src/CommnadLineSupport.java b/assembly/src/release/example/src/CommandLineSupport.java similarity index 95% rename from assembly/src/release/example/src/CommnadLineSupport.java rename to assembly/src/release/example/src/CommandLineSupport.java index e93ab7b906..230697868a 100644 --- a/assembly/src/release/example/src/CommnadLineSupport.java +++ b/assembly/src/release/example/src/CommandLineSupport.java @@ -1,114 +1,114 @@ -/** - * - * 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. - */ - -import java.util.ArrayList; - -import org.apache.activemq.util.IntrospectionSupport; - -/** - * Helper utility that can be used to set the properties on any object - * using command line arguments. - * - * @author Hiram Chirino - */ -public class CommnadLineSupport { - - /** - * Sets the properties of an object given the command line args. - * - * if args contains: --ack-mode=AUTO --url=tcp://localhost:61616 --persistent - * - * then it will try to call the following setters on the target object. - * - * target.setAckMode("AUTO"); - * target.setURL(new URI("tcp://localhost:61616") ); - * target.setPersistent(true); - * - * Notice the the proper conversion for the argument is determined by examining the - * setter arguement type. - * - * @param target the object that will have it's properties set - * @param args the commline options - * @return any arguments that are not valid options for the target - */ - static public String[] setOptions(Object target, String []args) { - ArrayList rc = new ArrayList(); - - for (int i = 0; i < args.length; i++) { - if( args[i] == null ) - continue; - - if( args[i].startsWith("--") ) { - - // --options without a specified value are considered boolean flags that are enabled. - String value="true"; - String name = args[i].substring(2); - - // if --option=value case - int p = name.indexOf("="); - if( p > 0 ) { - value = name.substring(p+1); - name = name.substring(0,p); - } - - // name not set, then it's an unrecognized option - if( name.length()==0 ) { - rc.add(args[i]); - continue; - } - - String propName = convertOptionToPropertyName(name); - if( !IntrospectionSupport.setProperty(target, propName, value) ) { - rc.add(args[i]); - continue; - } - } - - } - - String r[] = new String[rc.size()]; - rc.toArray(r); - return r; - } - - /** - * converts strings like: test-enabled to testEnabled - * @param name - * @return - */ - private static String convertOptionToPropertyName(String name) { - String rc=""; - - // Look for '-' and strip and then convert the subsequent char to uppercase - int p = name.indexOf("-"); - while( p > 0 ) { - // strip - rc += name.substring(0, p); - name = name.substring(p+1); - - // can I convert the next char to upper? - if( name.length() >0 ) { - rc += name.substring(0,1).toUpperCase(); - name = name.substring(1); - } - - p = name.indexOf("-"); - } - return rc+name; - } -} +/** + * + * 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. + */ + +import java.util.ArrayList; + +import org.apache.activemq.util.IntrospectionSupport; + +/** + * Helper utility that can be used to set the properties on any object + * using command line arguments. + * + * @author Hiram Chirino + */ +public class CommandLineSupport { + + /** + * Sets the properties of an object given the command line args. + * + * if args contains: --ack-mode=AUTO --url=tcp://localhost:61616 --persistent + * + * then it will try to call the following setters on the target object. + * + * target.setAckMode("AUTO"); + * target.setURL(new URI("tcp://localhost:61616") ); + * target.setPersistent(true); + * + * Notice the the proper conversion for the argument is determined by examining the + * setter arguement type. + * + * @param target the object that will have it's properties set + * @param args the commline options + * @return any arguments that are not valid options for the target + */ + static public String[] setOptions(Object target, String []args) { + ArrayList rc = new ArrayList(); + + for (int i = 0; i < args.length; i++) { + if( args[i] == null ) + continue; + + if( args[i].startsWith("--") ) { + + // --options without a specified value are considered boolean flags that are enabled. + String value="true"; + String name = args[i].substring(2); + + // if --option=value case + int p = name.indexOf("="); + if( p > 0 ) { + value = name.substring(p+1); + name = name.substring(0,p); + } + + // name not set, then it's an unrecognized option + if( name.length()==0 ) { + rc.add(args[i]); + continue; + } + + String propName = convertOptionToPropertyName(name); + if( !IntrospectionSupport.setProperty(target, propName, value) ) { + rc.add(args[i]); + continue; + } + } + + } + + String r[] = new String[rc.size()]; + rc.toArray(r); + return r; + } + + /** + * converts strings like: test-enabled to testEnabled + * @param name + * @return + */ + private static String convertOptionToPropertyName(String name) { + String rc=""; + + // Look for '-' and strip and then convert the subsequent char to uppercase + int p = name.indexOf("-"); + while( p > 0 ) { + // strip + rc += name.substring(0, p); + name = name.substring(p+1); + + // can I convert the next char to upper? + if( name.length() >0 ) { + rc += name.substring(0,1).toUpperCase(); + name = name.substring(1); + } + + p = name.indexOf("-"); + } + return rc+name; + } +} diff --git a/assembly/src/release/example/src/ConsumerTool.java b/assembly/src/release/example/src/ConsumerTool.java index 02503e7d7c..f7bdb84035 100755 --- a/assembly/src/release/example/src/ConsumerTool.java +++ b/assembly/src/release/example/src/ConsumerTool.java @@ -66,9 +66,9 @@ public class ConsumerTool implements MessageListener, ExceptionListener { public static void main(String[] args) { ConsumerTool consumerTool = new ConsumerTool(); - String[] unknonwn = CommnadLineSupport.setOptions(consumerTool, args); - if (unknonwn.length > 0) { - System.out.println("Unknown options: " + Arrays.toString(unknonwn)); + String[] unknown = CommandLineSupport.setOptions(consumerTool, args); + if (unknown.length > 0) { + System.out.println("Unknown options: " + Utilities.arrayToString(unknown)); System.exit(-1); } consumerTool.run(); diff --git a/assembly/src/release/example/src/ProducerAndConsumerTool.java b/assembly/src/release/example/src/ProducerAndConsumerTool.java index ffe28cea98..daba45dd6d 100644 --- a/assembly/src/release/example/src/ProducerAndConsumerTool.java +++ b/assembly/src/release/example/src/ProducerAndConsumerTool.java @@ -30,23 +30,23 @@ public class ProducerAndConsumerTool extends ConsumerTool implements MessageList public static void main(String[] args) { - ConsumerTool consumerTool = new ConsumerTool(); - String[] unknonwn = CommnadLineSupport.setOptions(consumerTool, args); - HashSet set1 = new HashSet(Arrays.asList(unknonwn)); + ConsumerTool consumerTool = new ConsumerTool(); + String[] unknown = CommandLineSupport.setOptions(consumerTool, args); + HashSet set1 = new HashSet(Arrays.asList(unknown)); - ProducerTool producerTool = new ProducerTool(); - unknonwn = CommnadLineSupport.setOptions(producerTool, args); - HashSet set2 = new HashSet(Arrays.asList(unknonwn)); + ProducerTool producerTool = new ProducerTool(); + unknown = CommandLineSupport.setOptions(producerTool, args); + HashSet set2 = new HashSet(Arrays.asList(unknown)); - set1.retainAll(set2); - if( set1.size() > 0 ) { - System.out.println("Unknown options: "+set1); - System.exit(-1); + set1.retainAll(set2); + if( set1.size() > 0 ) { + System.out.println("Unknown options: "+set1); + System.exit(-1); } - consumerTool.run(); + consumerTool.run(); producerTool.run(); } -} \ No newline at end of file +} diff --git a/assembly/src/release/example/src/ProducerTool.java b/assembly/src/release/example/src/ProducerTool.java index 23f38e6e14..b653cdffb5 100755 --- a/assembly/src/release/example/src/ProducerTool.java +++ b/assembly/src/release/example/src/ProducerTool.java @@ -52,12 +52,12 @@ public class ProducerTool { public static void main(String[] args) { ProducerTool producerTool = new ProducerTool(); - String[] unknonwn = CommnadLineSupport.setOptions(producerTool, args); - if( unknonwn.length > 0 ) { - System.out.println("Unknown options: "+Arrays.toString(unknonwn)); + String[] unknown = CommandLineSupport.setOptions(producerTool, args); + if( unknown.length > 0 ) { + System.out.println("Unknown options: "+ Utilities.arrayToString(unknown)); System.exit(-1); - } - producerTool.run(); + } + producerTool.run(); } public void run() { diff --git a/assembly/src/release/example/src/RequesterTool.java b/assembly/src/release/example/src/RequesterTool.java index 5724959e8a..c039b9577a 100644 --- a/assembly/src/release/example/src/RequesterTool.java +++ b/assembly/src/release/example/src/RequesterTool.java @@ -61,9 +61,9 @@ public class RequesterTool { public static void main(String[] args) { RequesterTool requesterTool = new RequesterTool(); - String[] unknonwn = CommnadLineSupport.setOptions(requesterTool, args); - if (unknonwn.length > 0) { - System.out.println("Unknown options: " + Arrays.toString(unknonwn)); + String[] unknown = CommandLineSupport.setOptions(requesterTool, args); + if (unknown.length > 0) { + System.out.println("Unknown options: " + Utilities.arrayToString(unknown)); System.exit(-1); } requesterTool.run(); diff --git a/assembly/src/release/example/src/TopicListener.java b/assembly/src/release/example/src/TopicListener.java index e3d705eac1..580f9ba181 100644 --- a/assembly/src/release/example/src/TopicListener.java +++ b/assembly/src/release/example/src/TopicListener.java @@ -47,12 +47,12 @@ public class TopicListener implements MessageListener { public static void main(String[] argv) throws Exception { TopicListener l = new TopicListener(); - String[] unknonwn = CommnadLineSupport.setOptions(l, argv); - if (unknonwn.length > 0) { - System.out.println("Unknown options: " + Arrays.toString(unknonwn)); + String[] unknown = CommandLineSupport.setOptions(l, argv); + if (unknown.length > 0) { + System.out.println("Unknown options: " + Utilities.arrayToString(unknown)); System.exit(-1); } - l.run(); + l.run(); } public void run() throws JMSException { diff --git a/assembly/src/release/example/src/TopicPublisher.java b/assembly/src/release/example/src/TopicPublisher.java index 2a5d68577a..0370b4b022 100644 --- a/assembly/src/release/example/src/TopicPublisher.java +++ b/assembly/src/release/example/src/TopicPublisher.java @@ -48,9 +48,9 @@ public class TopicPublisher implements MessageListener public static void main(String[] argv) throws Exception { TopicPublisher p = new TopicPublisher(); - String[] unknonwn = CommnadLineSupport.setOptions(p, argv); - if (unknonwn.length > 0) { - System.out.println("Unknown options: " + Arrays.toString(unknonwn)); + String[] unknown = CommandLineSupport.setOptions(p, argv); + if (unknown.length > 0) { + System.out.println("Unknown options: " + Utilities.arrayToString(unknown)); System.exit(-1); } p.run(); diff --git a/assembly/src/release/example/src/Utilities.java b/assembly/src/release/example/src/Utilities.java new file mode 100644 index 0000000000..2cf7edc7a7 --- /dev/null +++ b/assembly/src/release/example/src/Utilities.java @@ -0,0 +1,39 @@ +/** + * + * 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. + */ + +/** + * Generic utility class that can be used by the examples + */ +public class Utilities { + + /** + * Converts an array of objects to a string + * Useful only for Java 1.4 and below, because of the unavailability of the Arrays.toString() method. + */ + static public String arrayToString(Object target[]) { + StringBuffer buf = new StringBuffer("{"); + int i; + for (i=0; i