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
The following commit(s) were added to refs/heads/TOMEE-2408 by this push:
new 2ffed70 TOMEE-2408 - Refactored the way to add MP libraries in the
container scanner. Added an event to allow to decouple the code and register
the required libraries when needed.
2ffed70 is described below
commit 2ffed7081e627b2d65dbf0d5c9c33b307567fc5c
Author: Roberto Cortez <[email protected]>
AuthorDate: Fri Feb 1 19:17:11 2019 +0000
TOMEE-2408 - Refactored the way to add MP libraries in the container
scanner. Added an event to allow to decouple the code and register the required
libraries when needed.
---
.../apache/openejb/config/DeploymentLoader.java | 6 +++-
.../config/event/AfterContainerUrlScanEvent.java | 42 ++++++++++++++++++++++
.../org/apache/tomee/catalina/TomcatLoader.java | 2 --
.../java/org/apache/tomee/installer/Installer.java | 2 --
.../microprofile/TomEEMicroProfileListener.java | 34 ++++++++++++++++++
5 files changed, 81 insertions(+), 5 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 9b56bdb..9a09802 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
@@ -25,6 +25,8 @@ import org.apache.openejb.api.RemoteClient;
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;
@@ -1106,7 +1108,7 @@ public class DeploymentLoader implements
DeploymentFilterable {
try {
UrlSet urlSet = new
UrlSet(ParentClassLoaderFinder.Helper.get());
urlSet = URLs.cullSystemJars(urlSet);
- final PatternFilter containerIncludes = new
PatternFilter(SystemInstance.get().getProperty(OPENEJB_CONTAINER_INCLUDES,
".*(geronimo|mp-jwt|mp-common|failsafe).*"));
+ 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);
containerUrls = urlSet.getUrls();
@@ -1136,6 +1138,8 @@ public class DeploymentLoader implements
DeploymentFilterable {
containerUrls = Collections.emptyList();
}
}
+
+ SystemInstance.get().fireEvent(new
AfterContainerUrlScanEvent(containerUrls));
}
public static List<URL> filterWebappUrls(final URL[] webUrls, final Filter
filter, final URL exclusions) {
diff --git
a/container/openejb-core/src/main/java/org/apache/openejb/config/event/AfterContainerUrlScanEvent.java
b/container/openejb-core/src/main/java/org/apache/openejb/config/event/AfterContainerUrlScanEvent.java
new file mode 100644
index 0000000..2594e06
--- /dev/null
+++
b/container/openejb-core/src/main/java/org/apache/openejb/config/event/AfterContainerUrlScanEvent.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.config.event;
+
+import org.apache.openejb.observer.Event;
+
+import java.net.URL;
+import java.util.List;
+
+@Event
+public class AfterContainerUrlScanEvent {
+ private List<URL> containerUrls;
+
+ public AfterContainerUrlScanEvent(final List<URL> containerUrls) {
+ this.containerUrls = containerUrls;
+ }
+
+ public List<URL> getContainerUrls() {
+ return containerUrls;
+ }
+
+ @Override
+ public String toString() {
+ return "AfterContainerUrlScanEvent{" +
+ "containerUrls=" + containerUrls +
+ '}';
+ }
+}
diff --git
a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
index fe48a09..79dcbee 100644
---
a/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
+++
b/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatLoader.java
@@ -215,8 +215,6 @@ public class TomcatLoader implements Loader {
// for compatibility purpose, no more used normally by our trunk
SystemInstance.get().setComponent(WebDeploymentListeners.class, new
WebDeploymentListeners());
- optionalService(properties,
"org.apache.tomee.microprofile.MicroProfileService");
-
// tomee webapp enricher
final TomEEClassLoaderEnricher classLoaderEnricher = new
TomEEClassLoaderEnricher();
SystemInstance.get().setComponent(WebAppEnricher.class,
classLoaderEnricher);
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 cfa4742..bac2c9c 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
@@ -794,8 +794,6 @@ public class Installer implements InstallerInterface {
systemPropertiesWriter.write("#\n");
systemPropertiesWriter.write("# Which paths / libraries should
be scanned?\n");
systemPropertiesWriter.write("openejb.scan.webapp.container =
true\n");
-
systemPropertiesWriter.write("openejb.scan.webapp.container.includes =
.*(geronimo|mp-jwt|mp-common|failsafe).*\n");
-
systemPropertiesWriter.write("openejb.scan.webapp.container.excludes = \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 353ac8e..1f349e5 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
@@ -22,15 +22,49 @@ import
org.apache.geronimo.microprofile.metrics.common.jaxrs.MetricsEndpoints;
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.observer.Observes;
import org.apache.openejb.observer.event.BeforeEvent;
import org.apache.tomee.catalina.event.AfterApplicationCreated;
+import org.apache.tomee.installer.Paths;
import javax.servlet.ServletContext;
import javax.servlet.ServletRegistration;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.Collection;
+import java.util.List;
public class TomEEMicroProfileListener {
+ private static final String[] MICROPROFILE_LIBS_IMPLS_PREFIXES = new
String[]{
+ "mp-common",
+ "geronimo-config",
+ "safeguard",
+ "mp-jwt",
+ "geronimo-health",
+ "geronimo-metrics",
+ "geronimo-opentracing",
+ "geronimo-openapi",
+ "cxf-rt-rs-mp-client",
+ };
+
+ @SuppressWarnings("Duplicates")
+ public void enrichContainerWithMicroProfile(@Observes final
AfterContainerUrlScanEvent afterContainerUrlScanEvent) {
+ 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) {
+ final File file = paths.findTomEELibJar(prefix);
+ if (file != null) {
+ try {
+ containerUrls.add(file.toURI().toURL());
+ } catch (final MalformedURLException e) {
+ // ignored
+ }
+ }
+ }
+ }
+
public void processApplication(@Observes final
BeforeEvent<AfterApplicationCreated> afterApplicationCreated) {
final ServletContext context =
afterApplicationCreated.getEvent().getContext();
final WebAppInfo webApp = afterApplicationCreated.getEvent().getWeb();