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/28 17:48:03 UTC

tomee git commit: fixing decorators sample + ensuring arquillian embedded adapter is able to get SPI from war dependencies (libs)

Repository: tomee
Updated Branches:
  refs/heads/develop ce3ee00b9 -> f301d5411


fixing decorators sample + ensuring arquillian embedded adapter is able to get SPI from war dependencies (libs)


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

Branch: refs/heads/develop
Commit: f301d5411becc9293da472a6ff7dfe9023cb02ae
Parents: ce3ee00
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Sun Dec 28 17:47:33 2014 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Sun Dec 28 17:47:33 2014 +0100

----------------------------------------------------------------------
 .../openejb/OpenEJBArchiveProcessor.java        | 20 ++----------
 .../arquillian/openejb/SWClassLoader.java       | 34 +++++++++++++++++---
 .../ArchiveResourceIteratorFactory.java         |  2 +-
 .../openejb/cdi/WebappWebBeansContext.java      |  1 -
 .../superbiz/cdi/decorators/CalculatorBean.java |  9 ------
 .../cdi/decorators/CalculatorSecurity.java      |  3 +-
 examples/deltaspike-configproperty/pom.xml      |  2 +-
 7 files changed, 35 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/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 3ac5cab..4593a75 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
@@ -58,7 +58,6 @@ import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.lang.reflect.Field;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -75,6 +74,8 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import static java.util.Arrays.asList;
+import static org.apache.openejb.arquillian.openejb.reflection.Assets.EMPTY_LOADER;
+import static org.apache.openejb.arquillian.openejb.reflection.Assets.get;
 
 // doesn't implement ApplicationArchiveProcessor anymore since in some cases
 // (with some observers set for instance)
