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 2015/02/06 16:58:25 UTC

[2/2] tomee git commit: ensuring container loader is well set in TomEEEmbeddedMojo otherwise it completely breaks all behavior based on classloader (so things as small as CDI) + few fixes to get right classloader - after ear changes - in tomee-embedded m

ensuring container loader is well set in TomEEEmbeddedMojo otherwise it completely breaks all behavior based on classloader (so things as small as CDI) + few fixes to get right classloader - after ear changes - in tomee-embedded maven plugin + johnzon 0.5-incubating


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

Branch: refs/heads/develop
Commit: 4127ae53f554ac28e5caacadd8923c56135898f5
Parents: 17369cc
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Fri Feb 6 16:57:59 2015 +0100
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Fri Feb 6 16:57:59 2015 +0100

----------------------------------------------------------------------
 .../openejb/core/ParentClassLoaderFinder.java   |  1 -
 .../maven/plugins/TomEEEmbeddedMojo.java        | 34 ++++++++++++++------
 server/openejb-cxf-rs/pom.xml                   |  2 +-
 .../tomee/catalina/TomEEWebappClassLoader.java  |  4 +--
 .../internal/StandardContextCustomizer.java     |  2 +-
 5 files changed, 29 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/4127ae53/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java b/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
index 1f42be2..dca0d39 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/core/ParentClassLoaderFinder.java
@@ -22,7 +22,6 @@ import org.apache.openejb.loader.SystemInstance;
 
 public interface ParentClassLoaderFinder {
     ClassLoader FALLBACK = OpenEJB.class.getClassLoader();
-    ;
 
     ClassLoader getParentClassLoader(final ClassLoader fallback);
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/4127ae53/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
----------------------------------------------------------------------
diff --git a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
index ee66cb5..fa22a0c 100644
--- a/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
+++ b/maven/tomee-embedded-maven-plugin/src/main/java/org/apache/openejb/maven/plugins/TomEEEmbeddedMojo.java
@@ -167,6 +167,9 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
     @Parameter
     private List<String> applications;
 
+    @Parameter
+    private List<String> applicationScopes;
+
     @Parameter(property = "tomee-plugin.skip-current-project", defaultValue = "false")
     private boolean skipCurrentProject;
 
@@ -180,6 +183,7 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
             return;
         }
 
+
         final Properties originalSystProp = new Properties();
         originalSystProp.putAll(System.getProperties());
 
@@ -331,24 +335,36 @@ public class TomEEEmbeddedMojo extends AbstractMojo {
     private ClassLoader createClassLoader(final ClassLoader parent) {
         final List<URL> urls = new ArrayList<>();
         for (final Artifact artifact : (Set<Artifact>) project.getArtifacts()) {
+            final String scope = artifact.getScope();
+            if ((applicationScopes == null && !(Artifact.SCOPE_COMPILE.equals(scope) || Artifact.SCOPE_RUNTIME.equals(scope)))
+                    || (applicationScopes != null && !applicationScopes.contains(scope))) {
+                continue;
+            }
             try {
                 urls.add(artifact.getFile().toURI().toURL());
             } catch (final MalformedURLException e) {
                 getLog().warn("can't use artifact " + artifact.toString());
             }
         }
-        for (final File file : modules) {
-            if (file.exists()) {
-                try {
-                    urls.add(file.toURI().toURL());
-                } catch (final MalformedURLException e) {
-                    getLog().warn("can't use path " + file.getAbsolutePath());
+        if (modules != null) {
+            for (final File file : modules) {
+                if (file.exists()) {
+                    try {
+                        urls.add(file.toURI().toURL());
+                    } catch (final MalformedURLException e) {
+                        getLog().warn("can't use path " + file.getAbsolutePath());
+                    }
+                } else {
+                    getLog().warn("can't find " + file.getAbsolutePath());
                 }
-            } else {
-                getLog().warn("can't find " + file.getAbsolutePath());
             }
         }
-        return new URLClassLoader(urls.toArray(new URL[urls.size()]), parent);
+        return urls.isEmpty() ? parent : new URLClassLoader(urls.toArray(new URL[urls.size()]), parent) {
+            @Override
+            public boolean equals(final Object obj) {
+                return super.equals(obj) || parent.equals(obj); // fake container loader since we deploy the classpath normally (see tomee webapp loader)
+            }
+        };
     }
 
     private Configuration getConfig() { // lazy way but it works fine

http://git-wip-us.apache.org/repos/asf/tomee/blob/4127ae53/server/openejb-cxf-rs/pom.xml
----------------------------------------------------------------------
diff --git a/server/openejb-cxf-rs/pom.xml b/server/openejb-cxf-rs/pom.xml
index 473d23f..668ea00 100644
--- a/server/openejb-cxf-rs/pom.xml
+++ b/server/openejb-cxf-rs/pom.xml
@@ -117,7 +117,7 @@
     <dependency> <!-- JohnzonProvider, WadlDocumentMessageBodyWriter and JsrProvider -->
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-jaxrs</artifactId>
-      <version>0.2-incubating</version>
+      <version>0.5-incubating</version>
     </dependency>
   </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/tomee/blob/4127ae53/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
index 4f29dff..466d80d 100644
--- a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
+++ b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEWebappClassLoader.java
@@ -94,7 +94,7 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
         hashCode = construct();
         setJavaseClassLoader(getSystemClassLoader());
         containerClassLoader = ParentClassLoaderFinder.Helper.get();
-        isEar = getParent() != containerClassLoader;
+        isEar = getParent() != null && !getParent().equals(containerClassLoader);
         originalDelegate = getDelegate();
     }
 
@@ -103,7 +103,7 @@ public class TomEEWebappClassLoader extends ParallelWebappClassLoader {
         hashCode = construct();
         setJavaseClassLoader(getSystemClassLoader());
         containerClassLoader = ParentClassLoaderFinder.Helper.get();
-        isEar = getParent() != containerClassLoader;
+        isEar = getParent() != null && !getParent().equals(containerClassLoader);
         originalDelegate = getDelegate();
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/4127ae53/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
index 2c59cdd..e1d4de6 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/internal/StandardContextCustomizer.java
@@ -84,7 +84,7 @@ public class StandardContextCustomizer {
                 }
                 break;
             case Lifecycle.CONFIGURE_START_EVENT:
-                SystemInstance.get().getComponent(TomcatWebAppBuilder.class).setFinderOnContextConfig(StandardContext.class.cast(data), module.appModule());
+                SystemInstance.get().getComponent(TomcatWebAppBuilder.class).setFinderOnContextConfig(context, module.appModule());
                 break;
             default:
         }