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