You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2022/02/21 03:08:31 UTC
[tomee] 03/09: TOMEE-3844 Improve logging for JAX-RS application deployment
This is an automated email from the ASF dual-hosted git repository.
dblevins pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomee.git
commit d44266970479c3c30035545b2ca2f7f19553ac5f
Author: David Blevins <db...@tomitribe.com>
AuthorDate: Sun Feb 20 16:18:50 2022 -0500
TOMEE-3844 Improve logging for JAX-RS application deployment
---
.../jaxrs/applogging/ApplicationLoggingTest.java | 10 +------
.../openejb/server/cxf/rs/CxfRsHttpListener.java | 34 +++++++++++++++++-----
2 files changed, 28 insertions(+), 16 deletions(-)
diff --git a/itests/jaxrs/src/test/java/org/apache/tomee/itests/jaxrs/applogging/ApplicationLoggingTest.java b/itests/jaxrs/src/test/java/org/apache/tomee/itests/jaxrs/applogging/ApplicationLoggingTest.java
index 4d02e89..c4b16ba 100644
--- a/itests/jaxrs/src/test/java/org/apache/tomee/itests/jaxrs/applogging/ApplicationLoggingTest.java
+++ b/itests/jaxrs/src/test/java/org/apache/tomee/itests/jaxrs/applogging/ApplicationLoggingTest.java
@@ -79,13 +79,6 @@ public class ApplicationLoggingTest {
"Resource{clazz=org.apache.tomee.itests.jaxrs.applogging.TriangleResource, discovered=false, singleton=false}", normalize(join));
}
- /**
- * This test shows two bugs:
- * - singletons show up as discovered when they were explicitly configured
- *
- * @throws Exception
- */
- @Ignore
@Test
public void getSingletons() throws Exception {
@@ -98,13 +91,12 @@ public class ApplicationLoggingTest {
.add(AnnotatedWriter.class)
.asJar())
.watch("org.apache.openejb.server.cxf.rs.CxfRsHttpListener.logApplication ", "\n", output::add)
-// .debug(5005)
.build();
Collections.sort(output);
final String join = Join.join("\n", output);
- assertEquals("Application{path='http://localhost:0/test/red', class=org.apache.tomee.itests.jaxrs.applogging.GetSingletons, resources=2, providers=2, invalids=0}\n" +
+ assertEquals("Application{path='http://localhost:0/test/red', class=org.apache.tomee.itests.jaxrs.applogging.GetSingletons, resources=2, providers=1, invalids=0}\n" +
"Provider{clazz=org.apache.tomee.itests.jaxrs.applogging.AnnotatedWriter, discovered=false, singleton=true}\n" +
"Resource{clazz=org.apache.tomee.itests.jaxrs.applogging.SquareResource, discovered=false, singleton=true}\n" +
"Resource{clazz=org.apache.tomee.itests.jaxrs.applogging.TriangleResource, discovered=false, singleton=true}", normalize(join));
diff --git a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
index dd9580c..04016ff 100644
--- a/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
+++ b/server/openejb-cxf-rs/src/main/java/org/apache/openejb/server/cxf/rs/CxfRsHttpListener.java
@@ -848,17 +848,37 @@ public class CxfRsHttpListener implements RsHttpListener {
declaredSingletons.addAll(application.getSingletons());
}
+ for (final Object declaredSingleton : new ArrayList<>(declaredSingletons)) {
+ if (declaredSingleton instanceof Class) {
+ continue;
+ }
+ declaredSingletons.add(declaredSingleton.getClass());
+ }
+
+ final Set<Class<?>> seen = new HashSet<>();
for (final Object additionalProvider : additionalProviders) {
- if (additionalProvider instanceof Class) {
- final boolean discovered = !declaredSingletons.contains(additionalProvider);
+ final Class<?> providerClass = (additionalProvider instanceof Class) ? (Class<?>) additionalProvider : additionalProvider.getClass();
+
+ // If we have already seen this provider class, skip it
+ // For some reason we add a duplicate version, one of the instance and one of the class
+ if (!seen.add(providerClass)) continue;
+
+ if (declaredSingletons.contains(providerClass)) {
+
+ applicationData.addProvider(false, providerClass, additionalProvider);
+
+ } else if (declaredClasses.contains(providerClass)) {
+
+ applicationData.addProvider(false, providerClass, null);
+
+ } else if (additionalProvider instanceof Class) {
- applicationData.addProvider(discovered, (Class<?>) additionalProvider, null);
+ applicationData.addProvider(true, providerClass, null);
} else {
- final boolean discovered = !declaredSingletons.contains(additionalProvider);
- applicationData.addProvider(discovered, additionalProvider.getClass(), null);
+ applicationData.addProvider(true, providerClass, additionalProvider);
}
}
@@ -881,7 +901,7 @@ public class CxfRsHttpListener implements RsHttpListener {
} else {
- final boolean discovered = !declaredClasses.contains(clazz);
+ final boolean discovered = !(declaredClasses.contains(clazz) || declaredSingletons.contains(clazz));
applicationData.addResource(discovered, clazz, null);
@@ -894,7 +914,7 @@ public class CxfRsHttpListener implements RsHttpListener {
final Class<?> clazz = realClass(singleton.getClass());
- final boolean configured = declaredClasses.contains(clazz) || declaredClasses.contains(singleton.getClass());
+ final boolean configured = declaredSingletons.contains(clazz) || declaredSingletons.contains(singleton.getClass());
applicationData.addResource(!configured, clazz, singleton);
}