You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2018/04/16 22:45:27 UTC

[23/38] tomee git commit: Iterate

Iterate


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/50608069
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/50608069
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/50608069

Branch: refs/heads/master
Commit: 506080699d96c06db707ba66a4342aabf5e378f3
Parents: d81bd39
Author: Jean-Louis Monteiro <je...@gmail.com>
Authored: Fri Mar 2 09:14:46 2018 +0100
Committer: Jean-Louis Monteiro <je...@gmail.com>
Committed: Fri Mar 2 09:14:46 2018 +0100

----------------------------------------------------------------------
 .../tomee/microprofile/jwt/cdi/ClaimBean.java   | 32 +++++++++++++++++---
 .../microprofile/jwt/cdi/MPJWTCDIExtension.java |  2 +-
 2 files changed, 28 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/50608069/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 d04d807..ad713dd 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
@@ -17,7 +17,9 @@
 package org.apache.tomee.microprofile.jwt.cdi;
 
 import org.eclipse.microprofile.jwt.Claim;
+import org.eclipse.microprofile.jwt.ClaimValue;
 import org.eclipse.microprofile.jwt.Claims;
+import org.eclipse.microprofile.jwt.JsonWebToken;
 
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.spi.CreationalContext;
@@ -35,9 +37,12 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.logging.Logger;
 
 public class ClaimBean<T> implements Bean<T>, PassivationCapable {
 
+    private static Logger logger = Logger.getLogger(MPJWTCDIExtension.class.getName());
+
     private final static Set<Annotation> QUALIFIERS = new HashSet<>();
 
     private final BeanManager bm;
@@ -53,7 +58,7 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
         this.id = "ClaimBean_" + types;
     }
 
-    private Class getRawType(Type type) {
+    private Class getRawType(final Type type) {
         if (type instanceof Class) {
             return (Class) type;
 
@@ -63,7 +68,7 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
             return (Class) paramType.getRawType();
         }
 
-        // todo deal with Optional here?
+        // todo deal with Optional here? aka check type again
 
         throw new UnsupportedOperationException("Unsupported type " + type);
     }
@@ -132,9 +137,12 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
         }
 
         final Annotated annotated = ip.getAnnotated();
-        Claim claim = annotated.getAnnotation(Claim.class);
+        final Claim claim = annotated.getAnnotation(Claim.class);
         final String key = getClaimKey(claim);
 
+        System.out.println(String.format("Found Claim injection with name=%s and for InjectionPoint=%s", key, ip.toString()));
+        logger.finest(String.format("Found Claim injection with name=%s and for InjectionPoint=%s", key, ip.toString()));
+
         if (annotated.getBaseType() instanceof ParameterizedType) {
             final ParameterizedType paramType = (ParameterizedType) annotated.getBaseType();
             final Type rawType = paramType.getRawType();
@@ -148,6 +156,12 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
                     return (T) getClaimValue(key, clazz);
                 }
 
+                // handle ClaimValue<T>
+                if (rawTypeClass.isAssignableFrom(ClaimValue.class)) {
+                    final Class clazz = (Class) paramType.getActualTypeArguments()[0]; //X TODO check type again, etc
+                    return (T) getClaimValue(key, clazz);
+                }
+
                 // handle Optional<T>
                 if (rawTypeClass.isAssignableFrom(Optional.class)) {
                     final Class clazz = (Class) paramType.getActualTypeArguments()[0]; //X TODO check type again, etc
@@ -180,8 +194,16 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
         return claim.standard() == Claims.UNKNOWN ? claim.value() : claim.standard().name();
     }
 
-    private T getClaimValue(final String key, final Class clazz) {
-        return null; // todo
+    private T getClaimValue(final String name, final Class clazz) {
+        final JsonWebToken jwt = MPJWTProducer.getJWTPrincpal();
+        if (jwt == null) {
+            logger.warning(String.format("Can't retrieve claim %s. No active principal.", name));
+            return null;
+        }
+
+        final Optional<T> claimValue = jwt.claim(name);
+        logger.finest(String.format("Found ClaimValue=%s for name=%s", claimValue, name));
+        return claimValue.orElse(null); // todo more to do?
     }
 
 }

http://git-wip-us.apache.org/repos/asf/tomee/blob/50608069/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 88981d4..9f8e602 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
@@ -65,7 +65,7 @@ public class MPJWTCDIExtension implements Extension {
         }
     }
 
-    public void registerConfigProducer(@Observes final AfterBeanDiscovery abd, final BeanManager bm) {
+    public void registerClaimProducer(@Observes final AfterBeanDiscovery abd, final BeanManager bm) {
         final Set<Type> types = injectionPoints.stream()
                 .filter(NOT_PROVIDERS)
                 .map(ip -> REPLACED_TYPES.getOrDefault(ip.getType(), ip.getType()))