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/08/27 16:23:14 UTC
[1/2] tomee git commit: TOMEE-1916 conf option to tomee embedded
Repository: tomee
Updated Branches:
refs/heads/master 710448afb -> 3d8d8af0e
TOMEE-1916 conf option to tomee embedded
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/6bf49291
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/6bf49291
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/6bf49291
Branch: refs/heads/master
Commit: 6bf49291bca020ae8c1656e2a45c4f67e22bc47b
Parents: 710448a
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Sat Aug 27 18:22:43 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Sat Aug 27 18:22:43 2016 +0200
----------------------------------------------------------------------
.../gradle/embedded/TomEEEmbeddedTask.java | 4 ++
.../maven/plugins/TomEEEmbeddedMojo.java | 9 ++-
.../event/TomEEEmbeddedScannerCreated.java | 33 ++++++++++
.../apache/tomee/embedded/Configuration.java | 15 +++++
.../org/apache/tomee/embedded/Container.java | 63 +++++++++++++++++---
.../org/apache/tomee/embedded/ConfTest.java | 46 ++++++++++++++
.../src/test/resources/ConfTest/server.xml | 40 +++++++++++++
.../test/resources/ConfTest/system.properties | 18 ++++++
8 files changed, 216 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
----------------------------------------------------------------------
diff --git a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
index b5c3e27..bf06e0b 100644
--- a/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
+++ b/gradle/gradle-tomee-embedded/src/main/java/org/apache/tomee/gradle/embedded/TomEEEmbeddedTask.java
@@ -175,6 +175,10 @@ public class TomEEEmbeddedTask extends DefaultTask {
@Input
private String dir;
+ @Optional
+ @Input
+ private String conf;
+
/* TODO if needed
@Parameter //a dvanced config but a simple boolean will be used for defaults (withLiveReload)
private LiveReload liveReload;
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
index 8f841b7..95038ab 100644
--- a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
+++ b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
@@ -32,7 +32,6 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
import org.apache.openejb.OpenEJBException;
import org.apache.openejb.UndeployException;
-import org.apache.openejb.assembler.classic.AppInfo;
import org.apache.openejb.assembler.classic.Assembler;
import org.apache.openejb.core.ParentClassLoaderFinder;
import org.apache.openejb.core.ProvidedClassLoaderFinder;
@@ -41,7 +40,6 @@ import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.maven.util.MavenLogStreamFactory;
import org.apache.openejb.maven.util.XmlFormatter;
-import org.apache.openejb.spi.ContainerSystem;
import org.apache.openejb.util.JuliLogStreamFactory;
import org.apache.tomee.catalina.TomEERuntimeException;
import org.apache.tomee.embedded.Configuration;
@@ -59,7 +57,6 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -228,6 +225,12 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
protected String context;
/**
+ * Conf classpath folder.
+ */
+ @Parameter(property = "tomee-embedded-plugin.conf")
+ protected String conf;
+
+ /**
* TomEE properties.
*/
@Parameter // don't call it properties to avoid to break getConfig()
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java b/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
new file mode 100644
index 0000000..4110593
--- /dev/null
+++ b/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
@@ -0,0 +1,33 @@
+/**
+ * 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
+ * <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.event;
+
+import org.apache.openejb.observer.Event;
+import org.apache.xbean.finder.IAnnotationFinder;
+
+@Event
+public class TomEEEmbeddedScannerCreated {
+ private final IAnnotationFinder finder;
+
+ public TomEEEmbeddedScannerCreated(final IAnnotationFinder finder) {
+ this.finder = finder;
+ }
+
+ public IAnnotationFinder getFinder() {
+ return finder;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/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 7871812..c0b1e6e 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
@@ -75,6 +75,8 @@ public class Configuration {
private boolean webResourceCached = true;
+ private String conf;
+
public int getHttpPort() {
return httpPort;
}
@@ -366,6 +368,19 @@ public class Configuration {
configurationCustomizer.customize(this);
}
+ public Configuration conf(final String config) {
+ setConf(config);
+ return this;
+ }
+
+ public String getConf() {
+ return conf;
+ }
+
+ public void setConf(final String conf) {
+ this.conf = conf;
+ }
+
public interface ConfigurationCustomizer {
void customize(Configuration configuration);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index d3d5538..a3c521d 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -83,6 +83,7 @@ import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.runtime.log.NullLogChute;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.ResourceFinder;
import org.apache.xbean.finder.UrlSet;
import org.apache.xbean.finder.filter.Filters;
import org.apache.xbean.recipe.ObjectRecipe;
@@ -391,12 +392,35 @@ public class Container implements AutoCloseable {
Files.mkdirs(base);
Files.deleteOnExit(base);
- createDirectory(base, "conf");
+ final File conf = createDirectory(base, "conf");
createDirectory(base, "lib");
createDirectory(base, "logs");
createDirectory(base, "temp");
createDirectory(base, "work");
createDirectory(base, "webapps");
+
+ synchronize(conf, configuration.getConf());
+ }
+
+ private void synchronize(final File base, final String resourceBase) {
+ if (resourceBase == null) {
+ return;
+ }
+
+ try {
+ final Map<String, URL> urls = new ResourceFinder("").getResourcesMap(resourceBase);
+ for (final Map.Entry<String, URL> u : urls.entrySet()) {
+ try (final InputStream is = u.getValue().openStream()) {
+ final File to = new File(base, u.getKey());
+ IO.copy(is, to);
+ if ("server.xml".equals(u.getKey())) {
+ configuration.setServerXml(to.getAbsolutePath());
+ }
+ }
+ }
+ } catch (final IOException e) {
+ throw new IllegalStateException(e);
+ }
}
public File getBase() {
@@ -459,11 +483,13 @@ public class Container implements AutoCloseable {
final boolean initialized;
if (configuration.hasServerXml()) {
final File file = new File(conf, "server.xml");
- final FileOutputStream fos = new FileOutputStream(file);
- try {
- IO.copy(configuration.getServerXmlFile(), fos);
- } finally {
- IO.close(fos);
+ if (!file.equals(configuration.getServerXmlFile())) {
+ final FileOutputStream fos = new FileOutputStream(file);
+ try {
+ IO.copy(configuration.getServerXmlFile(), fos);
+ } finally {
+ IO.close(fos);
+ }
}
// respect config (host/port) of the Configuration
@@ -488,7 +514,16 @@ public class Container implements AutoCloseable {
}
if (props != null && !props.isEmpty()) {
- final FileWriter systemProperties = new FileWriter(new File(conf, "system.properties"));
+ final File file = new File(conf, "system.properties");
+ if (file.isFile()) {
+ final Properties existing = IO.readProperties(file);
+ for (final String key : existing.stringPropertyNames()) {
+ if (!props.containsKey(key)) {
+ props.put(key, existing.getProperty(key));
+ }
+ }
+ }
+ final FileWriter systemProperties = new FileWriter(file);
try {
props.store(systemProperties, "");
} finally {
@@ -897,6 +932,11 @@ public class Container implements AutoCloseable {
}
private void copyTemplateTo(final File targetDir, final String filename) throws Exception {
+ final File file = new File(targetDir, filename);
+ if (file.exists()) {
+ return;
+ }
+
// don't break apps using Velocity facade
final VelocityEngine engine = new VelocityEngine();
engine.setProperty(Velocity.RUNTIME_LOG_LOGSYSTEM, new NullLogChute());
@@ -908,17 +948,22 @@ public class Container implements AutoCloseable {
final VelocityContext context = new VelocityContext();
context.put("tomcatHttpPort", Integer.toString(configuration.getHttpPort()));
context.put("tomcatShutdownPort", Integer.toString(configuration.getStopPort()));
- final Writer writer = new FileWriter(new File(targetDir, filename));
+ final Writer writer = new FileWriter(file);
template.merge(context, writer);
writer.flush();
writer.close();
}
private void copyFileTo(final File targetDir, final String filename) throws IOException {
+ final File to = new File(targetDir, filename);
+ if (to.exists()) { // user provided one
+ return;
+ }
+
final InputStream is = getClass().getResourceAsStream("/org/apache/tomee/configs/" + filename);
if (is != null) { // should be null since we are using default conf
try {
- IO.copy(is, new File(targetDir, filename));
+ IO.copy(is, to);
} finally {
IO.close(is);
}
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfTest.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfTest.java b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfTest.java
new file mode 100644
index 0000000..d1670dc
--- /dev/null
+++ b/tomee/tomee-embedded/src/test/java/org/apache/tomee/embedded/ConfTest.java
@@ -0,0 +1,46 @@
+/**
+ * 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.
+ */
+package org.apache.tomee.embedded;
+
+import org.apache.catalina.Realm;
+import org.apache.catalina.core.StandardServer;
+import org.apache.catalina.realm.JAASRealm;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.tomee.catalina.TomEERealm;
+import org.apache.tomee.loader.TomcatHelper;
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class ConfTest {
+ @Test
+ public void run() {
+ try (final Container container = new Container(new Configuration().conf("ConfTest"))) {
+ final StandardServer standardServer = TomcatHelper.getServer();
+ final Realm engineRealm = standardServer.findServices()[0].getContainer().getRealm();
+ assertTrue(String.valueOf(engineRealm), TomEERealm.class.isInstance(engineRealm));
+ assertTrue(String.valueOf(engineRealm), JAASRealm.class.isInstance(TomEERealm.class.cast(engineRealm).getNestedRealms()[0]));
+ final JAASRealm jaas = JAASRealm.class.cast(TomEERealm.class.cast(engineRealm).getNestedRealms()[0]);
+ assertEquals("PropertiesLoginModule", jaas.getAppName());
+ assertEquals("org.apache.openejb.core.security.jaas.UserPrincipal", jaas.getUserClassNames());
+ assertEquals("org.apache.openejb.core.security.jaas.GroupPrincipal", jaas.getRoleClassNames());
+
+ assertEquals("test", SystemInstance.get().getProperty("ConfTest.value"));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/tomee/tomee-embedded/src/test/resources/ConfTest/server.xml
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/resources/ConfTest/server.xml b/tomee/tomee-embedded/src/test/resources/ConfTest/server.xml
new file mode 100644
index 0000000..62be947
--- /dev/null
+++ b/tomee/tomee-embedded/src/test/resources/ConfTest/server.xml
@@ -0,0 +1,40 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+ 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.
+-->
+<Server port="8005" shutdown="SHUTDOWN">
+ <Listener className="org.apache.tomee.catalina.ServerListener"/>
+ <Listener className="org.apache.catalina.security.SecurityListener"/>
+
+ <Service name="Catalina">
+ <Connector port="8080" protocol="HTTP/1.1"
+ connectionTimeout="20000"
+ redirectPort="8443"/>
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <Realm className="org.apache.catalina.realm.JAASRealm" appName="PropertiesLoginModule"
+ userClassNames="org.apache.openejb.core.security.jaas.UserPrincipal"
+ roleClassNames="org.apache.openejb.core.security.jaas.GroupPrincipal">
+ </Realm>
+
+ <Host name="localhost" appBase="webapps"
+ unpackWARs="true" autoDeploy="true"/>
+ </Engine>
+ </Service>
+</Server>
http://git-wip-us.apache.org/repos/asf/tomee/blob/6bf49291/tomee/tomee-embedded/src/test/resources/ConfTest/system.properties
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/test/resources/ConfTest/system.properties b/tomee/tomee-embedded/src/test/resources/ConfTest/system.properties
new file mode 100644
index 0000000..554c50a
--- /dev/null
+++ b/tomee/tomee-embedded/src/test/resources/ConfTest/system.properties
@@ -0,0 +1,18 @@
+#
+# 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.
+#
+ConfTest.value = test
+
[2/2] tomee git commit: wrong file
Posted by rm...@apache.org.
wrong file
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3d8d8af0
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3d8d8af0
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3d8d8af0
Branch: refs/heads/master
Commit: 3d8d8af0eb62f7432776153affdfe0282ca8bd9a
Parents: 6bf4929
Author: Romain manni-Bucau <rm...@gmail.com>
Authored: Sat Aug 27 18:22:59 2016 +0200
Committer: Romain manni-Bucau <rm...@gmail.com>
Committed: Sat Aug 27 18:22:59 2016 +0200
----------------------------------------------------------------------
.../event/TomEEEmbeddedScannerCreated.java | 33 --------------------
1 file changed, 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/3d8d8af0/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java b/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
deleted file mode 100644
index 4110593..0000000
--- a/tomee/tomee-embedded#src/main/java/org/apache/tomee/embedded/event/TomEEEmbeddedScannerCreated.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 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
- * <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.event;
-
-import org.apache.openejb.observer.Event;
-import org.apache.xbean.finder.IAnnotationFinder;
-
-@Event
-public class TomEEEmbeddedScannerCreated {
- private final IAnnotationFinder finder;
-
- public TomEEEmbeddedScannerCreated(final IAnnotationFinder finder) {
- this.finder = finder;
- }
-
- public IAnnotationFinder getFinder() {
- return finder;
- }
-}