You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@batchee.apache.org by rm...@apache.org on 2017/06/23 14:16:57 UTC

incubator-batchee git commit: BATCHEE-121 ensure cli can use default values for options

Repository: incubator-batchee
Updated Branches:
  refs/heads/master a07bf2c7c -> fa48787aa


BATCHEE-121 ensure cli can use default values for options


Project: http://git-wip-us.apache.org/repos/asf/incubator-batchee/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-batchee/commit/fa48787a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-batchee/tree/fa48787a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-batchee/diff/fa48787a

Branch: refs/heads/master
Commit: fa48787aac9c8656f35ad9033f053707004dfb3b
Parents: a07bf2c
Author: rmannibucau <rm...@apache.org>
Authored: Fri Jun 23 16:16:47 2017 +0200
Committer: rmannibucau <rm...@apache.org>
Committed: Fri Jun 23 16:16:47 2017 +0200

----------------------------------------------------------------------
 tools/cli/src/main/assembly/bin-openejb.xml     |  9 ++++
 tools/cli/src/main/assembly/bin.xml             |  8 ++++
 .../java/org/apache/batchee/cli/BatchEECLI.java | 48 ++++++++++++++++++++
 .../batchee/cli/command/JobOperatorCommand.java |  4 --
 .../resources/default/batchee-cli.properties    | 24 ++++++++++
 .../resources/openejb/batchee-cli.properties    | 26 +++++++++++
 6 files changed, 115 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/assembly/bin-openejb.xml
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/assembly/bin-openejb.xml b/tools/cli/src/main/assembly/bin-openejb.xml
index f90b11b..ac62885 100644
--- a/tools/cli/src/main/assembly/bin-openejb.xml
+++ b/tools/cli/src/main/assembly/bin-openejb.xml
@@ -45,6 +45,15 @@
       <outputDirectory>conf/</outputDirectory>
       <includes>
         <include>logging.properties</include>
+        <include>batchee-cli_openejb.properties</include>
+      </includes>
+      <lineEnding>unix</lineEnding>
+    </fileSet>
+    <fileSet>
+      <directory>${project.build.outputDirectory}/openejb</directory>
+      <outputDirectory>conf/</outputDirectory>
+      <includes>
+        <include>batchee-cli.properties</include>
       </includes>
       <lineEnding>unix</lineEnding>
     </fileSet>

http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/assembly/bin.xml b/tools/cli/src/main/assembly/bin.xml
index 8420401..35c58c3 100644
--- a/tools/cli/src/main/assembly/bin.xml
+++ b/tools/cli/src/main/assembly/bin.xml
@@ -49,6 +49,14 @@
       <lineEnding>unix</lineEnding>
     </fileSet>
     <fileSet>
+      <directory>${project.build.outputDirectory}/default</directory>
+      <outputDirectory>conf/</outputDirectory>
+      <includes>
+        <include>batchee-cli.properties</include>
+      </includes>
+      <lineEnding>unix</lineEnding>
+    </fileSet>
+    <fileSet>
       <directory>${project.build.directory}/</directory>
       <outputDirectory>bin/</outputDirectory>
       <includes>

http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/java/org/apache/batchee/cli/BatchEECLI.java
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/java/org/apache/batchee/cli/BatchEECLI.java b/tools/cli/src/main/java/org/apache/batchee/cli/BatchEECLI.java
index 4ebb4eb..41ad0b6 100644
--- a/tools/cli/src/main/java/org/apache/batchee/cli/BatchEECLI.java
+++ b/tools/cli/src/main/java/org/apache/batchee/cli/BatchEECLI.java
@@ -40,6 +40,10 @@ import org.apache.commons.cli.Option;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.Reader;
 import java.lang.reflect.Field;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
@@ -50,6 +54,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 import java.util.ServiceLoader;
 import java.util.TreeMap;
 
@@ -112,6 +117,49 @@ public class BatchEECLI {
         final Collection<String> newArgs = new ArrayList<String>(asList(args));
         newArgs.remove(newArgs.iterator().next());
 
+        final File cliConf;
+        String home = System.getProperty("batchee.home");
+        if (home == null) {
+            final String conf = System.getProperty("batchee.cli.configuration");
+            if (conf == null) {
+                cliConf = null;
+            } else {
+                cliConf = new File(conf);
+            }
+        } else {
+            cliConf = new File(home, "conf/batchee-cli.properties");
+        }
+        if (cliConf != null && cliConf.exists()) {
+            final Properties properties = new Properties() {{
+                Reader reader = null;
+                try {
+                    reader = new FileReader(cliConf);
+                    load(reader);
+                } catch (IOException e) {
+                    throw new IllegalArgumentException(e);
+                } finally {
+                    if (reader != null) {
+                        try {
+                            reader.close();
+                        } catch (final IOException e) {
+                            // no-op
+                        }
+                    }
+                }
+            }};
+            for (final String key : properties.stringPropertyNames()) {
+                if (key.startsWith("_arguments.")) { // /!\ added whatever passed values are
+                    newArgs.add(properties.getProperty(key));
+                } else {
+                    final String opt = "-" + key;
+                    if (!newArgs.contains(opt)) {
+                        newArgs.add(opt);
+                        newArgs.add(properties.getProperty(key));
+                    }
+                }
+            }
+        }
+
         final CommandLineParser parser = new DefaultParser();
         try {
             final CommandLine line = parser.parse(options, newArgs.toArray(new String[newArgs.size()]));

http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/java/org/apache/batchee/cli/command/JobOperatorCommand.java
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/java/org/apache/batchee/cli/command/JobOperatorCommand.java b/tools/cli/src/main/java/org/apache/batchee/cli/command/JobOperatorCommand.java
index 3421bcf..bec981d 100644
--- a/tools/cli/src/main/java/org/apache/batchee/cli/command/JobOperatorCommand.java
+++ b/tools/cli/src/main/java/org/apache/batchee/cli/command/JobOperatorCommand.java
@@ -175,10 +175,6 @@ public abstract class JobOperatorCommand implements Runnable {
             final Lifecycle<Object> lifecycleInstance;
             final Object state;
 
-            if (lifecycle == null) {
-                lifecycle = System.getProperty("org.apache.batchee.cli.lifecycle");
-            }
-
             if (lifecycle != null) {
                 lifecycleInstance = createLifecycle(loader);
                 state = lifecycleInstance.start();

http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/resources/default/batchee-cli.properties
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/resources/default/batchee-cli.properties b/tools/cli/src/main/resources/default/batchee-cli.properties
new file mode 100644
index 0000000..40226a0
--- /dev/null
+++ b/tools/cli/src/main/resources/default/batchee-cli.properties
@@ -0,0 +1,24 @@
+#
+# 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.
+
+
+#
+# You can put here default options you want inherited by all commands (without trailing iphen).
+#
+
+# ex:
+# lifecycle = openejb
+# sharedLibs = /opt/batch/libs

http://git-wip-us.apache.org/repos/asf/incubator-batchee/blob/fa48787a/tools/cli/src/main/resources/openejb/batchee-cli.properties
----------------------------------------------------------------------
diff --git a/tools/cli/src/main/resources/openejb/batchee-cli.properties b/tools/cli/src/main/resources/openejb/batchee-cli.properties
new file mode 100644
index 0000000..50f452c
--- /dev/null
+++ b/tools/cli/src/main/resources/openejb/batchee-cli.properties
@@ -0,0 +1,26 @@
+#
+# 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.
+
+
+#
+# You can put here default options you want inherited by all commands (without trailing iphen).
+#
+
+# ex:
+# sharedLibs = /opt/batch/libs
+
+lifecycle = openejb
+