This is an automated email from the ASF dual-hosted git repository.
rzo1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomee.git
The following commit(s) were added to refs/heads/main by this push:
new 6edb80d9f7 TOMEE-4347 - Smallrye MP Extension are activated even if
tomee.mp.scan="none"
6edb80d9f7 is described below
commit 6edb80d9f7fb11c0593229afaea9c75770c6bec2
Author: Richard Zowalla <[email protected]>
AuthorDate: Tue Jul 16 08:52:12 2024 +0200
TOMEE-4347 - Smallrye MP Extension are activated even if
tomee.mp.scan="none"
---
.../microprofile/TomEEMicroProfileListener.java | 33 +++++++++++++---------
.../microprofile/health/MPHealthCDIExtension.java | 21 +++++---------
.../metrics/MetricsFilterRegistration.java | 4 +++
.../metrics/MicroProfileMetricsRegistration.java | 5 ++++
.../tomee/microprofile/metrics/VendorMetrics.java | 5 ++++
.../openapi/MicroProfileOpenApiRegistration.java | 5 ++++
.../opentracing/MPOpenTracingCDIExtension.java | 5 +---
...ProfileOpenTracingFinishingFilterInstaller.java | 5 ++++
8 files changed, 52 insertions(+), 31 deletions(-)
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 ec0f1e148b..67d0a6b4e1 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
@@ -81,7 +81,6 @@ public class TomEEMicroProfileListener {
if (mpScan.equals("none")) {
Stream.of(MICROPROFILE_EXTENSIONS).forEach(
extension -> SystemInstance.get().setProperty(extension +
".active", "false"));
-
return;
}
@@ -111,6 +110,10 @@ public class TomEEMicroProfileListener {
}
public void processApplication(@Observes final
BeforeEvent<AfterApplicationCreated> afterApplicationCreated) {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
final ServletContext context =
afterApplicationCreated.getEvent().getContext();
final WebAppInfo webApp = afterApplicationCreated.getEvent().getWeb();
@@ -118,16 +121,16 @@ public class TomEEMicroProfileListener {
// that REST path has priority over servlet and there may override old
applications that have servlets
// with /* mapping.
context.getServletRegistrations()
- .values()
- .stream()
- .map(ServletRegistration::getMappings)
- .flatMap(Collection::stream)
- .filter(mapping -> mapping.equals("/*"))
- .findFirst()
- .ifPresent(mapping -> {
- webApp.restClass.removeIf(
- className ->
className.equals(MicroProfileHealthChecksEndpoint.class.getName()));
- });
+ .values()
+ .stream()
+ .map(ServletRegistration::getMappings)
+ .flatMap(Collection::stream)
+ .filter(mapping -> mapping.equals("/*"))
+ .findFirst()
+ .ifPresent(mapping -> {
+ webApp.restClass.removeIf(
+ className ->
className.equals(MicroProfileHealthChecksEndpoint.class.getName()));
+ });
// we need to register the OpenAPI servlet, but in order to generate
the OpenAPI model, SmallRye uses Jandex,
// a XBean Finder equivalent from JBoss. This seems to be a library
used in many placed, so we want to build the
@@ -146,21 +149,25 @@ public class TomEEMicroProfileListener {
//Check if this was the last webapp to be processed and if so,
remove it from the cache
int lastIndex = app.webApps.size() - 1;
-
if(app.webApps.indexOf(afterApplicationCreated.getEvent().getWeb()) ==
lastIndex) {
+ if
(app.webApps.indexOf(afterApplicationCreated.getEvent().getWeb()) == lastIndex)
{
indexCache.remove(app);
}
} catch (final UncheckedIOException e) {
throw new IllegalStateException("Can't build Jandex index for
application " + webApp.contextRoot, e);
}
-
}
public void registerMicroProfileJaxRsProviders(@Observes final
ExtensionProviderRegistration extensionProviderRegistration) {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
extensionProviderRegistration.getProviders().add(new
SmallRyeTracingDynamicFeature());
// The OpenTracing TCK tests that an exception is turned into a 500.
JAX-RS 3.1 mandates a default mapper
// which was not required on the current versions; see TOMEE-4133 for
details.
extensionProviderRegistration.getProviders().add(new
MicroProfileOpenTracingExceptionMapper());
+
}
/**
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/health/MPHealthCDIExtension.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/health/MPHealthCDIExtension.java
index 97acdee1ef..badec17352 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/health/MPHealthCDIExtension.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/health/MPHealthCDIExtension.java
@@ -43,9 +43,7 @@ import java.util.function.Consumer;
public class MPHealthCDIExtension implements Extension {
- private final String MP_HEALTH_DISABLE_DEFAULT_PROCEDURES =
"mp.health.disable-default-procedures";
-
-
+ private static final String MP_HEALTH_DISABLE_DEFAULT_PROCEDURES =
"mp.health.disable-default-procedures";
// Use a single Jakarta Contexts and Dependency Injection instance to
select and destroy all HealthCheck probes instances
private Instance<Object> instance;
@@ -66,7 +64,9 @@ public class MPHealthCDIExtension implements Extension {
* @param beanManager
*/
public void observeBeforeBeanDiscovery(@Observes final BeforeBeanDiscovery
bbd, final BeanManager beanManager) {
- if (isScanMP()) return;
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
bbd.addAnnotatedType(beanManager.createAnnotatedType(MicroProfileHealthReporterProducer.class),
"MicroProfileHealthReporterProducer");
}
@@ -76,7 +76,9 @@ public class MPHealthCDIExtension implements Extension {
* add them to the {@link MicroProfileHealthReporter}.
*/
private void afterDeploymentValidation(@Observes final
AfterDeploymentValidation avd, BeanManager bm) {
- if (isScanMP()) return;
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
instance = bm.createInstance();
@@ -111,15 +113,6 @@ public class MPHealthCDIExtension implements Extension {
}
}
- private boolean isScanMP() {
- final String mpScan =
SystemInstance.get().getOptions().get("tomee.mp.scan", "none");
- if (mpScan.equals("none")) {
-
SystemInstance.get().setProperty(MPHealthCDIExtension.class.getName() +
".active", "false");
- return true;
- }
- return false;
- }
-
private void addHealthChecks(
AnnotationLiteral qualifier,
BiConsumer<HealthCheck, ClassLoader> healthFunction, List<HealthCheck>
healthChecks) {
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MetricsFilterRegistration.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MetricsFilterRegistration.java
index 4a5361dc31..8f4807660e 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MetricsFilterRegistration.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MetricsFilterRegistration.java
@@ -21,11 +21,15 @@ import jakarta.ws.rs.container.DynamicFeature;
import jakarta.ws.rs.container.ResourceInfo;
import jakarta.ws.rs.core.FeatureContext;
import jakarta.ws.rs.ext.Provider;
+import org.apache.openejb.loader.SystemInstance;
@Provider
public class MetricsFilterRegistration implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
context.register(JaxRsMetricsFilter.class);
}
}
\ No newline at end of file
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MicroProfileMetricsRegistration.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MicroProfileMetricsRegistration.java
index f6af007d27..90575078cf 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MicroProfileMetricsRegistration.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/MicroProfileMetricsRegistration.java
@@ -22,6 +22,7 @@ import jakarta.servlet.ServletContainerInitializer;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRegistration;
+import org.apache.openejb.loader.SystemInstance;
import java.util.Set;
@@ -35,6 +36,10 @@ public class MicroProfileMetricsRegistration implements
ServletContainerInitiali
@Override
public void onStartup(final Set<Class<?>> classes, final ServletContext
ctx) throws ServletException {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
final FilterRegistration.Dynamic metricsServletFilter =
ctx.addFilter("mp-metrics-filter", JaxRsMetricsServletFilter.class);
metricsServletFilter.setAsyncSupported(true);
metricsServletFilter.addMappingForUrlPatterns(null, false, "/*");
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/VendorMetrics.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/VendorMetrics.java
index fa7f1fd16a..cc06ddeca9 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/VendorMetrics.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/metrics/VendorMetrics.java
@@ -19,6 +19,7 @@ package org.apache.tomee.microprofile.metrics;
import io.smallrye.metrics.SharedMetricRegistries;
import io.smallrye.metrics.legacyapi.LegacyMetricRegistryAdapter;
import
org.apache.openejb.assembler.classic.event.AssemblerAfterApplicationCreated;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.observer.Observes;
import org.apache.openejb.util.Join;
import org.eclipse.microprofile.metrics.Metadata;
@@ -49,6 +50,10 @@ public class VendorMetrics {
private static final Logger LOGGER =
Logger.getLogger(VendorMetrics.class.getName());
public void afterApplicationDeployed(@Observes
AssemblerAfterApplicationCreated event) {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
final MetricRegistry registry =
SharedMetricRegistries.getOrCreate(MetricRegistry.VENDOR_SCOPE);
if (! (registry instanceof LegacyMetricRegistryAdapter)) {
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/openapi/MicroProfileOpenApiRegistration.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/openapi/MicroProfileOpenApiRegistration.java
index 49b2e820b3..4182087d56 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/openapi/MicroProfileOpenApiRegistration.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/openapi/MicroProfileOpenApiRegistration.java
@@ -33,6 +33,7 @@ import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRegistration;
import org.apache.openejb.loader.IO;
+import org.apache.openejb.loader.SystemInstance;
import org.apache.openejb.util.LogCategory;
import org.apache.openejb.util.Logger;
import org.eclipse.microprofile.config.ConfigProvider;
@@ -77,6 +78,10 @@ public class MicroProfileOpenApiRegistration implements
ServletContainerInitiali
@Override
public void onStartup(final Set<Class<?>> c, final ServletContext
servletContext) throws ServletException {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
LOGGER.info("Registering OpenAPI servlet on /openapi for application "
+ servletContext.getContextPath());
final ServletRegistration.Dynamic servletRegistration =
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MPOpenTracingCDIExtension.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MPOpenTracingCDIExtension.java
index 027a2ee866..b3028b1960 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MPOpenTracingCDIExtension.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MPOpenTracingCDIExtension.java
@@ -31,10 +31,7 @@ public class MPOpenTracingCDIExtension implements Extension {
* @param beanManager the BeanManager reference
*/
public void observeBeforeBeanDiscovery(@Observes final BeforeBeanDiscovery
bbd, final BeanManager beanManager) {
- final String mpScan =
SystemInstance.get().getOptions().get("tomee.mp.scan", "none");
-
- if (mpScan.equals("none")) {
-
SystemInstance.get().setProperty(MPOpenTracingCDIExtension.class.getName() +
".active", "false");
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
return;
}
bbd.addAnnotatedType(beanManager.createAnnotatedType(TracerProducer.class),
"TracerProducer");
diff --git
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingFinishingFilterInstaller.java
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingFinishingFilterInstaller.java
index a5ddc0fa66..3a16ba5a74 100644
---
a/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingFinishingFilterInstaller.java
+++
b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingFinishingFilterInstaller.java
@@ -23,6 +23,7 @@ import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletContextEvent;
import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
+import org.apache.openejb.loader.SystemInstance;
import java.util.EnumSet;
@@ -31,6 +32,10 @@ public class MicroProfileOpenTracingFinishingFilterInstaller
implements ServletC
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
+ if
("none".equals(SystemInstance.get().getOptions().get("tomee.mp.scan", "none")))
{
+ return;
+ }
+
final ServletContext servletContext =
servletContextEvent.getServletContext();
// Span finishing filter