@@ -95,13 +96,6 @@ public class OpenEJBArchiveProcessor {
     private static final String ENV_ENTRIES_PROPERTIES = "env-entries.properties";
     private static final String WEB_INF_CLASSES = "/WEB-INF/classes/";
 
-    private static final ClassLoader EMPTY_LOADER = new ClassLoader() {
-        @Override
-        public URL getResource(final String name) {
-            return null;
-        }
-    };
-
     public static AppModule createModule(final Archive<?> archive, final TestClass testClass, final Closeables closeables) {
         final Class<?> javaClass;
         if (testClass != null) {
@@ -482,16 +476,6 @@ public class OpenEJBArchiveProcessor {
         return name;
     }
 
-    private static <T> T get(final Class<T> fileClass, final String attr, final Asset asset) {
-        try {
-            final Field field = asset.getClass().getDeclaredField(attr);
-            field.setAccessible(true);
-            return fileClass.cast(field.get(asset));
-        } catch (final Exception e) {
-            return null;
-        }
-    }
-
     private static org.apache.xbean.finder.archive.Archive finderArchive(
             final Node beansXml, final Archive<?> archive,
             final ClassLoader cl, final CompositeArchive libs,

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/SWClassLoader.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/SWClassLoader.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/SWClassLoader.java
index a75beee..56393be 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/SWClassLoader.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/SWClassLoader.java
@@ -18,15 +18,19 @@ package org.apache.openejb.arquillian.openejb;
 
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.util.Enumerator;
+import org.apache.openejb.util.URLs;
 import org.apache.openejb.util.reflection.Reflections;
 import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.ArchivePaths;
 import org.jboss.shrinkwrap.api.Node;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.Asset;
 import org.jboss.shrinkwrap.api.asset.ClassLoaderAsset;
 import org.jboss.shrinkwrap.api.asset.FileAsset;
 import org.jboss.shrinkwrap.api.asset.UrlAsset;
+import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.impl.base.filter.IncludeRegExpPaths;
 
 import javax.enterprise.inject.spi.Extension;
 import java.io.Closeable;
@@ -48,6 +52,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+import static java.util.Arrays.asList;
+import static org.apache.openejb.arquillian.openejb.reflection.Assets.get;
+
 public class SWClassLoader extends ClassLoader implements Closeable {
     static {
         try {
@@ -59,21 +66,37 @@ public class SWClassLoader extends ClassLoader implements Closeable {
         }
     }
 
-    private final Archive<?>[] archives;
+    private final Collection<Archive<?>> archives;
     private final Collection<Closeable> closeables = new ArrayList<Closeable>();
 
     public SWClassLoader(final ClassLoader parent, final Archive<?>... ar) {
         super(parent);
-        this.archives = ar;
+        this.archives = new ArrayList<>(asList(ar));
         for (final Archive<?> a : ar) {
             ArchiveStreamHandler.set(a, closeables);
+
+            final boolean isWar = WebArchive.class.isInstance(a);
+            if (isWar) { // add dependencies - file and url - to be able to lookup them. ArchiveAssets are provided normally
+                for (final Node n : a.getContent(new IncludeRegExpPaths("/WEB-INF/lib/.*\\.jar")).values()) {
+                    final Asset asset = n.getAsset();
+                    if (FileAsset.class.isInstance(asset)) {
+                        final JavaArchive jar = ShrinkWrap.createFromZipFile(JavaArchive.class, get(File.class, "file", asset));
+                        this.archives.add(jar);
+                        ArchiveStreamHandler.set(jar, closeables);
+                    } else if (UrlAsset.class.isInstance(asset)) {
+                        final JavaArchive jar = ShrinkWrap.createFromZipFile(JavaArchive.class, URLs.toFile(get(URL.class, "url", asset)));
+                        this.archives.add(jar);
+                        ArchiveStreamHandler.set(jar, closeables);
+                    }
+                }
+            }
         }
     }
 
     @Override
     public Enumeration<URL> getResources(final String name) throws IOException {
         if (name == null) {
-            return super.getResources(name);
+            return super.getResources(null);
         }
         final boolean cdiExtensions = name.startsWith("META-INF/services/" + Extension.class.getName());
         if (cdiExtensions || !name.contains("META-INF/services/javax")) {
@@ -142,7 +165,8 @@ public class SWClassLoader extends ClassLoader implements Closeable {
     public LinkedList<Archive<?>> findNodes(final String name) {
         final LinkedList<Archive<?>> items = new LinkedList<>();
         for (final Archive<?> a : archives) {
-            final Node node = a.get(ArchivePaths.create((WebArchive.class.isInstance(a) ? "/WEB-INF/classes/" : "") + name));
+            final boolean isWar = WebArchive.class.isInstance(a);
+            final Node node = a.get(ArchivePaths.create((isWar ? "/WEB-INF/classes/" : "") + name));
             if (node != null) {
                 items.add(a);
             }
@@ -259,7 +283,7 @@ public class SWClassLoader extends ClassLoader implements Closeable {
     }
 
     // to let frameworks using TCCL use the archive directly
-    public Archive<?>[] getArchives() {
+    public Collection<Archive<?>> getArchives() {
         return archives;
     }
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java
----------------------------------------------------------------------
diff --git a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java
index f4de4ec..8a9d74f 100644
--- a/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java
+++ b/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/cucumber/ArchiveResourceIteratorFactory.java
@@ -47,7 +47,7 @@ public class ArchiveResourceIteratorFactory implements ResourceIteratorFactory {
         final ClassLoader loader = Thread.currentThread().getContextClassLoader();
         final Collection<Resource> resources = new ArrayList<Resource>();
         if (SWClassLoader.class.isInstance(loader)) {
-            final Archive<?>[] archives = SWClassLoader.class.cast(loader).getArchives();
+            final Collection<Archive<?>> archives = SWClassLoader.class.cast(loader).getArchives();
             final ClassLoader parent = loader.getParent();
             for (final Archive<?> archive : archives) {
                 final Map<ArchivePath, Node> content = archive.getContent(new Filter<ArchivePath>() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappWebBeansContext.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappWebBeansContext.java b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappWebBeansContext.java
index f8c910f..6d99a1a 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappWebBeansContext.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/cdi/WebappWebBeansContext.java
@@ -23,7 +23,6 @@ import java.util.Properties;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.container.BeanManagerImpl;
 
-import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
 
 public class WebappWebBeansContext extends WebBeansContext {

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorBean.java
----------------------------------------------------------------------
diff --git a/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorBean.java b/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorBean.java
index 0941ffc..af4824c 100644
--- a/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorBean.java
+++ b/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorBean.java
@@ -16,18 +16,10 @@
  */
 package org.superbiz.cdi.decorators;
 
-import javax.annotation.Resource;
-import javax.ejb.SessionContext;
 import javax.ejb.Stateless;
-import javax.enterprise.inject.Produces;
 
 @Stateless
 public class CalculatorBean implements Calculator {
-
-    @Produces
-    @Resource
-    private SessionContext sessionContext;
-
     public int add(int a, int b) {
         return a + b;
     }
@@ -47,5 +39,4 @@ public class CalculatorBean implements Calculator {
     public int remainder(int a, int b) {
         return a % b;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorSecurity.java
----------------------------------------------------------------------
diff --git a/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorSecurity.java b/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorSecurity.java
index 65d45ed..aee4e25 100644
--- a/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorSecurity.java
+++ b/examples/decorators/src/main/java/org/superbiz/cdi/decorators/CalculatorSecurity.java
@@ -16,6 +16,7 @@
  */
 package org.superbiz.cdi.decorators;
 
+import javax.annotation.Resource;
 import javax.decorator.Decorator;
 import javax.decorator.Delegate;
 import javax.ejb.SessionContext;
@@ -28,7 +29,7 @@ public class CalculatorSecurity implements Calculator {
     @Delegate
     private Calculator calculator;
 
-    @Inject
+    @Resource
     private SessionContext sessionContext;
 
     @Override

http://git-wip-us.apache.org/repos/asf/tomee/blob/f301d541/examples/deltaspike-configproperty/pom.xml
----------------------------------------------------------------------
diff --git a/examples/deltaspike-configproperty/pom.xml b/examples/deltaspike-configproperty/pom.xml
index 2f3f5cc..bcaefa7 100644
--- a/examples/deltaspike-configproperty/pom.xml
+++ b/examples/deltaspike-configproperty/pom.xml
@@ -29,7 +29,7 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <version.deltaspike>1.0.0</version.deltaspike>
+    <version.deltaspike>1.2.1</version.deltaspike>
   </properties>
 
   <build>