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 2013/09/22 10:21:56 UTC

svn commit: r1525331 - in /tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven: Mvn.java PreloadableTestWar.java PreloadableWar.java

Author: rmannibucau
Date: Sun Sep 22 08:21:56 2013
New Revision: 1525331

URL: http://svn.apache.org/r1525331
Log:
TOMEE-1041 adding Mvn.Builder to create archives

Modified:
    tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java
    tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java
    tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java

Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java Sun Sep 22 08:21:56 2013
@@ -38,88 +38,148 @@ import java.util.HashMap;
 import java.util.Map;
 
 public final class Mvn {
-    /**
-     * Client war.
-     *
-     * @return create a war with src/main/resources, src/main/webapp and all compile and runtime dependencies
-     */
-    public static Archive<?> war() {
-        return war("test.war", null);
-    }
+    public static class Builder {
+        private File basedir = null;
+        private File resources = null;
+        private File webapp = null;
+        private File classes = null;
+        private String basePackage = null;
+        private String name = "test.war";
+        private Map<File, String> additionalResources = new HashMap<File, String>();
+        private ScopeType[] scopes = { ScopeType.COMPILE, ScopeType.RUNTIME };
 
-    /**
-     * Server war without tests clases.
-     *
-     * @return create a war with src/main/resources, src/main/webapp and all compile, runtime and test dependencies
-     */
-    public static Archive<?> testWar() {
-        return war("test.war", null, ScopeType.COMPILE, ScopeType.RUNTIME, ScopeType.TEST);
-    }
+        public Builder scopes(final ScopeType... scopes) {
+            this.scopes = scopes;
+            return this;
+        }
 
-    public static Archive<?> war(final String name, final String basePackage, final ScopeType... scopes) {
-        final File basedir = basedir();
+        public Builder basedir(final File path) {
+            this.basedir = path;
+            return this;
+        }
 
-        final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, name);
+        public Builder resources(final File path) {
+            this.resources = path;
+            return this;
+        }
 
-        if (basePackage == null) {
-            final File classes = new File(basedir, "target/classes/");
-            add(webArchive, classes, "/WEB-INF/classes/");
-        } else {
-            webArchive.addPackages(true, basePackage);
+        public Builder webapp(final File path) {
+            this.webapp = path;
+            return this;
         }
 
-        final File webapp = new File(basedir, "src/main/webapp");
-        add(webArchive, webapp, "/");
-        if (basePackage != null) {
-            final File resources = new File(basedir, "src/main/resources");
-            add(webArchive, resources, "/WEB-INF/classes/");
+        public Builder classes(final File path) {
+            this.classes = path;
+            return this;
         }
 
-        final ScopeType[] types;
-        if (scopes == null || scopes.length == 0) {
-            types = new ScopeType[]{ ScopeType.COMPILE, ScopeType.RUNTIME };
-        } else {
-            types = scopes;
+        public Builder applicationPackage(final String base) {
+            this.basePackage = base;
+            return this;
         }
-        try {
-            final File[] deps = Maven.resolver().offline().loadPomFromFile(new File(basedir, "pom.xml"))
-                .importDependencies(types).resolve().withTransitivity().asFile();
-            if (deps.length > 0) {
-                webArchive.addAsLibraries(deps);
-            }
-        } catch (final Exception e) {
-            // no-op
+
+        public Builder name(final String name) {
+            this.name = name;
+            return this;
         }
 
-        return webArchive;
-    }
+        public Builder additionalResource(final File folder, final String root) {
+            additionalResources.put(folder, root);
+            return this;
+        }
+
+        public Archive<?> build() {
+            initDefaults();
+
+            final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, name);
+
+            if (basePackage != null) {
+                webArchive.addPackages(true, basePackage);
+            }
+            add(webArchive, classes, "/WEB-INF/classes/")
+            .add(webArchive, resources, "/WEB-INF/classes/")
+            .add(webArchive, webapp, "/");
+            for (final Map.Entry<File, String> additionalResource : additionalResources.entrySet()) {
+                add(webArchive, additionalResource.getKey(), additionalResource.getValue());
+            }
+
+            try {
+                final File[] deps = Maven.resolver().offline().loadPomFromFile(new File(basedir, "pom.xml"))
+                    .importDependencies(scopes).resolve().withTransitivity().asFile();
+                if (deps.length > 0) {
+                    webArchive.addAsLibraries(deps);
+                }
+            } catch (final Exception e) {
+                // no-op: no deps
+            }
 
-    private static void add(final WebArchive webArchive, final File classes, final String root) {
-        if (!classes.exists()) {
-            return;
+            return webArchive;
         }
 
-        final KnownResourcesFilter filter = new KnownResourcesFilter(classes, root);
-        filter.update(
-            webArchive.merge(
-                ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class)
-                    .importDirectory(classes).as(GenericArchive.class), root, filter));
-    }
+        private File basedir() {
+            if (basedir != null) {
+                return basedir;
+            }
 
-    private static File basedir() {
-        {
-            final File file = new File("pom.xml");
-            if (file.exists()) {
-                return new File(".");
+            {
+                final File file = new File("pom.xml");
+                if (file.exists()) {
+                    return new File(".");
+                }
+            }
+            {
+                final File file = new File("../pom.xml");
+                if (file.exists()) {
+                    return new File("..");
+                }
             }
+            throw new IllegalStateException("basedir not found");
         }
-        {
-            final File file = new File("../pom.xml");
-            if (file.exists()) {
-                return new File("..");
+
+        private void initDefaults() {
+            final File basedir = basedir();
+            if (classes == null && basePackage == null) {
+                classes = new File(basedir, "target/classes");
+            }
+            if (resources == null && basePackage != null) {
+                resources = new File(basedir, "src/main/resources");
+            }
+            if (webapp == null) {
+                webapp = new File(basedir, "src/main/webapp");
             }
         }
-        throw new IllegalStateException("basedir not found");
+
+        private Builder add(final WebArchive webArchive, final File dir, final String root) {
+            if (dir == null || !dir.exists()) {
+                return this;
+            }
+
+            final KnownResourcesFilter filter = new KnownResourcesFilter(dir, root);
+            filter.update(
+                webArchive.merge(
+                    ShrinkWrap.create(GenericArchive.class).as(ExplodedImporter.class)
+                        .importDirectory(dir).as(GenericArchive.class), root, filter));
+
+            return this;
+        }
+    }
+
+    /**
+     * Client war.
+     *
+     * @return create a war with src/main/resources, src/main/webapp and all compile and runtime dependencies
+     */
+    public static Archive<?> war() {
+        return new Builder().build();
+    }
+
+    /**
+     * Server war without tests clases.
+     *
+     * @return create a war with src/main/resources, src/main/webapp and all compile, runtime and test dependencies
+     */
+    public static Archive<?> testWar() {
+        return new Builder().scopes(ScopeType.COMPILE, ScopeType.RUNTIME, ScopeType.TEST).build();
     }
 
     private Mvn() {

Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableTestWar.java Sun Sep 22 08:21:56 2013
@@ -37,7 +37,7 @@ public class PreloadableTestWar {
         es.shutdown();
     }
 
-    public Archive<?> war() {
+    public static Archive<?> war() {
         try {
             return war.get();
         } catch (final Exception e) {

Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java?rev=1525331&r1=1525330&r2=1525331&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/PreloadableWar.java Sun Sep 22 08:21:56 2013
@@ -37,7 +37,7 @@ public class PreloadableWar {
         es.shutdown();
     }
 
-    public Archive<?> war() {
+    public static Archive<?> war() {
         try {
             return war.get();
         } catch (final Exception e) {