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> {

Reply via email to