You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/09/07 09:42:58 UTC

svn commit: r993260 - in /camel/trunk/components/camel-jasypt/src: main/java/org/apache/camel/component/jasypt/Main.java test/java/org/apache/camel/component/jasypt/MainTest.java

Author: davsclaus
Date: Tue Sep  7 07:42:58 2010
New Revision: 993260

URL: http://svn.apache.org/viewvc?rev=993260&view=rev
Log:
CAMEL-2987: The jasypt tool is not dependent on camel-core anymore.

Modified:
    camel/trunk/components/camel-jasypt/src/main/java/org/apache/camel/component/jasypt/Main.java
    camel/trunk/components/camel-jasypt/src/test/java/org/apache/camel/component/jasypt/MainTest.java

Modified: camel/trunk/components/camel-jasypt/src/main/java/org/apache/camel/component/jasypt/Main.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jasypt/src/main/java/org/apache/camel/component/jasypt/Main.java?rev=993260&r1=993259&r2=993260&view=diff
==============================================================================
--- camel/trunk/components/camel-jasypt/src/main/java/org/apache/camel/component/jasypt/Main.java (original)
+++ camel/trunk/components/camel-jasypt/src/main/java/org/apache/camel/component/jasypt/Main.java Tue Sep  7 07:42:58 2010
@@ -16,36 +16,93 @@
  */
 package org.apache.camel.component.jasypt;
 
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.LinkedList;
-import java.util.Map;
-import javax.xml.bind.JAXBException;
+import java.util.List;
 
-import org.apache.camel.CamelContext;
-import org.apache.camel.ProducerTemplate;
-import org.apache.camel.impl.MainSupport;
-import org.apache.camel.util.ObjectHelper;
-import org.apache.camel.view.ModelFileGenerator;
 import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
 
 /**
  * @version $Revision$
  */
