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 2014/12/16 20:10:27 UTC

tomee git commit: trying to get webapp libraries of ear in openejb embedded arquillian adapter

Repository: tomee
Updated Branches:
  refs/heads/develop f22c7ea25 -> 54bc07657


trying to get webapp libraries of ear in openejb embedded arquillian adapter


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/54bc0765
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/54bc0765
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/54bc0765

Branch: refs/heads/develop
Commit: 54bc076576c459391e76d34b12480aa683e1cb07
Parents: f22c7ea
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue Dec 16 20:08:41 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue Dec 16 20:08:41 2014 +0100

----------------------------------------------------------------------
 .../openejb/OpenEJBArchiveProcessor.java        | 67 +++++++++++---------
 tck/cdi-embedded/src/test/resources/failing.xml |  2 +-
 2 files changed, 38 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/54bc0765/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
index 6cdb7a8..65144db 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBArchiveProcessor.java
@@ -66,6 +66,7 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -117,31 +118,7 @@ public class OpenEJBArchiveProcessor {
             prefix = WEB_INF;
 
             final Map<ArchivePath, Node> content = archive.getContent(new IncludeRegExpPaths("/WEB-INF/lib/.*"));
-            for (final Map.Entry<ArchivePath, Node> node : content.entrySet()) {
-                final Asset asset = node.getValue().getAsset();
-                if (UrlAsset.class.isInstance(asset)) {
-                    additionalPaths.add(get(URL.class, "url", asset));
-                } else if (FileAsset.class.isInstance(asset)) {
-                    try {
-                        additionalPaths.add(get(File.class, "file", asset).toURI().toURL());
-                    } catch (final MalformedURLException e) {
-                        LOGGER.log(Level.SEVERE, "can't add a library to the deployment", e);
-                    }
-                } else if (ArchiveAsset.class.isInstance(asset)) {
-                    final Archive<?> nestedArchive = ArchiveAsset.class.cast(asset).getArchive();
-                    if (!isExcluded(nestedArchive.getName())) {
-                        final Node bXmlNode = nestedArchive.get(META_INF + BEANS_XML);
-                        if (bXmlNode != null) {
-                            try {
-                                beansXmlMerged.add(new AssetSource(bXmlNode.getAsset(), new URL("jar:file://!/WEB-INF/lib/" + nestedArchive.getName() + "!/META-INF/beans.xml")));
-                            } catch (final MalformedURLException e) {
-                                // shouldn't occur
-                            }
-                        }
-                        archive.merge(nestedArchive);
-                    }
-                }
-            }
+            analyzeWebArchive(archive, additionalPaths, beansXmlMerged, content);
         } else {
             if (isEar) { // mainly for CDI TCKs
                 earMap = new HashMap<>();
@@ -220,17 +197,19 @@ public class OpenEJBArchiveProcessor {
                 if (ArchiveAsset.class.isInstance(asset)) {
                     final Archive<?> webArchive = ArchiveAsset.class.cast(asset).getArchive();
                     if (WebArchive.class.isInstance(webArchive)) {
-                        /* TODO: libs
-                        final Map<ArchivePath, Node> libs = archive.getContent(new IncludeRegExpPaths("/WEB-INF/lib/.*\\.jar"));
-                        */
-
                         final Map<String, Object> altDD = new HashMap<>();
                         final Node beansXml = findBeansXml(webArchive, new ArrayList<AssetSource>(), WEB_INF, altDD);
                         final SWClassLoader webLoader = new SWClassLoader(WEB_INF_CLASSES, parent, webArchive);
                         closeables.add(webLoader);
 
+                        final List<URL> webappAdditionalPaths = new LinkedList<URL>();
+                        final List<AssetSource> webAppBeansXmlMerged = new ArrayList<>();
+                        analyzeWebArchive(
+                                webArchive, webappAdditionalPaths, webAppBeansXmlMerged,
+                                webArchive.getContent(new IncludeRegExpPaths("/.*\\.jar")));
+
                         final FinderFactory.OpenEJBAnnotationFinder finder = new FinderFactory.OpenEJBAnnotationFinder(
-                                finderArchive(beansXml, webArchive, webLoader, Collections.<URL>emptyList()));
+                                finderArchive(beansXml, webArchive, webLoader, webappAdditionalPaths));
 
                         final WebModule webModule = new WebModule(new WebApp(), contextRoot(webArchive.getName()), loader, "", appModule.getModuleId());
                         webModule.setUrls(Collections.<URL>emptyList());
@@ -326,6 +305,34 @@ public class OpenEJBArchiveProcessor {
         return appModule;
     }
 
+    private static void analyzeWebArchive(Archive<?> archive, List<URL> additionalPaths, List<AssetSource> beansXmlMerged, Map<ArchivePath, Node> content) {
+        for (final Map.Entry<ArchivePath, Node> node : content.entrySet()) {
+            final Asset asset = node.getValue().getAsset();
+            if (UrlAsset.class.isInstance(asset)) {
+                additionalPaths.add(get(URL.class, "url", asset));
+            } else if (FileAsset.class.isInstance(asset)) {
+                try {
+                    additionalPaths.add(get(File.class, "file", asset).toURI().toURL());
+                } catch (final MalformedURLException e) {
+                    LOGGER.log(Level.SEVERE, "can't add a library to the deployment", e);
+                }
+            } else if (ArchiveAsset.class.isInstance(asset)) {
+                final Archive<?> nestedArchive = ArchiveAsset.class.cast(asset).getArchive();
+                if (!isExcluded(nestedArchive.getName())) {
+                    final Node bXmlNode = nestedArchive.get(META_INF + BEANS_XML);
+                    if (bXmlNode != null) {
+                        try {
+                            beansXmlMerged.add(new AssetSource(bXmlNode.getAsset(), new URL("jar:file://!/WEB-INF/lib/" + nestedArchive.getName() + "!/META-INF/beans.xml")));
+                        } catch (final MalformedURLException e) {
+                            // shouldn't occur
+                        }
+                    }
+                    archive.merge(nestedArchive);
+                }
+            }
+        }
+    }
+
     private static Node findBeansXml(final Archive<?> archive, final List<AssetSource> beansXmlMerged, final String prefix, final Map<String, Object> altDD) {
         Node beansXml = archive.get(prefix.concat(BEANS_XML));
         if (beansXml == null && WEB_INF.equals(prefix)) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/54bc0765/tck/cdi-embedded/src/test/resources/failing.xml
----------------------------------------------------------------------
diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml
index f5f708b..af529dc 100644
--- a/tck/cdi-embedded/src/test/resources/failing.xml
+++ b/tck/cdi-embedded/src/test/resources/failing.xml
@@ -18,7 +18,7 @@
 <suite name="CDI TCK" verbose="0">
   <test name="CDI TCK">
     <classes>
-      <class name="org.jboss.cdi.tck.tests.implementation.enterprise.newBean.NewEnterpriseBeanTest"/>
+      <class name="org.jboss.cdi.tck.tests.alternative.selection.enterprise.EnterpriseSelectedAlternative02Test"/>
     </classes>
   </test>
 </suite>