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 <radcor...@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)); + } }