You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2013/03/04 20:04:13 UTC

svn commit: r1452448 - in /openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src: main/java/org/apache/webbeans/arquillian/standalone/ test/java/org/apache/webbeans/arquillian/test/

Author: struberg
Date: Mon Mar  4 19:04:13 2013
New Revision: 1452448

URL: http://svn.apache.org/r1452448
Log:
OWB-710 add WAR support

Added:
    openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebInfClassesDeploymentTest.java
      - copied, changed from r1452147, openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java
    openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebJarDeploymentTest.java
      - copied, changed from r1452147, openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java
Modified:
    openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/main/java/org/apache/webbeans/arquillian/standalone/OwbArquillianScannerService.java

Modified: openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/main/java/org/apache/webbeans/arquillian/standalone/OwbArquillianScannerService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/main/java/org/apache/webbeans/arquillian/standalone/OwbArquillianScannerService.java?rev=1452448&r1=1452447&r2=1452448&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/main/java/org/apache/webbeans/arquillian/standalone/OwbArquillianScannerService.java (original)
+++ openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/main/java/org/apache/webbeans/arquillian/standalone/OwbArquillianScannerService.java Mon Mar  4 19:04:13 2013
@@ -33,13 +33,18 @@ import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.ArchivePath;
 import org.jboss.shrinkwrap.api.Filters;
 import org.jboss.shrinkwrap.api.Node;
