This is an automated email from the ASF dual-hosted git repository. jlmonteiro pushed a commit to branch opentracing-provider in repository https://gitbox.apache.org/repos/asf/tomee.git
commit 00b81fc7ae2a4983acd050e69a01608bc9537849 Author: Jean-Louis Monteiro <jlmonte...@tomitribe.com> AuthorDate: Thu Dec 15 16:55:25 2022 +0100 Make sure providers aren't scanned if Application returns classes or singletons. Register OpenTracing providers during MP initialization --- .../microprofile/jwt/jaxrs/MPJWPProviderRegistration.java | 2 +- .../java/org/apache/openejb/server/rest/RESTService.java | 4 ++-- .../MicroProfileOpenTracingTCKDeploymentPackager.java | 1 - .../resources/META-INF/services/jakarta.ws.rs.ext.Providers | 2 -- tomee/tomee-microprofile/mp-common/pom.xml | 6 ++++++ .../apache/tomee/microprofile/TomEEMicroProfileListener.java | 12 ++++++++++++ .../opentracing}/MicroProfileOpenTracingExceptionMapper.java | 4 ++-- 7 files changed, 23 insertions(+), 8 deletions(-) diff --git a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java index 38e06af043..b5901e2b7f 100644 --- a/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java +++ b/mp-jwt/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java @@ -24,7 +24,7 @@ import org.apache.tomee.microprofile.jwt.bval.ValidationInterceptorsFeature; /** * OpenEJB/TomEE hack to register a new provider on the fly * Could be package in tomee only or done in another way - * + * <p> * As soon as Roberto is done with the packaging, we can remove all this and providers are going to be scanned automatically */ public class MPJWPProviderRegistration { diff --git a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java index 064ce6ddef..9f77bbb764 100644 --- a/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java +++ b/server/openejb-rest/src/main/java/org/apache/openejb/server/rest/RESTService.java @@ -364,8 +364,8 @@ public abstract class RESTService implements ServerService, SelfManaging { .filter(Objects::nonNull) .anyMatch(aClass -> aClass.getDeclaredMethods().length > 0); - // if (useDiscoveredProviders(appInfo, !hasExplicitlyDefinedApplication)) { - if (useDiscoveredProviders(appInfo)) { + if (useDiscoveredProviders(appInfo, !hasExplicitlyDefinedApplication)) { + // if (useDiscoveredProviders(appInfo)) { final Set<String> jaxRsProviders = new HashSet<>(webApp.jaxRsProviders); jaxRsProviders.addAll(appInfo.jaxRsProviders); additionalProviders.addAll(appProviders(jaxRsProviders, classLoader)); diff --git a/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingTCKDeploymentPackager.java b/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingTCKDeploymentPackager.java index c269c6cb67..43f3e4148c 100644 --- a/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingTCKDeploymentPackager.java +++ b/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingTCKDeploymentPackager.java @@ -51,7 +51,6 @@ public class MicroProfileOpenTracingTCKDeploymentPackager extends ServletProtoco webArchive.addAsLibrary(jarLocation(ThreadLocalScopeManager.class)); webArchive.addAsWebInfResource("META-INF/beans.xml"); webArchive.addClass(MicroProfileOpenTracingTCKTracer.class); - webArchive.addClass(MicroProfileOpenTracingExceptionMapper.class); ; System.out.println(webArchive.toString(true)); diff --git a/tck/microprofile-tck/opentracing/src/test/resources/META-INF/services/jakarta.ws.rs.ext.Providers b/tck/microprofile-tck/opentracing/src/test/resources/META-INF/services/jakarta.ws.rs.ext.Providers deleted file mode 100644 index 6bbb3bed2c..0000000000 --- a/tck/microprofile-tck/opentracing/src/test/resources/META-INF/services/jakarta.ws.rs.ext.Providers +++ /dev/null @@ -1,2 +0,0 @@ -org.apache.tomee.microprofile.tck.opentracing.MicroProfileOpenTrackingContextResolver -org.apache.tomee.microprofile.tck.opentracing.MicroProfileOpenTracingExceptionMapper diff --git a/tomee/tomee-microprofile/mp-common/pom.xml b/tomee/tomee-microprofile/mp-common/pom.xml index 5938a3d732..28ec5fcb3c 100644 --- a/tomee/tomee-microprofile/mp-common/pom.xml +++ b/tomee/tomee-microprofile/mp-common/pom.xml @@ -171,6 +171,12 @@ <version>${project.version}</version> <scope>provided</scope> </dependency> + <dependency> + <artifactId>openejb-cxf-rs</artifactId> + <groupId>org.apache.tomee</groupId> + <version>${project.version}</version> + <scope>provided</scope> + </dependency> <!-- MicroProfile --> 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 fe02122c44..a8687f6890 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 @@ -16,6 +16,7 @@ */ package org.apache.tomee.microprofile; +import io.smallrye.opentracing.SmallRyeTracingDynamicFeature; import jakarta.servlet.ServletContext; import jakarta.servlet.ServletRegistration; import org.apache.openejb.assembler.classic.WebAppInfo; @@ -25,12 +26,14 @@ import org.apache.openejb.loader.Files; import org.apache.openejb.loader.SystemInstance; import org.apache.openejb.observer.Observes; import org.apache.openejb.observer.event.BeforeEvent; +import org.apache.openejb.server.cxf.rs.event.ExtensionProviderRegistration; import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; import org.apache.tomee.catalina.event.AfterApplicationCreated; import org.apache.tomee.installer.Paths; import org.apache.tomee.microprofile.health.MicroProfileHealthChecksEndpoint; import org.apache.tomee.microprofile.openapi.MicroProfileOpenApiRegistration; +import org.apache.tomee.microprofile.opentracing.MicroProfileOpenTracingExceptionMapper; import org.jboss.jandex.Index; import org.jboss.jandex.Indexer; @@ -143,6 +146,15 @@ public class TomEEMicroProfileListener { } + public void registerMicroProfileJaxRsProviders(@Observes final ExtensionProviderRegistration extensionProviderRegistration) { + 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. I'm not sure if we should do this by default in the server + // of if we should do it with an arquillian extension to add it only for the TCK + extensionProviderRegistration.getProviders().add(new MicroProfileOpenTracingExceptionMapper()); + } + /** * Constructs an Index of the passed files and directories. Files may be class files or JAR files. * Directories are scanned for class files recursively. This is a copy of the Index.of() implementation which does diff --git a/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingExceptionMapper.java b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingExceptionMapper.java similarity index 95% rename from tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingExceptionMapper.java rename to tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingExceptionMapper.java index 56ae9b18fc..40dd5ea0e6 100644 --- a/tck/microprofile-tck/opentracing/src/test/java/org.apache.tomee.microprofile.tck.opentracing/MicroProfileOpenTracingExceptionMapper.java +++ b/tomee/tomee-microprofile/mp-common/src/main/java/org/apache/tomee/microprofile/opentracing/MicroProfileOpenTracingExceptionMapper.java @@ -14,10 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.tomee.microprofile.tck.opentracing; +package org.apache.tomee.microprofile.opentracing; -import jakarta.ws.rs.ext.Provider; import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.Provider; @Provider public class MicroProfileOpenTracingExceptionMapper implements jakarta.ws.rs.ext.ExceptionMapper<RuntimeException> {