You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by ra...@apache.org on 2019/02/03 00:14:00 UTC

[tomee] 01/04: TOMEE-2408 - Added configuration to enable / disable MP scanning.

This is an automated email from the ASF dual-hosted git repository.

radcortez pushed a commit to branch TOMEE-2408
in repository https://gitbox.apache.org/repos/asf/tomee.git

commit bb478e2722dc1a42b87cf3c81d84500ff198b4b6
Author: Roberto Cortez <ra...@yahoo.com>
AuthorDate: Sat Feb 2 20:07:35 2019 +0000

    TOMEE-2408 - Added configuration to enable / disable MP scanning.
---
 .../apache/openejb/config/DeploymentLoader.java    | 13 +++----------
 .../java/org/apache/tomee/installer/Installer.java |  4 ++--
 .../microprofile/TomEEMicroProfileListener.java    | 22 ++++++++++++++++++++++
 .../microprofile/config/TomEEConfigSource.java     | 17 ++++++++++++++++-
 4 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
index 9a09802..d68649c 100644
--- a/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
+++ b/container/openejb-core/src/main/java/org/apache/openejb/config/DeploymentLoader.java
@@ -26,7 +26,6 @@ import org.apache.openejb.cdi.CompositeBeans;
 import org.apache.openejb.classloader.ClassLoaderConfigurer;
 import org.apache.openejb.classloader.WebAppEnricher;
 import org.apache.openejb.config.event.AfterContainerUrlScanEvent;
-import org.apache.openejb.config.event.BeforeAppInfoBuilderEvent;
 import org.apache.openejb.config.event.BeforeDeploymentEvent;
 import org.apache.openejb.config.sys.Resources;
 import org.apache.openejb.core.EmptyResourcesClassLoader;
@@ -62,7 +61,6 @@ import org.apache.xbean.finder.UrlSet;
 import org.apache.xbean.finder.archive.ClassesArchive;
 import org.apache.xbean.finder.filter.Filter;
 import org.apache.xbean.finder.filter.Filters;
-import org.apache.xbean.finder.filter.PatternFilter;
 
 import java.io.BufferedInputStream;
 import java.io.File;
