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/26 15:51:57 UTC

svn commit: r1526491 - /tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.java

Author: rmannibucau
Date: Thu Sep 26 13:51:56 2013
New Revision: 1526491

URL: http://svn.apache.org/r1526491
Log:
allowing to set the expected archice type in build to be able to continue to build it

Modified:
    tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/maven/Mvn.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=1526491&r1=1526490&r2=1526491&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 Thu Sep 26 13:51:56 2013
@@ -25,6 +25,9 @@ import org.jboss.shrinkwrap.api.GenericA
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.Asset;
 import org.jboss.shrinkwrap.api.asset.StringAsset;
+import org.jboss.shrinkwrap.api.container.ClassContainer;
+import org.jboss.shrinkwrap.api.container.LibraryContainer;
+import org.jboss.shrinkwrap.api.container.WebContainer;
 import org.jboss.shrinkwrap.api.importer.ExplodedImporter;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.jboss.shrinkwrap.resolver.api.maven.Maven;
@@ -96,32 +99,48 @@ public final class Mvn {
         }
 
         public Archive<?> build() {
+            return build(WebArchive.class);
+        }
+        public <T extends Archive<?>> T build(final Class<T> type) {
             initDefaults();
 
-            final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, name);
+            final T webArchive = ShrinkWrap.create(type, name);
 
             if (basePackage != null) {
-                if (filter != null) {
-                    webArchive.addPackages(true, filter, basePackage);
-                } else {
-                    webArchive.addPackages(true, basePackage);
+                if (ClassContainer.class.isInstance(webArchive)) {
+                    final ClassContainer<?> container = ClassContainer.class.cast(webArchive);
+                    if (filter != null) {
+                        container.addPackages(true, filter, basePackage);
+                    } else {
+                        container.addPackages(true, basePackage);
+                    }
                 }
             }
-            add(webArchive, classes, "/WEB-INF/classes/")
-            .add(webArchive, resources, "/WEB-INF/classes/")
+
+            final String root;
+            if (WebContainer.class.isInstance(webArchive)) {
+                root = "/WEB-INF/classes";
+            } else {
+                root = "/";
+            }
+
+            add(webArchive, classes, root)
+            .add(webArchive, resources, root)
             .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);
+            if (LibraryContainer.class.isInstance(webArchive)) {
+                try {
+                    final File[] deps = Maven.resolver().offline().loadPomFromFile(new File(basedir, "pom.xml"))
+                        .importDependencies(scopes).resolve().withTransitivity().asFile();
+                    if (deps.length > 0) {
+                        LibraryContainer.class.cast(webArchive).addAsLibraries(deps);
+                    }
+                } catch (final Exception e) {
+                    // no-op: no deps
                 }
-            } catch (final Exception e) {
-                // no-op: no deps
             }
 
             return webArchive;
@@ -160,7 +179,7 @@ public final class Mvn {
             }
         }
 
-        private Builder add(final WebArchive webArchive, final File dir, final String root) {
+        private Builder add(final Archive<?> webArchive, final File dir, final String root) {
             if (dir == null || !dir.exists()) {
                 return this;
             }