+import org.jboss.shrinkwrap.api.asset.ArchiveAsset;
 import org.jboss.shrinkwrap.api.spec.JavaArchive;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 
 /**
  *
  */
 public class OwbArquillianScannerService implements ScannerService
 {
+
+    private final static String WEB_INF_CLASS_FOLDER = "/WEB-INF/classes/";
+
     private final boolean beansXmlBdaScanningEnabled;
     private Archive archive;
 
@@ -82,6 +87,10 @@ public class OwbArquillianScannerService
         {
             scanJarArchive((JavaArchive) archive);
         }
+        else if (archive instanceof WebArchive)
+        {
+            scanWebArchive((WebArchive) archive);
+        }
         else
         {
             //X TODO
@@ -116,6 +125,38 @@ public class OwbArquillianScannerService
 
     // --------- private implementation -----------
 
+    private void scanWebArchive(WebArchive archive)
+    {
+        URL webBeansXmlUrl = getBeanXmlUrl(archive, "WEB-INF/beans.xml");
+        if (webBeansXmlUrl != null)
+        {
+            beansXmls.add(webBeansXmlUrl);
+        }
+
+        URL metainfBeansXmlUrl = getBeanXmlUrl(archive, WEB_INF_CLASS_FOLDER + "META-INF/beans.xml");
+        if (metainfBeansXmlUrl != null)
+        {
+            beansXmls.add(webBeansXmlUrl);
+        }
+
+        if (metainfBeansXmlUrl != null || webBeansXmlUrl != null)
+        {
+            // in this case we need to scan the WEB-INF/classses folder for .class files
+            Map<ArchivePath, Node> classes = archive.getContent(Filters.include(WEB_INF_CLASS_FOLDER + ".*\\.class"));
+            scanClasses(classes, WEB_INF_CLASS_FOLDER);
+        }
+
+
+        // and now scan all the jars in the WAR
+        Map<ArchivePath, Node> jars = archive.getContent(Filters.include("/WEB-INF/lib/.*\\.jar"));
+        for (Map.Entry<ArchivePath, Node> jarEntry : jars.entrySet())
+        {
+            ArchiveAsset archiveAsset = (ArchiveAsset) jarEntry.getValue().getAsset();
+            JavaArchive jarArchive = (JavaArchive) archiveAsset.getArchive();
+            scanJarArchive(jarArchive);
+        }
+
+    }
 
     private void scanJarArchive(JavaArchive archive)
     {
@@ -132,10 +173,25 @@ public class OwbArquillianScannerService
 
         // and now add all classes
         Map<ArchivePath, Node> classes = archive.getContent(Filters.include(".*\\.class"));
+        scanClasses(classes, null);
+    }
+
+    /**
+     *
+     * @param classes the scanned classes
+     * @param classBasePath the base class in which the classes are, or null if they are directly in the root
+     */
+    private void scanClasses(Map<ArchivePath, Node> classes, String classBasePath)
+    {
         for (Map.Entry<ArchivePath, Node> classEntry : classes.entrySet())
         {
             String className = classEntry.getKey().get();
 
+            if (classBasePath != null && className.startsWith(WEB_INF_CLASS_FOLDER))
+            {
+                className = className.substring(WEB_INF_CLASS_FOLDER.length());
+            }
+
             // cut off leading slashes
             if (className.startsWith("/"))
             {
@@ -147,6 +203,7 @@ public class OwbArquillianScannerService
 
             className = className.replace('/', '.');
 
+
             try
             {
                 Class<?> beanClass = Class.forName(className);
@@ -157,16 +214,20 @@ public class OwbArquillianScannerService
                 throw new RuntimeException("Could not scan class", cnfe);
             }
         }
-
     }
 
     private URL getBeanXmlUrl(Archive archive, String beansXmlPath)
     {
         final Node beansXml = archive.get(beansXmlPath);
 
+        if (beansXml == null)
+        {
+            return null;
+        }
+
         try
         {
-            String urlLocation = "archive://" + archive.getName() + beansXmlPath;
+            String urlLocation = "archive://" + archive.getName() + "/" + beansXmlPath;
 
             return  new URL(null, urlLocation, new URLStreamHandler()
                         {

Copied: openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebInfClassesDeploymentTest.java (from r1452147, openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebInfClassesDeploymentTest.java?p2=openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebInfClassesDeploymentTest.java&p1=openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java&r1=1452147&r2=1452448&rev=1452448&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java (original)
+++ openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebInfClassesDeploymentTest.java Mon Mar  4 19:04:13 2013
@@ -23,10 +23,10 @@ import javax.inject.Inject;
 import org.apache.webbeans.arquillian.test.beans.SampleUser;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
-import org.jboss.shrinkwrap.api.spec.JavaArchive;
-
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -36,7 +36,7 @@ import org.junit.runner.RunWith;
  * This test verifies the deployment of a JAR packaging.
  */
 @RunWith(Arquillian.class)
-public class OwbArquillianJarDeploymentTest
+public class OwbArquillianWebInfClassesDeploymentTest
 {
 
     @Inject
@@ -44,15 +44,15 @@ public class OwbArquillianJarDeploymentT
 
 
     @Deployment
-    public static JavaArchive deploy()
+    public static Archive deploy()
     {
-        JavaArchive testJar = ShrinkWrap
-                .create(JavaArchive.class, "sampleUserTest.jar")
-                .addClass(OwbArquillianJarDeploymentTest.class)
+        WebArchive testWar = ShrinkWrap
+                .create(WebArchive.class, "sampleUserTest.war")
+                .addClass(OwbArquillianWebInfClassesDeploymentTest.class)
                 .addPackage(SampleUser.class.getPackage())
-                .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
+                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
 
-        return testJar;
+        return testWar;
     }
 
     @Test

Copied: openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebJarDeploymentTest.java (from r1452147, openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebJarDeploymentTest.java?p2=openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebJarDeploymentTest.java&p1=openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java&r1=1452147&r2=1452448&rev=1452448&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianJarDeploymentTest.java (original)
+++ openwebbeans/trunk/webbeans-arquillian/owb-arquillian-standalone/src/test/java/org/apache/webbeans/arquillian/test/OwbArquillianWebJarDeploymentTest.java Mon Mar  4 19:04:13 2013
@@ -23,10 +23,11 @@ import javax.inject.Inject;
 import org.apache.webbeans.arquillian.test.beans.SampleUser;
 import org.jboss.arquillian.container.test.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
 import org.jboss.shrinkwrap.api.spec.JavaArchive;
-
+import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -36,7 +37,7 @@ import org.junit.runner.RunWith;
  * This test verifies the deployment of a JAR packaging.
  */
 @RunWith(Arquillian.class)
-public class OwbArquillianJarDeploymentTest
+public class OwbArquillianWebJarDeploymentTest
 {
 
     @Inject
@@ -44,15 +45,20 @@ public class OwbArquillianJarDeploymentT
 
 
     @Deployment
-    public static JavaArchive deploy()
+    public static Archive deploy()
     {
         JavaArchive testJar = ShrinkWrap
                 .create(JavaArchive.class, "sampleUserTest.jar")
-                .addClass(OwbArquillianJarDeploymentTest.class)
+                .addClass(OwbArquillianWebJarDeploymentTest.class)
                 .addPackage(SampleUser.class.getPackage())
                 .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
 
-        return testJar;
+
+        WebArchive testWar = ShrinkWrap
+                .create(WebArchive.class, "sampleUserTest.war")
+                .addAsLibrary(testJar);
+
+        return testWar;
     }
 
     @Test