@@ -118,9 +116,6 @@ public class DeploymentLoader implements DeploymentFilterable {
     private static String ALTDD = SystemInstance.get().getOptions().get(OPENEJB_ALTDD_PREFIX, (String) null);
     private volatile List<URL> containerUrls = null;
 
-    private static final String OPENEJB_CONTAINER_INCLUDES = "openejb.scan.webapp.container.includes";
-    private static final String OPENEJB_CONTAINER_EXCLUDES = "openejb.scan.webapp.container.excludes";
-
     @Deprecated // use load(File, ExternalConfiguration)
     public AppModule load(final File jarFile) throws OpenEJBException {
         return load(jarFile, null);
@@ -1102,15 +1097,13 @@ public class DeploymentLoader implements DeploymentFilterable {
 
     private void ensureContainerUrls() {
         if (containerUrls == null) {
-            if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "true"))) {
+            if ("true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container", "false"))) {
                 synchronized (this) {
                     if (containerUrls == null) {
                         try {
                             UrlSet urlSet = new UrlSet(ParentClassLoaderFinder.Helper.get());
                             urlSet = URLs.cullSystemJars(urlSet);
-                            final PatternFilter containerIncludes = new PatternFilter(SystemInstance.get().getProperty(OPENEJB_CONTAINER_INCLUDES, ""));
-                            final PatternFilter containerExcludes = new PatternFilter(SystemInstance.get().getProperty(OPENEJB_CONTAINER_EXCLUDES, ""));
-                            urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet, containerIncludes, containerExcludes);
+                            urlSet = NewLoaderLogic.applyBuiltinExcludes(urlSet);
                             containerUrls = urlSet.getUrls();
 
                             final boolean skipContainerFolders = "true".equalsIgnoreCase(SystemInstance.get().getProperty("openejb.scan.webapp.container.skip-folder", "true"));
@@ -1135,7 +1128,7 @@ public class DeploymentLoader implements DeploymentFilterable {
                     }
                 }
             } else {
-                containerUrls = Collections.emptyList();
+                containerUrls = new ArrayList<>();
             }
         }
 
diff --git a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
index bac2c9c..ed06036 100644
--- a/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
+++ b/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java
@@ -792,8 +792,8 @@ public class Installer implements InstallerInterface {
                 systemPropertiesWriter.write("# javax.xml.soap.MetaFactory = com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl\n");
 
                 systemPropertiesWriter.write("#\n");
-                systemPropertiesWriter.write("# Which paths / libraries should be scanned?\n");
-                systemPropertiesWriter.write("openejb.scan.webapp.container = true\n");
+                systemPropertiesWriter.write("# MicroProfile\n");
+                systemPropertiesWriter.write("tomee.mp.scan = none\n");
 
             } catch (final IOException e) {
                 // ignored, this file is far to be mandatory
diff --git a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
index 1f349e5..17867fc 100644
--- a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
+++ b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/TomEEMicroProfileListener.java
@@ -23,6 +23,7 @@ import org.apache.geronimo.microprofile.metrics.jaxrs.CdiMetricsEndpoints;
 import org.apache.geronimo.microprofile.openapi.jaxrs.OpenAPIEndpoint;
 import org.apache.openejb.assembler.classic.WebAppInfo;
 import org.apache.openejb.config.event.AfterContainerUrlScanEvent;
+import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.observer.Observes;
 import org.apache.openejb.observer.event.BeforeEvent;
 import org.apache.tomee.catalina.event.AfterApplicationCreated;
@@ -35,6 +36,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Stream;
 
 public class TomEEMicroProfileListener {
     private static final String[] MICROPROFILE_LIBS_IMPLS_PREFIXES = new String[]{
@@ -49,8 +51,28 @@ public class TomEEMicroProfileListener {
             "cxf-rt-rs-mp-client",
             };
 
+    private static final String[] MICROPROFILE_EXTENSIONS = new String[]{
+            "org.apache.geronimo.config.cdi.ConfigExtension",
+            "org.apache.safeguard.impl.cdi.SafeguardExtension",
+            "org.apache.tomee.microprofile.jwt.cdi.MPJWTCDIExtension",
+            "org.apache.geronimo.microprofile.impl.health.cdi.GeronimoHealthExtension",
+            "org.apache.geronimo.microprofile.metrics.cdi.MetricsExtension",
+            "org.apache.geronimo.microprofile.opentracing.microprofile.cdi.OpenTracingExtension",
+            "org.apache.geronimo.microprofile.openapi.cdi.GeronimoOpenAPIExtension",
+            "org.apache.cxf.microprofile.client.cdi.RestClientExtension",
+            };
+
     @SuppressWarnings("Duplicates")
     public void enrichContainerWithMicroProfile(@Observes final AfterContainerUrlScanEvent afterContainerUrlScanEvent) {
+        final String mpScan = SystemInstance.get().getOptions().get("tomee.mp.scan", "all");
+
+        if (mpScan.equals("none")) {
+            Stream.of(MICROPROFILE_EXTENSIONS).forEach(
+                    extension -> SystemInstance.get().setProperty(extension + ".active", "false"));
+
+            return;
+        }
+
         final List<URL> containerUrls = afterContainerUrlScanEvent.getContainerUrls();
         final Paths paths = new Paths(new File(System.getProperty("openejb.home")));
         for (final String prefix : MICROPROFILE_LIBS_IMPLS_PREFIXES) {
diff --git a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
index 2f87cbf..9ca9614 100644
--- a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
+++ b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/config/TomEEConfigSource.java
@@ -24,6 +24,7 @@ import org.eclipse.microprofile.config.spi.ConfigSource;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Stream;
 
 import static java.util.Arrays.asList;
 
@@ -42,9 +43,15 @@ public class TomEEConfigSource implements ConfigSource {
                                          .split(","));
 
             if (mpIgnoredApps.stream().anyMatch(s -> s.equalsIgnoreCase(appContextOrWeb.getId()))) {
-                configuration.put("geronimo.opentracing.filter.active", "false");
+                openTracingFilterActive(false);
             }
         }
+
+        final String mpScan = SystemInstance.get().getOptions().get("tomee.mp.scan", "all");
+        if (mpScan.equals("none")) {
+            openTracingFilterActive(false);
+            openTracingFilterActive(false);
+        }
     }
 
     @Override
@@ -61,4 +68,12 @@ public class TomEEConfigSource implements ConfigSource {
     public String getName() {
         return TomEEConfigSource.class.getSimpleName();
     }
+
+    public void openTracingFilterActive(final boolean active) {
+        configuration.put("geronimo.opentracing.filter.active", Boolean.toString(active));
+    }
+
+    public void metricsJaxRsActive(final boolean active) {
+        configuration.put("geronimo.metrics.jaxrs.activated", Boolean.toString(active));
+    }
 }