You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2016/09/02 11:09:26 UTC

[1/2] tomee git commit: TOMEE-1921 Configuration.loadFromClasspath for tomee embedded

Repository: tomee
Updated Branches:
  refs/heads/master 2f6930e4e -> 36a534adb


TOMEE-1921 Configuration.loadFromClasspath for tomee embedded


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

Branch: refs/heads/master
Commit: acaec7ef0829cc06f359dce27cf953302db2edc6
Parents: 2f6930e
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Sep 2 12:56:10 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Sep 2 12:56:53 2016 +0200

----------------------------------------------------------------------
 .../embedded/EmbeddedTomEEConfiguration.java    |   9 +
 .../embedded/EmbeddedTomEEContainer.java        |   4 +
 .../apache/tomee/embedded/Configuration.java    | 163 +++++++++++++++++--
 .../java/org/apache/tomee/embedded/Main.java    |  11 +-
 4 files changed, 174 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/acaec7ef/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
index 8996aa4..dd51346 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEConfiguration.java
@@ -47,6 +47,15 @@ public class EmbeddedTomEEConfiguration extends TomEEConfiguration {
     private boolean webResourcesCached = true;
     private boolean http2;
     private String configurationCustomizers;
+    private String classpathConfiguration;
+
+    public String getClasspathConfiguration() {
+        return classpathConfiguration;
+    }
+
+    public void setClasspathConfiguration(final String classpathConfiguration) {
+        this.classpathConfiguration = classpathConfiguration;
+    }
 
     public boolean isHttp2() {
         return http2;

http://git-wip-us.apache.org/repos/asf/tomee/blob/acaec7ef/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
index 8c3624e..4c172c7 100644
--- a/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
+++ b/arquillian/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainer.java
@@ -101,6 +101,10 @@ public class EmbeddedTomEEContainer extends TomEEContainer<EmbeddedTomEEConfigur
 
         configuration.setWebResourceCached(tomeeConfiguration.isWebResourcesCached());
 
+        if (tomeeConfiguration.getClasspathConfiguration() != null) {
+            configuration.loadFromClasspath(tomeeConfiguration.getClasspathConfiguration());
+        }
+
         if (tomeeConfiguration.getConfigurationCustomizers() != null) {
             for (final String s : tomeeConfiguration.getConfigurationCustomizers().split(",")) {
                 final String trim = s.trim();

http://git-wip-us.apache.org/repos/asf/tomee/blob/acaec7ef/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
index c0b1e6e..650e47e 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Configuration.java
@@ -5,22 +5,26 @@
  * 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.
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * 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.tomee.embedded;
 
 import org.apache.catalina.Realm;
 import org.apache.catalina.connector.Connector;
+import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.NetworkUtil;
+import org.apache.xbean.recipe.ObjectRecipe;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -29,8 +33,8 @@ import java.util.Map;
 import java.util.Properties;
 
 /**
-* @version $Rev$ $Date$
-*/
+ * @version $Rev$ $Date$
+ */
 public class Configuration {
 
     private int httpPort = 8080;
@@ -77,6 +81,145 @@ public class Configuration {
 
     private String conf;
 
+    public Configuration loadFromClasspath(final String resource) {
+        try (final InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(resource)) {
+            if (is == null) {
+                throw new IllegalArgumentException(resource + " not found");
+            }
+            final Properties config = IO.readProperties(is, new Properties());
+            final String http = config.getProperty("http");
+            if (http != null) {
+                setHttpPort(Integer.parseInt(http));
+            }
+            final String https = config.getProperty("https");
+            if (https != null) {
+                setHttpsPort(Integer.parseInt(https));
+            }
+            final String stop = config.getProperty("stop");
+            if (stop != null) {
+                setStopPort(Integer.parseInt(stop));
+            }
+            final String host = config.getProperty("host");
+            if (host != null) {
+                setHost(host);
+            }
+            final String dir = config.getProperty("dir");
+            if (dir != null) {
+                setDir(dir);
+            }
+            final String serverXml = config.getProperty("serverXml");
+            if (serverXml != null) {
+                setServerXml(serverXml);
+            }
+            final String keepServerXmlAsThis = config.getProperty("keepServerXmlAsThis");
+            if (keepServerXmlAsThis != null) {
+                setKeepServerXmlAsThis(Boolean.parseBoolean(keepServerXmlAsThis));
+            }
+            final String quickSession = config.getProperty("quickSession");
+            if (quickSession != null) {
+                setQuickSession(Boolean.parseBoolean(quickSession));
+            }
+            final String skipHttp = config.getProperty("skipHttp");
+            if (skipHttp != null) {
+                setSkipHttp(Boolean.parseBoolean(skipHttp));
+            }
+            final String ssl = config.getProperty("ssl");
+            if (ssl != null) {
+                setSsl(Boolean.parseBoolean(ssl));
+            }
+            final String http2 = config.getProperty("http2");
+            if (http2 != null) {
+                setHttp2(Boolean.parseBoolean(http2));
+            }
+            final String webResourceCached = config.getProperty("webResourceCached");
+            if (webResourceCached != null) {
+                setWebResourceCached(Boolean.parseBoolean(webResourceCached));
+            }
+            final String withEjbRemote = config.getProperty("withEjbRemote");
+            if (withEjbRemote != null) {
+                setWithEjbRemote(Boolean.parseBoolean(withEjbRemote));
+            }
+            final String deployOpenEjbApp = config.getProperty("deployOpenEjbApp");
+            if (deployOpenEjbApp != null) {
+                setDeployOpenEjbApp(Boolean.parseBoolean(deployOpenEjbApp));
+            }
+            final String keystoreFile = config.getProperty("keystoreFile");
+            if (keystoreFile != null) {
+                setKeystoreFile(keystoreFile);
+            }
+            final String keystorePass = config.getProperty("keystorePass");
+            if (keystorePass != null) {
+                setKeystorePass(keystorePass);
+            }
+            final String keystoreType = config.getProperty("keystoreType");
+            if (keystoreType != null) {
+                setKeystoreType(keystoreType);
+            }
+            final String clientAuth = config.getProperty("clientAuth");
+            if (clientAuth != null) {
+                setClientAuth(clientAuth);
+            }
+            final String keyAlias = config.getProperty("keyAlias");
+            if (keyAlias != null) {
+                setKeyAlias(keyAlias);
+            }
+            final String sslProtocol = config.getProperty("sslProtocol");
+            if (sslProtocol != null) {
+                setSslProtocol(sslProtocol);
+            }
+            final String webXml = config.getProperty("webXml");
+            if (webXml != null) {
+                setWebXml(webXml);
+            }
+            final String tempDir = config.getProperty("tempDir");
+            if (tempDir != null) {
+                setTempDir(tempDir);
+            }
+            final String conf = config.getProperty("conf");
+            if (conf != null) {
+                setConf(conf);
+            }
+            for (final String prop : config.stringPropertyNames()) {
+                if (prop.startsWith("properties.")) {
+                    property(prop.substring("properties.".length()), config.getProperty(prop));
+                } else if (prop.startsWith("users.")) {
+                    user(prop.substring("users.".length()), config.getProperty(prop));
+                } else if (prop.startsWith("roles.")) {
+                    role(prop.substring("roles.".length()), config.getProperty(prop));
+                } else if (prop.startsWith("connector.")) { // created in container
+                    property(prop, config.getProperty(prop));
+                } else if (prop.equals("realm")) {
+                    final ObjectRecipe recipe = new ObjectRecipe(config.getProperty(prop));
+                    for (final String realmConfig : config.stringPropertyNames()) {
+                        if (realmConfig.startsWith("realm.")) {
+                            recipe.setProperty(realmConfig.substring("realm.".length()), config.getProperty(realmConfig));
+                        }
+                    }
+                    setRealm(Realm.class.cast(recipe.create()));
+                } else if (prop.equals("login")) {
+                    final ObjectRecipe recipe = new ObjectRecipe(LoginConfigBuilder.class.getName());
+                    for (final String nestedConfig : config.stringPropertyNames()) {
+                        if (nestedConfig.startsWith("login.")) {
+                            recipe.setProperty(nestedConfig.substring("login.".length()), config.getProperty(nestedConfig));
+                        }
+                    }
+                    loginConfig(LoginConfigBuilder.class.cast(recipe.create()));
+                } else if (prop.equals("securityConstraint")) {
+                    final ObjectRecipe recipe = new ObjectRecipe(SecurityConstaintBuilder.class.getName());
+                    for (final String nestedConfig : config.stringPropertyNames()) {
+                        if (nestedConfig.startsWith("securityConstraints.")) {
+                            recipe.setProperty(nestedConfig.substring("securityConstraints.".length()), config.getProperty(nestedConfig));
+                        }
+                    }
+                    securityConstaint(SecurityConstaintBuilder.class.cast(recipe.create()));
+                }
+            }
+            return this;
+        } catch (final IOException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
     public int getHttpPort() {
         return httpPort;
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/acaec7ef/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
index 16f1627..74d3db7 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
@@ -73,6 +73,7 @@ public class Main {
     public static final String SIMPLE_LOG = "simple-log";
     public static final String PRE_TASK = "pre-task";
     public static final String INTERACTIVE = "interactive";
+    public static final String CLASSPATH_CONFIGURATION = "classpath-configuration";
 
     public static void main(final String[] args) {
         final CommandLineParser parser = new PosixParser();
@@ -246,14 +247,18 @@ public class Main {
         options.addOption(null, BASIC, true, "basic authentication if set");
         options.addOption(null, SIMPLE_LOG, true, "should tomee use simple log format (level - message) - demo intended");
         options.addOption("i", INTERACTIVE, true, "should tomee start and wait for SIGTERM signal or wait for 'exit' to be entered");
+        options.addOption(null, CLASSPATH_CONFIGURATION, true, "a properties file containing the configuration to load");
         return options;
     }
 
     private static Configuration createConfiguration(final CommandLine args) {
         final Configuration config = new Configuration();
-        config.setHttpPort(Integer.parseInt(args.getOptionValue(PORT, "8080")));
-        config.setStopPort(Integer.parseInt(args.getOptionValue(SHUTDOWN, "8005")));
-        config.setDir(args.getOptionValue(DIRECTORY, new File(new File("."), "apache-tomee").getAbsolutePath()));
+        if (args.hasOption(CLASSPATH_CONFIGURATION)) {
+            config.loadFromClasspath(args.getOptionValue(CLASSPATH_CONFIGURATION));
+        }
+        config.setHttpPort(Integer.parseInt(args.getOptionValue(PORT, Integer.toString(config.getHttpPort()))));
+        config.setStopPort(Integer.parseInt(args.getOptionValue(SHUTDOWN, Integer.toString(config.getHttpsPort()))));
+        config.setDir(args.getOptionValue(DIRECTORY, config.getDir() == null ? new File(new File("."), "apache-tomee").getAbsolutePath() : config.getDir()));
         if (args.hasOption(SERVER_XML)) {
             config.setServerXml(args.getOptionValue(SERVER_XML));
         }


[2/2] tomee git commit: handling help case in tomee embedded

Posted by rm...@apache.org.
handling help case in tomee embedded


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/36a534ad
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/36a534ad
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/36a534ad

Branch: refs/heads/master
Commit: 36a534adb3d6acaad53708d6ffee6b0893335bb2
Parents: acaec7e
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Fri Sep 2 13:09:06 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Fri Sep 2 13:09:06 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/tomee/embedded/FatApp.java   |  7 ++++++-
 .../java/org/apache/tomee/embedded/Main.java     | 19 +++++++++++++++----
 2 files changed, 21 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/36a534ad/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/FatApp.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/FatApp.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/FatApp.java
index fc64d81..3617358 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/FatApp.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/FatApp.java
@@ -22,10 +22,15 @@ import java.util.Collection;
 import static java.util.Arrays.asList;
 
 // Main like forcing --as-war --single-classloader
-// commong for fatjars
+// common for fatjars
 public final class FatApp {
     public static void main(final String[] args) {
         final Collection<String> a = args == null || args.length == 0 ? new ArrayList<String>() : new ArrayList<>(asList(args));
+        if (a.size() == 1 && "--help".equals(a.iterator().next())) {
+            Main.main(new String[] {"--help"});
+            return;
+        }
+
         if (!a.contains("--as-war")) {
             a.add("--as-war");
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/36a534ad/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
index 74d3db7..9f404ac 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Main.java
@@ -74,6 +74,7 @@ public class Main {
     public static final String PRE_TASK = "pre-task";
     public static final String INTERACTIVE = "interactive";
     public static final String CLASSPATH_CONFIGURATION = "classpath-configuration";
+    public static final String HELP = "help";
 
     public static void main(final String[] args) {
         final CommandLineParser parser = new PosixParser();
@@ -84,7 +85,12 @@ public class Main {
         try {
             line = parser.parse(options, args, true);
         } catch (final ParseException exp) {
-            new HelpFormatter().printHelp("java -jar tomee-embedded-user.jar", options);
+            help(options);
+            return;
+        }
+
+        if (line.hasOption(HELP)) {
+            help(options);
             return;
         }
 
@@ -197,6 +203,10 @@ public class Main {
         }
     }
 
+    private static void help(Options options) {
+        new HelpFormatter().printHelp("java -jar tomee-embedded-user.jar", options);
+    }
+
     private static void close(final Collection<Closeable> post) {
         synchronized (post) {
             for (final Closeable p : post) {
@@ -245,9 +255,10 @@ public class Main {
         options.addOption(null, JAAS_CONFIG, true, "forces tomee to use JAAS with the set config");
         options.addOption(null, CACHE_WEB_RESOURCES, true, "should web resources be cached");
         options.addOption(null, BASIC, true, "basic authentication if set");
-        options.addOption(null, SIMPLE_LOG, true, "should tomee use simple log format (level - message) - demo intended");
-        options.addOption("i", INTERACTIVE, true, "should tomee start and wait for SIGTERM signal or wait for 'exit' to be entered");
+        options.addOption(null, SIMPLE_LOG, false, "should tomee use simple log format (level - message) - demo intended");
+        options.addOption("i", INTERACTIVE, false, "should tomee start and wait for SIGTERM signal or wait for 'exit' to be entered");
         options.addOption(null, CLASSPATH_CONFIGURATION, true, "a properties file containing the configuration to load");
+        options.addOption("h", HELP, false, "show help");
         return options;
     }
 
@@ -268,7 +279,7 @@ public class Main {
         if (args.hasOption(TOMEE_XML)) {
             config.property("openejb.conf.file", args.getOptionValue(TOMEE_XML));
         }
-        if (args.hasOption(SIMPLE_LOG) && Boolean.parseBoolean(args.getOptionValue(SIMPLE_LOG))) {
+        if (args.hasOption(SIMPLE_LOG)) {
             config.property("openejb.jul.forceReload", "true");
         }
         if (args.hasOption(PROPERTY)) {