You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by st...@apache.org on 2015/05/06 11:13:59 UTC
[18/25] tomee git commit: TOMEE-1578 more clever merge of tomee.xml
to add deployment 'apps' in tomee maven plugin
TOMEE-1578 more clever merge of tomee.xml to add deployment 'apps' in tomee maven plugin
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/de6fa1cb
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/de6fa1cb
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/de6fa1cb
Branch: refs/heads/fb_tomee2_owb16
Commit: de6fa1cba4bcde9e6b35578fe4bd541e23b59b6c
Parents: 4aa900c
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue May 5 17:45:15 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue May 5 17:45:15 2015 +0200
----------------------------------------------------------------------
.../openejb/maven/plugin/AbstractTomEEMojo.java | 52 +++++++++++++++++---
.../maven/plugin/TomEEMavenPluginRule.java | 4 +-
2 files changed, 49 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/de6fa1cb/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 6c8b412..6149ce2 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
@@ -31,8 +31,12 @@ import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Settings;
+import org.apache.openejb.OpenEJBException;
import org.apache.openejb.OpenEJBRuntimeException;
import org.apache.openejb.config.RemoteServer;
+import org.apache.openejb.config.sys.Deployments;
+import org.apache.openejb.config.sys.JaxbOpenejb;
+import org.apache.openejb.config.sys.Openejb;
import org.apache.openejb.loader.Files;
import org.apache.openejb.loader.IO;
import org.apache.openejb.loader.Zips;
@@ -329,12 +333,24 @@ public abstract class AbstractTomEEMojo extends AbstractAddressMojo {
@Parameter
protected List<File> externalRepositories;
+ /**
+ * server.xml configured inlined (is Server tag is the first child of inlinedServerXml)
+ */
@Parameter
protected PlexusConfiguration inlinedServerXml;
+ /**
+ * tomee.xml configured inlined (is tomee tag is the first child of inlinedTomEEXml)
+ */
@Parameter
protected PlexusConfiguration inlinedTomEEXml;
+ /**
+ * if a file is already there when unpacking tomee zip should it be overriden?
+ */
+ @Parameter(property = "tomee-plugin.override-on-unzip", defaultValue = "true")
+ protected boolean overrideOnUnzip;
+
protected File deployedFile = null;
protected RemoteServer server = null;
protected String container = TOM_EE;
@@ -1272,6 +1288,8 @@ public abstract class AbstractTomEEMojo extends AbstractAddressMojo {
|| (!parent.canRead() && !parent.setReadable(true))) {
throw new RuntimeException("Failed to create or set permissions on: " + parent);
}
+ } else if (!overrideOnUnzip) {
+ continue;
}
if (entry.isDirectory()) {
if (!dest.exists() && !dest.mkdir()) {
@@ -1330,13 +1348,35 @@ public abstract class AbstractTomEEMojo extends AbstractAddressMojo {
&& (
(apps != null && !apps.isEmpty())
|| (!"pom".equals(packaging) && !"war".equals(packaging))))) { // webapps doesn't need apps folder in tomee
- final FileWriter writer = new FileWriter(file);
final String rootTag = container.toLowerCase(Locale.ENGLISH);
- writer.write("<?xml version=\"1.0\"?>\n" +
- "<" + rootTag + ">\n" +
- " <Deployments dir=\"apps\" />\n" +
- "</" + rootTag + ">\n");
- writer.close();
+ if (file.isFile()) { // can be not existing since we dont always deploy tomee but shouldn't since then apps/ is not guaranteed to work
+ try {
+ final Openejb jaxb = JaxbOpenejb.readConfig(file.getAbsolutePath());
+ boolean needAdd = true;
+ for (final Deployments d : jaxb.getDeployments()) {
+ if ("apps".equals(d.getDir())) {
+ needAdd = false;
+ break;
+ }
+ }
+ if (needAdd) {
+ final String content = IO.slurp(file);
+ final FileWriter writer = new FileWriter(file);
+ final String end = "</" + rootTag + ">";
+ writer.write(content.replace(end, " <Deployments dir=\"apps\" />\n" + end));
+ writer.close();
+ }
+ } catch (final OpenEJBException e) {
+ throw new IllegalStateException("illegal tomee.xml:\n" + IO.slurp(file), e);
+ }
+ } else {
+ final FileWriter writer = new FileWriter(file);
+ writer.write("<?xml version=\"1.0\"?>\n" +
+ "<" + rootTag + ">\n" +
+ " <Deployments dir=\"apps\" />\n" +
+ "</" + rootTag + ">\n");
+ writer.close();
+ }
final File appsFolder = new File(catalinaBase, "apps");
if (!appsFolder.exists() && !appsFolder.mkdirs()) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/de6fa1cb/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
----------------------------------------------------------------------
diff --git a/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java b/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
index e898dbd..b8d4e48 100644
--- a/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
+++ b/maven/tomee-maven-plugin/src/test/java/org/apache/openejb/maven/plugin/TomEEMavenPluginRule.java
@@ -73,7 +73,7 @@ assertThat(IO.slurp(new URL(url + "/docs")), containsString("Apache Tomcat"));
*/
public class TomEEMavenPluginRule implements MethodRule {
@Override
- public Statement apply(final Statement base, final FrameworkMethod method, final Object target) {
+ public Statement apply(final Statement base, final FrameworkMethod ignored, final Object target) {
return new RunTest(target, base);
}
@@ -211,6 +211,8 @@ public class TomEEMavenPluginRule implements MethodRule {
tomEEMojo.useConsole = true;
tomEEMojo.checkStarted = true;
+ tomEEMojo.overrideOnUnzip = true;
+
// we mock all the artifact resolution in test
tomEEMojo.remoteRepos = new LinkedList<ArtifactRepository>();
tomEEMojo.local = new DefaultArtifactRepository("local", tomEEMojo.settings.getLocalRepository(), new DefaultRepositoryLayout());