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/05/05 19:25:19 UTC

tomee git commit: be more tolerant with shades - also a workaround for xbean

Repository: tomee
Updated Branches:
  refs/heads/master 87a2991de -> ddc521585


be more tolerant with shades - also a workaround for xbean


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

Branch: refs/heads/master
Commit: ddc521585db2fbe5884a8b253b9c8025ce3dc277
Parents: 87a2991
Author: Romain Manni-Bucau <rm...@apache.org>
Authored: Tue May 5 19:25:10 2015 +0200
Committer: Romain Manni-Bucau <rm...@apache.org>
Committed: Tue May 5 19:25:10 2015 +0200

----------------------------------------------------------------------
 .../openejb/config/DeploymentsResolver.java     | 22 +++++++++++++++++++-
 .../src/main/resources/default.exclusions       |  1 +
 .../org/apache/tomee/embedded/Container.java    | 13 +++++++-----
 3 files changed, 30 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/ddc52158/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
index bf0f75c..73d783e 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentsResolver.java
@@ -33,6 +33,7 @@ import org.apache.xbean.finder.filter.IncludeExcludeFilter;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -400,9 +401,28 @@ public class DeploymentsResolver implements DeploymentFilterable {
             return urls;
         }
 
+        private UrlSet cleanUpUrlSet(final UrlSet set) {
+            if (set.size() >= 5) { // if set size == 1 then we use both getURLs() and getresource(META-INF) to find jar, ensure we don't duplicate it, ie size ~ 2
+                return set;
+            }
+
+            final List<URL> copy = set.getUrls();
+            for (final URL url : set.getUrls()) {
+                try {
+                    if ("file".equals(url.getProtocol()) && copy.contains(new URL("jar:" + url.toExternalForm() + "!"))) {
+                        copy.remove(url);
+                    }
+                } catch (final MalformedURLException e) {
+                    // no-op
+                }
+            }
+            return new UrlSet(copy);
+        }
+
         public ClasspathSearcher loadUrls(final ClassLoader classLoader) {
             try {
-                urlSet = URLs.cullSystemJars(new UrlSet(classLoader));
+                final UrlSet original = cleanUpUrlSet(new UrlSet(classLoader));
+                urlSet = URLs.cullSystemJars(original);
 
                 // save the prefiltered list of jars before excluding system apps
                 // so that we can choose not to filter modules with descriptors on the full list

http://git-wip-us.apache.org/repos/asf/tomee/blob/ddc52158/container/openejb-core/src/main/resources/default.exclusions
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/main/resources/default.exclusions b/container/openejb-core/src/main/resources/default.exclusions
index 93d7a87..8022110 100644
--- a/container/openejb-core/src/main/resources/default.exclusions
+++ b/container/openejb-core/src/main/resources/default.exclusions
@@ -103,6 +103,7 @@ jansi-
 jasper.jar
 jasper-el.jar
 jasypt-
+java-atk-wrapper
 javaee-
 javaee-api
 javassist-

http://git-wip-us.apache.org/repos/asf/tomee/blob/ddc52158/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
----------------------------------------------------------------------
diff --git a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
index 00b7eb2..a685f66 100644
--- a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
+++ b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/Container.java
@@ -212,12 +212,15 @@ public class Container implements AutoCloseable {
         webModule.setRarUrls(Collections.<URL>emptyList());
         webModule.setScannableUrls(jarList);
         try {
+            final String filterContainerClasses = SystemInstance.get().getProperty("tomee.embedded.filter-container-classes");
             webModule.setFinder(
-                new FinderFactory.OpenEJBAnnotationFinder(
-                    // skip container classes in scanning for shades
-                    new WebappAggregatedArchive(webModule, jarList,
-                            jarList.size() == 1 ? new ContainerClassesFilter(configuration.getProperties()) /* shade */ : null))
-                        .link());
+                    new FinderFactory.OpenEJBAnnotationFinder(
+                            // skip container classes in scanning for shades
+                            new WebappAggregatedArchive(webModule, jarList,
+                                    // see org.apache.openejb.config.DeploymentsResolver.ClasspathSearcher.cleanUpUrlSet()
+                                    jarList.size() <= 4 || "true".equalsIgnoreCase(filterContainerClasses) ?
+                                            new ContainerClassesFilter(configuration.getProperties()) /* shade */ : null))
+                            .link());
         } catch (final Exception e) {
             throw new IllegalArgumentException(e);
         }