PAYARA-2956 - Fix warnings when checking CDI bean is JAX-RS resource (#3906)
Signed-off-by: arjantijms <arjan.tijms@gmail.com>
diff --git a/core-server/src/main/java/org/glassfish/jersey/server/model/IntrospectionModeller.java b/core-server/src/main/java/org/glassfish/jersey/server/model/IntrospectionModeller.java
index 239ab9e..bc263fb 100644
--- a/core-server/src/main/java/org/glassfish/jersey/server/model/IntrospectionModeller.java
+++ b/core-server/src/main/java/org/glassfish/jersey/server/model/IntrospectionModeller.java
@@ -183,8 +183,10 @@
method.getGenericParameterTypes()[0],
method.getAnnotations());
if (null != p) {
- ResourceMethodValidator.validateParameter(p, method.getMethod(), method.getMethod().toGenericString(), "1",
+ if (!disableValidation) {
+ ResourceMethodValidator.validateParameter(p, method.getMethod(), method.getMethod().toGenericString(), "1",
InvocableValidator.isSingleton(handlerClass));
+ }
// we do not inject entity parameters into class instance fields and properties.
if (p.getSource() != Parameter.Source.ENTITY) {
@@ -208,8 +210,11 @@
field.getGenericType(),
field.getAnnotations());
if (null != p) {
- ResourceMethodValidator.validateParameter(p, field, field.toGenericString(), field.getName(),
+ if (!disableValidation) {
+ ResourceMethodValidator.validateParameter(p, field, field.toGenericString(), field.getName(),
isInSingleton);
+ }
+
// we do not inject entity and unknown parameters into class instance fields and properties.
if (p.getSource() != Parameter.Source.ENTITY) {
injectableParameters.add(p);
diff --git a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
index 724b7c0..e557de2 100644
--- a/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
+++ b/ext/cdi/jersey-cdi1x/src/main/java/org/glassfish/jersey/ext/cdi1x/internal/CdiComponentProvider.java
@@ -146,7 +146,10 @@
}
});
- private final Cache<Class<?>, Boolean> jaxRsResourceCache = new Cache<>(clazz -> Resource.from(clazz) != null);
+ // Check first if a class is a JAX-RS resource, and only if so check with validation.
+ // This prevents unnecessary warnings being logged for pure CDI beans.
+ private final Cache<Class<?>, Boolean> jaxRsResourceCache = new Cache<>(
+ clazz -> Resource.from(clazz, true) != null && Resource.from(clazz) != null);
private final Hk2CustomBoundTypesProvider customHk2TypesProvider;
private final InjectionManagerStore injectionManagerStore;