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(" "));
+ }
+
}