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 2015/04/03 13:24:53 UTC
tomee git commit: TOMEE-1539 inliedServerXml config for tomee mvn
plugins
Repository: tomee
Updated Branches:
refs/heads/master fe957d9bd -> 7d6b82dfb
TOMEE-1539 inliedServerXml config for tomee mvn plugins
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/7d6b82df
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/7d6b82df
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/7d6b82df
Branch: refs/heads/master
Commit: 7d6b82dfb2d1d3c32460c4b22787cc06b6068629
Parents: fe957d9
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Apr 3 13:24:17 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Apr 3 13:24:17 2015 +0200
----------------------------------------------------------------------
.../apache/openejb/maven/util/XmlFormatter.java | 65 ++++++++++++++++++++
.../openejb/maven/util/XmlFormatterTest.java | 14 +++++
.../maven/plugins/TomEEEmbeddedMojo.java | 22 ++++++-
maven/tomee-maven-plugin/pom.xml | 5 ++
.../openejb/maven/plugin/AbstractTomEEMojo.java | 15 +++++
5 files changed, 120 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/7d6b82df/maven/maven-util/src/main/java/org/apache/openejb/maven/util/XmlFormatter.java
----------------------------------------------------------------------
diff --git a/maven/maven-util/src/main/java/org/apache/openejb/maven/util/XmlFormatter.java b/maven/maven-util/src/main/java/org/apache/openejb/maven/util/XmlFormatter.java
new file mode 100644
index 0000000..7d36f13
--- /dev/null
+++ b/maven/maven-util/src/main/java/org/apache/openejb/maven/util/XmlFormatter.java
@@ -0,0 +1,65 @@
+/**
+ * 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.openejb.maven.util;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSSerializer;
+import org.xml.sax.InputSource;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+public final class XmlFormatter {
+ public static String format(final String in) {
+ try {
+ final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ final DocumentBuilder db = dbf.newDocumentBuilder();
+ final InputSource is = new InputSource(new StringReader(in));
+ final Document document = db.parse(is);
+
+ final DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
+ final DOMImplementationLS impl = DOMImplementationLS.class.cast(registry.getDOMImplementation("XML 3.0 LS 3.0"));
+ if (impl == null) {
+ return in;
+ }
+
+ final LSSerializer serializer = impl.createLSSerializer();
+ if (serializer.getDomConfig().canSetParameter("format-pretty-print", Boolean.TRUE)) {
+ serializer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE);
+ final LSOutput lsOutput = impl.createLSOutput();
+ lsOutput.setEncoding("UTF-8");
+ final StringWriter stringWriter = new StringWriter();
+ lsOutput.setCharacterStream(stringWriter);
+ serializer.write(document, lsOutput);
+ return stringWriter.toString();
+ }
+
+ return in;
+ } catch (final Throwable t) {
+ return in; // just to be more sexy so ignore it and use ugly xml
+ }
+ }
+
+ private XmlFormatter() {
+ // no-op
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/7d6b82df/maven/maven-util/src/test/java/org/apache/openejb/maven/util/XmlFormatterTest.java
----------------------------------------------------------------------
diff --git a/maven/maven-util/src/test/java/org/apache/openejb/maven/util/XmlFormatterTest.java b/maven/maven-util/src/test/java/org/apache/openejb/maven/util/XmlFormatterTest.java
new file mode 100644
index 0000000..9f41522
--- /dev/null
+++ b/maven/maven-util/src/test/java/org/apache/openejb/maven/util/XmlFormatterTest.java
@@ -0,0 +1,14 @@
+package org.apache.openejb.maven.util;
+
+import org.junit.Test;
+
+public class XmlFormatterTest {
+ @Test
+ public void format() {
+ System.out.println(XmlFormatter.format("" +
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<root>\n" +
+ " <foo id=\"bar\"/>\n" +
+ "</root>"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/7d6b82df/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 371b7a2..a5eff6f 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
@@ -39,6 +39,8 @@ import org.apache.openejb.maven.util.MavenLogStreamFactory;
import org.apache.openejb.util.JuliLogStreamFactory;
import org.apache.tomee.embedded.Configuration;
import org.apache.tomee.embedded.Container;
+import org.codehaus.plexus.configuration.PlexusConfiguration;
+import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.lang.reflect.Field;
@@ -176,6 +178,12 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
@Parameter(property = "tomee-plugin.application-copy", defaultValue = "${project.build.directory}/tomee-embedded/applications")
private File applicationCopyFolder;
+ @Parameter(property = "tomee-plugin.work", defaultValue = "${project.build.directory}/tomee-embedded-work")
+ private File workDir;
+
+ @Parameter
+ protected PlexusConfiguration inlinedServerXml;
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (!classpathAsWar && "pom".equals(packaging)) {
@@ -200,6 +208,19 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
System.setProperty("openejb.jul.forceReload", "true");
}
+ if (inlinedServerXml != null && inlinedServerXml.getChildCount() > 0) {
+ if (serverXml != null && serverXml.exists()) {
+ throw new MojoFailureException("you can't define a server.xml and an inlinedServerXml");
+ }
+ try {
+ FileUtils.forceMkdir(workDir);
+ serverXml = new File(workDir, "server.xml_dump");
+ FileUtils.fileWrite(serverXml, inlinedServerXml.getChild(0).toString());
+ } catch (final Exception e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ }
+ }
+
final Container container = new Container();
final Configuration config = getConfig();
container.setup(config);
@@ -391,7 +412,6 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
} catch (final Exception e) {
getLog().warn("can't initialize attribute " + field.getName());
}
-
}
if (containerProperties != null) {
final Properties props = new Properties();
http://git-wip-us.apache.org/repos/asf/tomee/blob/7d6b82df/maven/tomee-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/maven/tomee-maven-plugin/pom.xml b/maven/tomee-maven-plugin/pom.xml
index 7c4d5bb..5404e56 100644
--- a/maven/tomee-maven-plugin/pom.xml
+++ b/maven/tomee-maven-plugin/pom.xml
@@ -70,6 +70,11 @@
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.openejb.maven</groupId>
+ <artifactId>maven-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
http://git-wip-us.apache.org/repos/asf/tomee/blob/7d6b82df/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
----------------------------------------------------------------------
diff --git a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
index d28f204..1bb887c 100644
--- a/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
+++ b/maven/tomee-maven-plugin/src/main/java/org/apache/openejb/maven/plugin/AbstractTomEEMojo.java
@@ -37,9 +37,12 @@ import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.Zips;
import org.apache.openejb.maven.plugin.cli.Args;
+import org.apache.openejb.maven.util.XmlFormatter;
import org.apache.openejb.util.Join;
import org.apache.openejb.util.OpenEjbVersion;
import org.apache.tomee.util.QuickServerXmlParser;
+import org.codehaus.plexus.configuration.PlexusConfiguration;
+import org.codehaus.plexus.util.FileUtils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
@@ -326,6 +329,9 @@ public abstract class AbstractTomEEMojo extends AbstractAddressMojo {
@Parameter
protected List<File> externalRepositories;
+ @Parameter
+ protected PlexusConfiguration inlinedServerXml;
+
protected File deployedFile = null;
protected RemoteServer server = null;
protected String container = TOM_EE;
@@ -374,6 +380,15 @@ public abstract class AbstractTomEEMojo extends AbstractAddressMojo {
activateSimpleLog();
}
+ if (inlinedServerXml != null && inlinedServerXml.getChildCount() > 0) {
+ final File serverXml = new File(catalinaBase, "conf/server.xml");
+ try {
+ FileUtils.forceMkdir(serverXml.getParentFile());
+ FileUtils.fileWrite(serverXml, XmlFormatter.format(inlinedServerXml.getChild(0).toString()));
+ } catch (final Exception e) {
+ throw new MojoExecutionException(e.getMessage(), e);
+ }
+ }
if (!keepServerXmlAsthis) {
overrideAddresses();
}