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)) {