Provider and Instance
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/cfc2ae1f Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/cfc2ae1f Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/cfc2ae1f Branch: refs/heads/master Commit: cfc2ae1f873a5b413cd79af69969f4dfe620829d Parents: b05e564 Author: Jean-Louis Monteiro <jeano...@gmail.com> Authored: Fri Mar 2 15:40:17 2018 +0100 Committer: Jean-Louis Monteiro <jeano...@gmail.com> Committed: Fri Mar 2 15:40:17 2018 +0100 ---------------------------------------------------------------------- .../org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java | 2 ++ .../tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java | 9 +++++++++ tck/mp-jwt-embedded/src/test/resources/dev.xml | 8 ++++---- 3 files changed, 15 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/cfc2ae1f/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java ---------------------------------------------------------------------- diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java index 0e87404..0b6f3de 100644 --- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java +++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimBean.java @@ -168,11 +168,13 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable { // handle Provider<T> if (rawTypeClass.isAssignableFrom(Provider.class)) { + final Type providerType = paramType.getActualTypeArguments()[0]; return getClaimValue(key); } // handle Instance<T> if (rawTypeClass.isAssignableFrom(Instance.class)) { + final Type instanceType = paramType.getActualTypeArguments()[0]; return getClaimValue(key); } http://git-wip-us.apache.org/repos/asf/tomee/blob/cfc2ae1f/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java ---------------------------------------------------------------------- diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java index 9f8e602..05b08de 100644 --- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java +++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTCDIExtension.java @@ -23,6 +23,7 @@ import org.apache.tomee.microprofile.jwt.config.JWTAuthContextInfoProvider; import org.eclipse.microprofile.jwt.Claim; import javax.enterprise.event.Observes; +import javax.enterprise.inject.Instance; import javax.enterprise.inject.spi.AfterBeanDiscovery; import javax.enterprise.inject.spi.AfterDeploymentValidation; import javax.enterprise.inject.spi.BeanManager; @@ -46,6 +47,7 @@ public class MPJWTCDIExtension implements Extension { private static Logger logger = Logger.getLogger(MPJWTCDIExtension.class.getName()); private static final Predicate<InjectionPoint> NOT_PROVIDERS = ip -> (ip.getType() instanceof Class) || (ip.getType() instanceof ParameterizedType && ((ParameterizedType)ip.getType()).getRawType() != Provider.class); + private static final Predicate<InjectionPoint> NOT_INSTANCES = ip -> (ip.getType() instanceof Class) || (ip.getType() instanceof ParameterizedType && ((ParameterizedType)ip.getType()).getRawType() != Instance.class); private static final Map<Type, Type> REPLACED_TYPES = new HashMap<>(); static { @@ -68,6 +70,7 @@ public class MPJWTCDIExtension implements Extension { public void registerClaimProducer(@Observes final AfterBeanDiscovery abd, final BeanManager bm) { final Set<Type> types = injectionPoints.stream() .filter(NOT_PROVIDERS) + .filter(NOT_INSTANCES) .map(ip -> REPLACED_TYPES.getOrDefault(ip.getType(), ip.getType())) .collect(Collectors.toSet()); @@ -76,7 +79,13 @@ public class MPJWTCDIExtension implements Extension { .map(ip -> ((ParameterizedType)ip.getType()).getActualTypeArguments()[0]) .collect(Collectors.toSet()); + final Set<Type> instanceTypes = injectionPoints.stream() + .filter(NOT_INSTANCES.negate()) + .map(ip -> ((ParameterizedType)ip.getType()).getActualTypeArguments()[0]) + .collect(Collectors.toSet()); + types.addAll(providerTypes); + types.addAll(instanceTypes); types.stream() .map(type -> new ClaimBean<>(bm, type)) http://git-wip-us.apache.org/repos/asf/tomee/blob/cfc2ae1f/tck/mp-jwt-embedded/src/test/resources/dev.xml ---------------------------------------------------------------------- diff --git a/tck/mp-jwt-embedded/src/test/resources/dev.xml b/tck/mp-jwt-embedded/src/test/resources/dev.xml index 27205d2..b10e250 100644 --- a/tck/mp-jwt-embedded/src/test/resources/dev.xml +++ b/tck/mp-jwt-embedded/src/test/resources/dev.xml @@ -42,7 +42,6 @@ </groups> <classes> <!-- OK - --> <class name="org.eclipse.microprofile.jwt.tck.parsing.TokenValidationTest" /> <class name="org.eclipse.microprofile.jwt.tck.util.TokenUtilsTest" /> <class name="org.eclipse.microprofile.jwt.tck.parsing.TestTokenClaimTypesTest" /> @@ -53,13 +52,14 @@ <class name="org.eclipse.microprofile.jwt.tck.container.jaxrs.JsonValueInjectionTest" /> <class name="org.eclipse.microprofile.jwt.tck.container.jaxrs.RolesAllowedTest" /> <class name="org.eclipse.microprofile.jwt.tck.container.jaxrs.InvalidTokenTest" /> - <!-- KO + --> <class name="org.eclipse.microprofile.jwt.tck.container.jaxrs.ProviderInjectionTest" /> + <!-- KO --> </classes> </test> - + <!-- <test name="extended-tests" verbose="10"> <groups> <define name="extended-groups"> @@ -83,5 +83,5 @@ <class name="org.eclipse.microprofile.jwt.tck.container.jacc.SubjectTest" /> </classes> </test> - + --> </suite>