Merge pull request #4934 from arjantijms/fix_injectionpoint
diff --git a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java index d1aea00..41cd5f0 100644 --- a/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java +++ b/ext/bean-validation/src/main/java/org/glassfish/jersey/server/validation/internal/hibernate/DestructibleBeanInstance.java
@@ -12,6 +12,7 @@ import jakarta.enterprise.inject.spi.AnnotatedType; import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; /** * @author Hardy Ferentschik @@ -43,7 +44,9 @@ private InjectionTarget<T> createInjectionTarget(BeanManager beanManager, Class<T> type) { AnnotatedType<T> annotatedType = beanManager.createAnnotatedType(type); - return beanManager.createInjectionTarget(annotatedType); + InjectionTargetFactory<T> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + + return injectionTargetFactory.createInjectionTarget(null); } private static <T> T createAndInjectBeans(BeanManager beanManager, InjectionTarget<T> injectionTarget) {
diff --git a/ext/cdi/jersey-cdi1x-servlet/src/main/java/org/glassfish/jersey/ext/cdi1x/servlet/internal/CdiExternalRequestScopeExtension.java b/ext/cdi/jersey-cdi1x-servlet/src/main/java/org/glassfish/jersey/ext/cdi1x/servlet/internal/CdiExternalRequestScopeExtension.java index 4232f43..d36f976 100644 --- a/ext/cdi/jersey-cdi1x-servlet/src/main/java/org/glassfish/jersey/ext/cdi1x/servlet/internal/CdiExternalRequestScopeExtension.java +++ b/ext/cdi/jersey-cdi1x-servlet/src/main/java/org/glassfish/jersey/ext/cdi1x/servlet/internal/CdiExternalRequestScopeExtension.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2021 Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2018 Payara Foundation and/or its affiliates. * * This program and the accompanying materials are made available under the @@ -35,6 +35,7 @@ import jakarta.enterprise.inject.spi.Extension; import jakarta.enterprise.inject.spi.InjectionPoint; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.util.AnnotationLiteral; /** @@ -69,7 +70,10 @@ private void afterBeanDiscovery(@Observes AfterBeanDiscovery afterBeanDiscovery, BeanManager beanManager) { // we need the injection target so that CDI could instantiate the original interceptor for us - final InjectionTarget<CdiExternalRequestScope> interceptorTarget = beanManager.createInjectionTarget(requestScopeType); + final InjectionTargetFactory<CdiExternalRequestScope> injectionTargetFactory = + beanManager.getInjectionTargetFactory(requestScopeType); + final InjectionTarget<CdiExternalRequestScope> interceptorTarget = + injectionTargetFactory.createInjectionTarget(null); afterBeanDiscovery.addBean(new Bean<CdiExternalRequestScope>() {
diff --git a/ext/cdi/jersey-cdi1x-validation/src/main/java/org/glassfish/jersey/ext/cdi1x/validation/internal/CdiInterceptorWrapperExtension.java b/ext/cdi/jersey-cdi1x-validation/src/main/java/org/glassfish/jersey/ext/cdi1x/validation/internal/CdiInterceptorWrapperExtension.java index a02e829..3155261 100644 --- a/ext/cdi/jersey-cdi1x-validation/src/main/java/org/glassfish/jersey/ext/cdi1x/validation/internal/CdiInterceptorWrapperExtension.java +++ b/ext/cdi/jersey-cdi1x-validation/src/main/java/org/glassfish/jersey/ext/cdi1x/validation/internal/CdiInterceptorWrapperExtension.java
@@ -37,6 +37,7 @@ import jakarta.enterprise.inject.spi.Extension; import jakarta.enterprise.inject.spi.InjectionPoint; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.util.AnnotationLiteral; import jakarta.interceptor.Interceptor; @@ -100,7 +101,10 @@ // we need the injection target so that CDI could instantiate the original interceptor for us final AnnotatedType<ValidationInterceptor> interceptorType = interceptorAnnotatedType; - final InjectionTarget<ValidationInterceptor> interceptorTarget = beanManager.createInjectionTarget(interceptorType); + final InjectionTargetFactory<ValidationInterceptor> injectionTargetFactory = + beanManager.getInjectionTargetFactory(interceptorType); + final InjectionTarget<ValidationInterceptor> interceptorTarget = + injectionTargetFactory.createInjectionTarget(null); afterBeanDiscovery.addBean(new Bean<ValidationInterceptor>() {
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/bean/BeanHelper.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/bean/BeanHelper.java index bdee0fd..5b3229e 100644 --- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/bean/BeanHelper.java +++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/bean/BeanHelper.java
@@ -28,6 +28,7 @@ import jakarta.enterprise.inject.spi.Bean; import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.ws.rs.HttpMethod; import jakarta.ws.rs.Path; import jakarta.ws.rs.RuntimeType; @@ -105,7 +106,8 @@ public static <T> BindingBeanPair registerBean(RuntimeType runtimeType, ClassBinding<T> binding, AfterBeanDiscovery abd, Collection<InjectionResolver> resolvers, BeanManager beanManager) { AnnotatedType<T> annotatedType = beanManager.createAnnotatedType(binding.getService()); - InjectionTarget<T> injectionTarget = beanManager.createInjectionTarget(annotatedType); + InjectionTargetFactory<T> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + InjectionTarget<T> injectionTarget = injectionTargetFactory.createInjectionTarget(null); ClassBean<T> bean = new ClassBean<>(runtimeType, binding); bean.setInjectionTarget(getJerseyInjectionTarget(binding.getService(), injectionTarget, bean, resolvers));
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java index 21f4974..23c6ebe 100644 --- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java +++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/managed/CdiInjectionManager.java
@@ -29,6 +29,7 @@ import jakarta.enterprise.inject.spi.Bean; import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.inject.spi.Unmanaged; import jakarta.inject.Singleton; import jakarta.ws.rs.RuntimeType; @@ -295,10 +296,12 @@ @Override @SuppressWarnings("unchecked") public void inject(Object instance) { + CreationalContext creationalContext = createCreationalContext(null); AnnotatedType annotatedType = beanManager.createAnnotatedType((Class) instance.getClass()); - InjectionTarget injectionTarget = beanManager.createInjectionTarget(annotatedType); - CreationalContext context = createCreationalContext(null); - injectionTarget.inject(instance, context); + InjectionTargetFactory injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + InjectionTarget injectionTarget = injectionTargetFactory.createInjectionTarget(null); + + injectionTarget.inject(instance, creationalContext); } @Override
diff --git a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/scope/RequestScopeBean.java b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/scope/RequestScopeBean.java index 2e5ab29..e2a95d4 100644 --- a/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/scope/RequestScopeBean.java +++ b/incubator/cdi-inject-weld/src/main/java/org/glassfish/jersey/inject/weld/internal/scope/RequestScopeBean.java
@@ -30,6 +30,7 @@ import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionPoint; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.util.AnnotationLiteral; import jakarta.inject.Singleton; @@ -49,7 +50,8 @@ */ public RequestScopeBean(BeanManager beanManager) { AnnotatedType<CdiRequestScope> annotatedType = beanManager.createAnnotatedType(CdiRequestScope.class); - this.injectionTarget = beanManager.createInjectionTarget(annotatedType); + InjectionTargetFactory<CdiRequestScope> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + this.injectionTarget = injectionTargetFactory.createInjectionTarget(null); } @Override
diff --git a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java index 61fc256..80e2a73 100644 --- a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java +++ b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/CdiSeInjectionManager.java
@@ -32,6 +32,7 @@ import jakarta.enterprise.inject.spi.Bean; import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.inject.spi.Unmanaged; import org.glassfish.jersey.inject.cdi.se.bean.JerseyBean; @@ -236,9 +237,11 @@ @SuppressWarnings("unchecked") public void inject(Object instance) { if (isInitialized()) { - AnnotatedType annotatedType = beanManager.createAnnotatedType((Class) instance.getClass()); - InjectionTarget injectionTarget = beanManager.createInjectionTarget(annotatedType); CreationalContext context = beanManager.createCreationalContext(null); + AnnotatedType annotatedType = beanManager.createAnnotatedType((Class) instance.getClass()); + InjectionTargetFactory injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + InjectionTarget injectionTarget = injectionTargetFactory.createInjectionTarget(null); + injectionTarget.inject(instance, context); } }
diff --git a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/RequestScopeBean.java b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/RequestScopeBean.java index 7a3d4a1..f73a7f5 100644 --- a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/RequestScopeBean.java +++ b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/RequestScopeBean.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -30,6 +30,7 @@ import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionPoint; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import jakarta.enterprise.util.AnnotationLiteral; import jakarta.inject.Singleton; @@ -49,7 +50,8 @@ */ public RequestScopeBean(BeanManager beanManager) { AnnotatedType<CdiRequestScope> annotatedType = beanManager.createAnnotatedType(CdiRequestScope.class); - this.injectionTarget = beanManager.createInjectionTarget(annotatedType); + InjectionTargetFactory<CdiRequestScope> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + this.injectionTarget = injectionTargetFactory.createInjectionTarget(null); } @Override
diff --git a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/bean/BeanHelper.java b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/bean/BeanHelper.java index f60af54..c4f0f8a 100644 --- a/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/bean/BeanHelper.java +++ b/inject/cdi2-se/src/main/java/org/glassfish/jersey/inject/cdi/se/bean/BeanHelper.java
@@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, 2020 Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2017, 2021 Oracle and/or its affiliates. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v. 2.0, which is available at @@ -26,6 +26,7 @@ import jakarta.enterprise.inject.spi.Bean; import jakarta.enterprise.inject.spi.BeanManager; import jakarta.enterprise.inject.spi.InjectionTarget; +import jakarta.enterprise.inject.spi.InjectionTargetFactory; import org.glassfish.jersey.inject.cdi.se.injector.CachedConstructorAnalyzer; import org.glassfish.jersey.inject.cdi.se.injector.InjectionUtils; @@ -99,7 +100,8 @@ public static <T> void registerBean(ClassBinding<T> binding, AfterBeanDiscovery abd, Collection<InjectionResolver> resolvers, BeanManager beanManager) { AnnotatedType<T> annotatedType = beanManager.createAnnotatedType(binding.getService()); - InjectionTarget<T> injectionTarget = beanManager.createInjectionTarget(annotatedType); + InjectionTargetFactory<T> injectionTargetFactory = beanManager.getInjectionTargetFactory(annotatedType); + InjectionTarget<T> injectionTarget = injectionTargetFactory.createInjectionTarget(null); ClassBean<T> bean = new ClassBean<>(binding); bean.setInjectionTarget(getJerseyInjectionTarget(binding.getService(), injectionTarget, bean, resolvers));