-public class Main extends MainSupport {
-
-    private StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
+public class Main {
 
+    private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
+    private final List<Option> options = new ArrayList<Option>();
     private String command;
     private String password;
     private String input;
     private String algorithm;
 
-    public Main() {
-        options.clear();
+    private abstract class Option {
+        private String abbreviation;
+        private String fullName;
+        private String description;
+
+        protected Option(String abbreviation, String fullName, String description) {
+            this.abbreviation = "-" + abbreviation;
+            this.fullName = "-" + fullName;
+            this.description = description;
+        }
+
+        public boolean processOption(String arg, LinkedList<String> remainingArgs) {
+            if (arg.equalsIgnoreCase(abbreviation) || fullName.startsWith(arg)) {
+                doProcess(arg, remainingArgs);
+                return true;
+            }
+            return false;
+        }
+
+        public String getAbbreviation() {
+            return abbreviation;
+        }
+
+        public String getDescription() {
+            return description;
+        }
+
+        public String getFullName() {
+            return fullName;
+        }
+
+        public String getInformation() {
+            return "  " + getAbbreviation() + " or " + getFullName() + " = " + getDescription();
+        }
+
+        protected abstract void doProcess(String arg, LinkedList<String> remainingArgs);
+    }
+
+    private abstract class ParameterOption extends Option {
+        private String parameterName;
+
+        protected ParameterOption(String abbreviation, String fullName, String description, String parameterName) {
+            super(abbreviation, fullName, description);
+            this.parameterName = parameterName;
+        }
+
+        protected void doProcess(String arg, LinkedList<String> remainingArgs) {
+            if (remainingArgs.isEmpty()) {
+                System.err.println("Expected fileName for ");
+                showOptions();
+            } else {
+                String parameter = remainingArgs.removeFirst();
+                doProcess(arg, parameter, remainingArgs);
+            }
+        }
 
+        public String getInformation() {
+            return "  " + getAbbreviation() + " or " + getFullName()
+                    + " <" + parameterName + "> = " + getDescription();
+        }
+
+        protected abstract void doProcess(String arg, String parameter, LinkedList<String> remainingArgs);
+    }
+
+    public Main() {
         addOption(new Option("h", "help", "Displays the help screen") {
             protected void doProcess(String arg, LinkedList<String> remainingArgs) {
                 showOptions();
-                completed();
             }
         });
 
@@ -78,37 +135,68 @@ public class Main extends MainSupport {
         });
     }
 
-    @Override
-    public void showOptionsHeader() {
+    private void addOption(Option option) {
+        options.add(option);
+    }
+
+    private void showOptions() {
         System.out.println("Apache Camel Jasypt takes the following options");
         System.out.println();
+        for (Option option : options) {
+            System.out.println(option.getInformation());
+        }
+        System.out.println();
+        System.out.println();
     }
 
-    protected ProducerTemplate findOrCreateCamelTemplate() {
-        // noop
-        return null;
-    }
+    private boolean parseArguments(String[] arguments) {
+        LinkedList<String> args = new LinkedList<String>(Arrays.asList(arguments));
 
-    protected Map<String, CamelContext> getCamelContextMap() {
-        // noop
-        return null;
-    }
+        boolean valid = true;
+        while (!args.isEmpty()) {
+            String arg = args.removeFirst();
+
+            boolean handled = false;
+            for (Option option : options) {
+                if (option.processOption(arg, args)) {
+                    handled = true;
+                    break;
+                }
+            }
+            if (!handled) {
+                System.out.println("Error: Unknown option: " + arg);
+                System.out.println();
+                valid = false;
+                break;
+            }
+        }
 
-    protected ModelFileGenerator createModelFileGenerator() throws JAXBException {
-        // noop
-        return null;
+        return valid;
     }
 
-    @Override
-    public void run() throws Exception {
-        if (ObjectHelper.isEmpty(command)) {
-            throw new IllegalArgumentException("Command is empty");
+    public void run(String[] args) throws Exception {
+        if (!parseArguments(args)) {
+            showOptions();
+            return;
         }
-        if (ObjectHelper.isEmpty(password)) {
-            throw new IllegalArgumentException("Password is empty");
+
+        if (command == null) {
+            System.out.println("Error: Command is empty");
+            System.out.println();
+            showOptions();
+            return;
         }
-        if (ObjectHelper.isEmpty(input)) {
-            throw new IllegalArgumentException("Input is empty");
+        if (password == null) {
+            System.out.println("Error: Password is empty");
+            System.out.println();
+            showOptions();
+            return;
+        }
+        if (input == null) {
+            System.out.println("Error: Input is empty");
+            System.out.println();
+            showOptions();
+            return;
         }
 
         encryptor.setPassword(password);

Modified: camel/trunk/components/camel-jasypt/src/test/java/org/apache/camel/component/jasypt/MainTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jasypt/src/test/java/org/apache/camel/component/jasypt/MainTest.java?rev=993260&r1=993259&r2=993260&view=diff
==============================================================================
--- camel/trunk/components/camel-jasypt/src/test/java/org/apache/camel/component/jasypt/MainTest.java (original)
+++ camel/trunk/components/camel-jasypt/src/test/java/org/apache/camel/component/jasypt/MainTest.java Tue Sep  7 07:42:58 2010
@@ -41,4 +41,22 @@ public class MainTest extends TestCase {
         main.run("-c decrypt -p secret -i bsW9uV37gQ0QHFu7KO03Ww==".split(" "));
     }
 
+    @Test
+    public void testUnknownOption() throws Exception {
+        Main main = new Main();
+        main.run("-c encrypt -xxx foo".split(" "));
+    }
+
+    @Test
+    public void testMissingPassword() throws Exception {
+        Main main = new Main();
+        main.run("-c encrypt -i tiger".split(" "));
+    }
+
+    @Test
+    public void testMissingInput() throws Exception {
+        Main main = new Main();
+        main.run("-c encrypt -p secret".split(" "));
+    }
+
 }