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:37 UTC

[33/38] tomee git commit: Incorporate feedback and cleanup

Incorporate feedback and cleanup


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

Branch: refs/heads/master
Commit: 0340cef2d96a83349c2ad44eae86da27ada23746
Parents: 898c821
Author: Jean-Louis Monteiro <je...@gmail.com>
Authored: Wed Mar 7 11:26:30 2018 +0100
Committer: Jean-Louis Monteiro <je...@gmail.com>
Committed: Wed Mar 7 11:26:30 2018 +0100

----------------------------------------------------------------------
 .../tomee/microprofile/jwt/MPJWTFilter.java     | 19 +++----
 .../microprofile/jwt/MPJWTInitializer.java      |  5 +-
 .../tomee/microprofile/jwt/cdi/ClaimBean.java   | 54 ++++++++++----------
 .../jwt/cdi/ClaimInjectionPoint.java            |  5 +-
 .../microprofile/jwt/cdi/ClaimValueWrapper.java |  2 +-
 .../microprofile/jwt/cdi/DefaultLiteral.java    |  2 +-
 .../microprofile/jwt/cdi/JsonbProducer.java     |  2 +-
 .../microprofile/jwt/cdi/MPJWTCDIExtension.java | 16 ++----
 .../microprofile/jwt/cdi/MPJWTProducer.java     |  4 +-
 .../jwt/config/JWTAuthContextInfo.java          |  8 +--
 .../jwt/jaxrs/MPJWPProviderRegistration.java    |  4 +-
 .../MPJWTSecurityAnnotationsInterceptor.java    |  4 +-
 ...TSecurityAnnotationsInterceptorsFeature.java | 12 ++---
 .../principal/DefaultJWTCallerPrincipal.java    |  4 ++
 .../DefaultJWTCallerPrincipalFactory.java       | 18 ++++---
 .../jwt/principal/JWTCallerPrincipal.java       |  4 +-
 .../principal/JWTCallerPrincipalFactory.java    |  8 +--
 17 files changed, 87 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java
index 87ab714..25bf828 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTFilter.java
@@ -54,7 +54,7 @@ public class MPJWTFilter implements Filter {
 
     @Override
     public void init(final FilterConfig filterConfig) throws ServletException {
-        // get configuration
+        // nothing so far
 
     }
 
@@ -86,7 +86,7 @@ public class MPJWTFilter implements Filter {
 
     @Override
     public void destroy() {
-
+        // nothing to do
     }
 
     private static Function<HttpServletRequest, JsonWebToken> token(final HttpServletRequest httpServletRequest, final JWTAuthContextInfo authContextInfo) {
@@ -152,15 +152,12 @@ public class MPJWTFilter implements Filter {
 
             // this is so that the MPJWTProducer can find the function and apply it if necessary
             request.setAttribute(JsonWebToken.class.getName(), tokenFunction);
-            request.setAttribute("javax.security.auth.subject.callable", new Callable<Subject>() {
-                @Override
-                public Subject call() throws Exception {
-                    final Set<Principal> principals = new LinkedHashSet<Principal>();
-                    final JsonWebToken namePrincipal = tokenFunction.apply(request);
-                    principals.add(namePrincipal);
-                    principals.addAll(namePrincipal.getGroups().stream().map(role -> (Principal) () -> role).collect(Collectors.toList()));
-                    return new Subject(true, principals, Collections.emptySet(), Collections.emptySet());
-                }
+            request.setAttribute("javax.security.auth.subject.callable", (Callable<Subject>) () -> {
+                final Set<Principal> principals = new LinkedHashSet<>();
+                final JsonWebToken namePrincipal = tokenFunction.apply(request);
+                principals.add(namePrincipal);
+                principals.addAll(namePrincipal.getGroups().stream().map(role -> (Principal) () -> role).collect(Collectors.toList()));
+                return new Subject(true, principals, Collections.emptySet(), Collections.emptySet());
             });
         }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTInitializer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTInitializer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTInitializer.java
index fb954a5..cede7dc 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTInitializer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/MPJWTInitializer.java
@@ -36,7 +36,7 @@ public class MPJWTInitializer implements ServletContainerInitializer {
     public void onStartup(final Set<Class<?>> classes, final ServletContext ctx) throws ServletException {
 
         if (classes == null || classes.isEmpty()) {
-            return; // to classes having @LoginConfig on it
+            return; // no classe having @LoginConfig on it
         }
 
         for (Class<?> clazz : classes) {
@@ -47,7 +47,8 @@ public class MPJWTInitializer implements ServletContainerInitializer {
             }
 
             if (!Application.class.isAssignableFrom(clazz)) {
-                continue; // do we really want Application?
+                continue;
+                // do we really want Application?
                 // See https://github.com/eclipse/microprofile-jwt-auth/issues/70 to clarify this point
             }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/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 5f7852f..6c7a00d 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
@@ -81,12 +81,12 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
     }
 
     private Class getRawType(final Type type) {
-        if (type instanceof Class) {
-            return (Class) type;
+        if (Class.class.isInstance(type)) {
+            return Class.class.cast(type);
 
-        } else if (type instanceof ParameterizedType) {
-            final ParameterizedType paramType = (ParameterizedType) type;
-            return (Class) paramType.getRawType();
+        } else if (ParameterizedType.class.isInstance(type)) {
+            final ParameterizedType paramType = ParameterizedType.class.cast(type);
+            return Class.class.cast(paramType.getRawType());
         }
 
         throw new UnsupportedOperationException("Unsupported type " + type);
@@ -162,17 +162,17 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
 
         logger.finest(String.format("Found Claim injection with name=%s and for %s", key, ip.toString()));
 
-        if (annotated.getBaseType() instanceof ParameterizedType) {
-            final ParameterizedType paramType = (ParameterizedType) annotated.getBaseType();
+        if (ParameterizedType.class.isInstance(annotated.getBaseType())) {
+            final ParameterizedType paramType = ParameterizedType.class.cast(annotated.getBaseType());
             final Type rawType = paramType.getRawType();
-            if (rawType instanceof Class && paramType.getActualTypeArguments().length == 1) {
+            if (Class.class.isInstance(rawType) && paramType.getActualTypeArguments().length == 1) {
 
                 final Class<?> rawTypeClass = ((Class<?>) rawType);
 
                 // handle Provider<T>
                 if (rawTypeClass.isAssignableFrom(Provider.class)) {
                     final Type providerType = paramType.getActualTypeArguments()[0];
-                    if (providerType instanceof ParameterizedType && isOptional((ParameterizedType) providerType)) {
+                    if (ParameterizedType.class.isInstance(providerType) && isOptional(ParameterizedType.class.cast(providerType))) {
                         return (T) Optional.ofNullable(getClaimValue(key));
                     }
                     return getClaimValue(key);
@@ -181,7 +181,7 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
                 // handle Instance<T>
                 if (rawTypeClass.isAssignableFrom(Instance.class)) {
                     final Type instanceType = paramType.getActualTypeArguments()[0];
-                    if (instanceType instanceof ParameterizedType && isOptional((ParameterizedType) instanceType)) {
+                    if (ParameterizedType.class.isInstance(instanceType) && isOptional(ParameterizedType.class.cast(instanceType))) {
                         return (T) Optional.ofNullable(getClaimValue(key));
                     }
                     return getClaimValue(key);
@@ -192,25 +192,25 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
                     final Type claimValueType = paramType.getActualTypeArguments()[0];
 
                     final ClaimValueWrapper claimValueWrapper = new ClaimValueWrapper(key);
-                    if (claimValueType instanceof ParameterizedType && isOptional((ParameterizedType) claimValueType)) {
+                    if (ParameterizedType.class.isInstance(claimValueType) && isOptional(ParameterizedType.class.cast(claimValueType))) {
                         claimValueWrapper.setValue(() -> {
                             final T claimValue = getClaimValue(key);
                             return Optional.ofNullable(claimValue);
                         });
 
-                    } else if (claimValueType instanceof ParameterizedType && isSet((ParameterizedType) claimValueType)) {
+                    } else if (ParameterizedType.class.isInstance(claimValueType) && isSet(ParameterizedType.class.cast(claimValueType))) {
                         claimValueWrapper.setValue(() -> {
                             final T claimValue = getClaimValue(key);
                             return claimValue;
                         });
 
-                    } else if (claimValueType instanceof ParameterizedType && isList((ParameterizedType) claimValueType)) {
+                    } else if (ParameterizedType.class.isInstance(claimValueType) && isList(ParameterizedType.class.cast(claimValueType))) {
                         claimValueWrapper.setValue(() -> {
                             final T claimValue = getClaimValue(key);
                             return claimValue;
                         });
 
-                    } else if (claimValueType instanceof Class) {
+                    } else if (Class.class.isInstance(claimValueType)) {
                         claimValueWrapper.setValue(() -> {
                             final T claimValue = getClaimValue(key);
                             return claimValue;
@@ -278,22 +278,22 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
 
     private static final String TMP = "tmp";
 
-    private JsonValue wrapValue(Object value) {
+    private JsonValue wrapValue(final Object value) {
         JsonValue jsonValue = null;
 
-        if (value instanceof JsonValue) {
+        if (JsonValue.class.isInstance(value)) {
             // This may already be a JsonValue
-            jsonValue = (JsonValue) value;
+            jsonValue = JsonValue.class.cast(value);
 
-        } else if (value instanceof String) {
+        } else if (String.class.isInstance(value)) {
             jsonValue = Json.createObjectBuilder()
                     .add(TMP, value.toString())
                     .build()
                     .getJsonString(TMP);
 
-        } else if (value instanceof Number) {
-            final Number number = (Number) value;
-            if ((number instanceof Long) || (number instanceof Integer)) {
+        } else if (Number.class.isInstance(value)) {
+            final Number number = Number.class.cast(value);
+            if ((Long.class.isInstance(number)) || (Integer.class.isInstance(number))) {
                 jsonValue = Json.createObjectBuilder()
                         .add(TMP, number.longValue())
                         .build()
@@ -306,16 +306,16 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
                         .getJsonNumber(TMP);
             }
 
-        } else if (value instanceof Boolean) {
-            final Boolean flag = (Boolean) value;
+        } else if (Boolean.class.isInstance(value)) {
+            final Boolean flag = Boolean.class.cast(value);
             jsonValue = flag ? JsonValue.TRUE : JsonValue.FALSE;
 
-        } else if (value instanceof Collection) {
+        } else if (Collection.class.isInstance(value)) {
             final JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();
-            final Collection list = (Collection) value;
+            final Collection list = Collection.class.cast(value);
 
             for (Object element : list) {
-                if (element instanceof String) {
+                if (String.class.isInstance(element)) {
                     arrayBuilder.add(element.toString());
 
                 } else {
@@ -325,7 +325,7 @@ public class ClaimBean<T> implements Bean<T>, PassivationCapable {
             }
             jsonValue = arrayBuilder.build();
 
-        } else if (value instanceof Map) {
+        } else if (Map.class.isInstance(value)) {
             jsonValue = jsonb.fromJson(jsonb.toJson(value), JsonObject.class);
 
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimInjectionPoint.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimInjectionPoint.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimInjectionPoint.java
index 949e36c..17be756 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimInjectionPoint.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimInjectionPoint.java
@@ -25,10 +25,11 @@ import java.lang.reflect.Type;
 import java.util.Collections;
 import java.util.Set;
 
-class ClaimInjectionPoint implements InjectionPoint {
+public class ClaimInjectionPoint implements InjectionPoint {
+
     private final Bean bean;
 
-    ClaimInjectionPoint(Bean bean) {
+    public ClaimInjectionPoint(final Bean bean) {
         this.bean = bean;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueWrapper.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueWrapper.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueWrapper.java
index a5a4bb5..2836abd 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueWrapper.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueWrapper.java
@@ -47,7 +47,7 @@ public class ClaimValueWrapper<T> implements ClaimValue<T> {
     public String toString() {
         return "ClaimValueWrapper{" +
                 "name='" + name + '\'' +
-                ", value=" + value +
+                ", value=" + value.get() +
                 '}';
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/DefaultLiteral.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/DefaultLiteral.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/DefaultLiteral.java
index a084ea3..273ff96 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/DefaultLiteral.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/DefaultLiteral.java
@@ -19,6 +19,6 @@ package org.apache.tomee.microprofile.jwt.cdi;
 import javax.enterprise.inject.Default;
 import javax.enterprise.util.AnnotationLiteral;
 
-class DefaultLiteral extends AnnotationLiteral<Default> implements Default {
+public class DefaultLiteral extends AnnotationLiteral<Default> implements Default {
     public static final Default INSTANCE = new DefaultLiteral();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonbProducer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonbProducer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonbProducer.java
index a0434ef..59f42c5 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonbProducer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonbProducer.java
@@ -28,7 +28,7 @@ import java.util.logging.Logger;
 // todo add a qualifier here so we isolate our instance from what applications would do
 public class JsonbProducer {
 
-    private static Logger log = Logger.getLogger(MPJWTCDIExtension.class.getName());
+    private static final Logger log = Logger.getLogger(MPJWTCDIExtension.class.getName());
 
     @Produces
     public Jsonb create() {

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/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 05b08de..d1019ee 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
@@ -25,7 +25,6 @@ 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;
 import javax.enterprise.inject.spi.BeforeBeanDiscovery;
 import javax.enterprise.inject.spi.Extension;
@@ -39,15 +38,12 @@ import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
-import java.util.logging.Logger;
 import java.util.stream.Collectors;
 
 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 Predicate<InjectionPoint> NOT_PROVIDERS = ip -> (Class.class.isInstance(ip.getType())) || (ParameterizedType.class.isInstance(ip.getType()) && ((ParameterizedType) ip.getType()).getRawType() != Provider.class);
+    private static final Predicate<InjectionPoint> NOT_INSTANCES = ip -> (Class.class.isInstance(ip.getType())) || (ParameterizedType.class.isInstance(ip.getType()) && ((ParameterizedType) ip.getType()).getRawType() != Instance.class);
     private static final Map<Type, Type> REPLACED_TYPES = new HashMap<>();
 
     static {
@@ -76,12 +72,12 @@ public class MPJWTCDIExtension implements Extension {
 
         final Set<Type> providerTypes = injectionPoints.stream()
                 .filter(NOT_PROVIDERS.negate())
-                .map(ip -> ((ParameterizedType)ip.getType()).getActualTypeArguments()[0])
+                .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])
+                .map(ip -> ((ParameterizedType) ip.getType()).getActualTypeArguments()[0])
                 .collect(Collectors.toSet());
 
         types.addAll(providerTypes);
@@ -92,10 +88,6 @@ public class MPJWTCDIExtension implements Extension {
                 .forEach(abd::addBean);
     }
 
-    public void validate(@Observes final AfterDeploymentValidation add) {
-        // not sure yet if we can eagerly check
-    }
-
     public void observeBeforeBeanDiscovery(@Observes final BeforeBeanDiscovery bbd, final BeanManager beanManager) {
         bbd.addAnnotatedType(beanManager.createAnnotatedType(TCKTokenParser.class));
         bbd.addAnnotatedType(beanManager.createAnnotatedType(JsonbProducer.class));

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTProducer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTProducer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTProducer.java
index 453dcff..42034b9 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTProducer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/MPJWTProducer.java
@@ -37,10 +37,10 @@ public class MPJWTProducer {
     public JsonWebToken currentPrincipal() {
         Objects.requireNonNull(httpServletRequest, "HTTP Servlet Request is required to produce a JSonWebToken principal.");
 
-        // not very beatiful, but avoids having the MPJWTFilter setting the request or the principal in a thread local
+        // not very beautiful, but avoids having the MPJWTFilter setting the request or the principal in a thread local
         // CDI integration already has one - dunno which approach is the best for now
         final Object tokenAttribute = httpServletRequest.getAttribute(JsonWebToken.class.getName());
-        if (tokenAttribute != null && Function.class.isInstance(tokenAttribute)) {
+        if (Function.class.isInstance(tokenAttribute)) {
             return (JsonWebToken) Function.class.cast(tokenAttribute).apply(httpServletRequest);
         }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/config/JWTAuthContextInfo.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/config/JWTAuthContextInfo.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/config/JWTAuthContextInfo.java
index dad5f4d..a969515 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/config/JWTAuthContextInfo.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/config/JWTAuthContextInfo.java
@@ -35,7 +35,7 @@ public class JWTAuthContextInfo {
         this.issuedBy = issuedBy;
     }
 
-    public JWTAuthContextInfo(JWTAuthContextInfo orig) {
+    public JWTAuthContextInfo(final JWTAuthContextInfo orig) {
         this.signerKey = orig.signerKey;
         this.issuedBy = orig.issuedBy;
         this.expGracePeriodSecs = orig.expGracePeriodSecs;
@@ -45,7 +45,7 @@ public class JWTAuthContextInfo {
         return signerKey;
     }
 
-    public void setSignerKey(RSAPublicKey signerKey) {
+    public void setSignerKey(final RSAPublicKey signerKey) {
         this.signerKey = signerKey;
     }
 
@@ -53,7 +53,7 @@ public class JWTAuthContextInfo {
         return issuedBy;
     }
 
-    public void setIssuedBy(String issuedBy) {
+    public void setIssuedBy(final String issuedBy) {
         this.issuedBy = issuedBy;
     }
 
@@ -61,7 +61,7 @@ public class JWTAuthContextInfo {
         return expGracePeriodSecs;
     }
 
-    public void setExpGracePeriodSecs(int expGracePeriodSecs) {
+    public void setExpGracePeriodSecs(final int expGracePeriodSecs) {
         this.expGracePeriodSecs = expGracePeriodSecs;
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java
index 2102c89..34f152f 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWPProviderRegistration.java
@@ -24,11 +24,11 @@ import org.apache.tomee.microprofile.jwt.MPJWTFilter;
  * OpenEJB/TomEE hack to register a new provider on the fly
  * Could be package in tomee only or done in another way
  *
- * As soon as Roberto is done with the packaging, we can remove all this
+ * As soon as Roberto is done with the packaging, we can remove all this and providers are going to be scanned automatically
  */
 public class MPJWPProviderRegistration {
 
-    public void registerProvider(@Observes final ExtensionProviderRegistration event) { // openejb hack to register the provider
+    public void registerProvider(@Observes final ExtensionProviderRegistration event) {
         event.getProviders().add(new MPJWTFilter.MPJWTExceptionMapper());
         event.getProviders().add(new MPJWTSecurityAnnotationsInterceptorsFeature());
     }

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptor.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptor.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptor.java
index e6ccd5a..f604e6b 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptor.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptor.java
@@ -18,7 +18,9 @@ public class MPJWTSecurityAnnotationsInterceptor implements ContainerRequestFilt
     private final Set<Method> permitAll;
 
     public MPJWTSecurityAnnotationsInterceptor(final javax.ws.rs.container.ResourceInfo resourceInfo,
-                                               final ConcurrentMap<Method, Set<String>> rolesAllowed, final Set<Method> denyAll, final Set<Method> permitAll) {
+                                               final ConcurrentMap<Method, Set<String>> rolesAllowed,
+                                               final Set<Method> denyAll,
+                                               final Set<Method> permitAll) {
         this.resourceInfo = resourceInfo;
         this.rolesAllowed = rolesAllowed;
         this.denyAll = denyAll;

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptorsFeature.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptorsFeature.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptorsFeature.java
index 5a0a00a..58b3203 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptorsFeature.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/jaxrs/MPJWTSecurityAnnotationsInterceptorsFeature.java
@@ -45,7 +45,7 @@ public class MPJWTSecurityAnnotationsInterceptorsFeature implements DynamicFeatu
 
         final boolean hasSecurity = processSecurityAnnotations(resourceInfo.getResourceClass(), resourceInfo.getResourceMethod());
 
-        if (hasSecurity) {
+        if (hasSecurity) { // no need to add interceptor on the resources that don(t have any security requirements to enforce
             context.register(new MPJWTSecurityAnnotationsInterceptor(resourceInfo, rolesAllowed, denyAll, permitAll));
         }
 
@@ -67,11 +67,11 @@ public class MPJWTSecurityAnnotationsInterceptorsFeature implements DynamicFeatu
          * Process annotations at the class level
          */
         if (classSecurityAnnotations.size() > 1) {
-            // todo error to properly handle
+            throw new IllegalStateException(clazz.getName() + " has more than one security annotation (RolesAllowed, PermitAll, DenyAll).");
         }
 
         if (methodSecurityAnnotations.size() > 1) {
-            // todo proper error handling
+            throw new IllegalStateException(method.toString() + " has more than one security annotation (RolesAllowed, PermitAll, DenyAll).");
         }
 
         if (methodSecurityAnnotations.size() == 0) { // no need to deal with class level annotations if the method has some
@@ -97,9 +97,9 @@ public class MPJWTSecurityAnnotationsInterceptorsFeature implements DynamicFeatu
             }
         }
 
-        final RolesAllowed mthdRolesAllowed = (RolesAllowed) method.getAnnotation(RolesAllowed.class);
-        final PermitAll mthdPermitAll = (PermitAll) method.getAnnotation(PermitAll.class);
-        final DenyAll mthdDenyAll = (DenyAll) method.getAnnotation(DenyAll.class);
+        final RolesAllowed mthdRolesAllowed = method.getAnnotation(RolesAllowed.class);
+        final PermitAll mthdPermitAll = method.getAnnotation(PermitAll.class);
+        final DenyAll mthdDenyAll = method.getAnnotation(DenyAll.class);
 
         if (mthdRolesAllowed != null) {
             Set<String> roles = new HashSet<String>();

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipal.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipal.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipal.java
index b0d6a42..661fbde 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipal.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipal.java
@@ -102,6 +102,10 @@ public class DefaultJWTCallerPrincipal extends JWTCallerPrincipal {
         return new HashSet<>(claimsSet.getClaimNames());
     }
 
+    public String getRawToken() {
+        return jwt;
+    }
+
     @Override
     public Object getClaim(final String claimName) {
         Claims claimType = Claims.UNKNOWN;

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipalFactory.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipalFactory.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipalFactory.java
index 5bcaeed..feb2008 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipalFactory.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/DefaultJWTCallerPrincipalFactory.java
@@ -42,10 +42,10 @@ public class DefaultJWTCallerPrincipalFactory extends JWTCallerPrincipalFactory
 
     @Override
     public JWTCallerPrincipal parse(final String token, final JWTAuthContextInfo authContextInfo) throws ParseException {
-        JWTCallerPrincipal principal = null;
+        JWTCallerPrincipal principal;
 
         try {
-            JwtConsumerBuilder builder = new JwtConsumerBuilder()
+            final JwtConsumerBuilder builder = new JwtConsumerBuilder()
                     .setRequireExpirationTime()
                     .setRequireSubject()
                     .setSkipDefaultAudienceValidation()
@@ -54,15 +54,17 @@ public class DefaultJWTCallerPrincipalFactory extends JWTCallerPrincipalFactory
                     .setJwsAlgorithmConstraints(
                             new AlgorithmConstraints(AlgorithmConstraints.ConstraintType.WHITELIST,
                                     AlgorithmIdentifiers.RSA_USING_SHA256));
+
             if (authContextInfo.getExpGracePeriodSecs() > 0) {
                 builder.setAllowedClockSkewInSeconds(authContextInfo.getExpGracePeriodSecs());
+
             } else {
                 builder.setEvaluationTime(NumericDate.fromSeconds(0));
             }
 
-            JwtConsumer jwtConsumer = builder.build();
-            JwtContext jwtContext = jwtConsumer.process(token);
-            String type = jwtContext.getJoseObjects().get(0).getHeader("typ");
+            final JwtConsumer jwtConsumer = builder.build();
+            final JwtContext jwtContext = jwtConsumer.process(token);
+            final String type = jwtContext.getJoseObjects().get(0).getHeader("typ");
             //  Validate the JWT and process it to the Claims
             jwtConsumer.processContext(jwtContext);
             JwtClaims claimsSet = jwtContext.getJwtClaims();
@@ -77,9 +79,11 @@ public class DefaultJWTCallerPrincipalFactory extends JWTCallerPrincipalFactory
             }
             claimsSet.setClaim(Claims.raw_token.name(), token);
             principal = new DefaultJWTCallerPrincipal(token, type, claimsSet, principalName);
-        } catch (InvalidJwtException e) {
+
+        } catch (final InvalidJwtException e) {
             throw new ParseException("Failed to verify token", e);
-        } catch (MalformedClaimException e) {
+
+        } catch (final MalformedClaimException e) {
             throw new ParseException("Failed to verify token claims", e);
         }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipal.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipal.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipal.java
index 26d9406..d8e3c4c 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipal.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipal.java
@@ -34,7 +34,7 @@ public abstract class JWTCallerPrincipal implements JsonWebToken {
      *
      * @param name - caller's name
      */
-    public JWTCallerPrincipal(String name) {
+    public JWTCallerPrincipal(final String name) {
         this.name = name;
     }
 
@@ -50,7 +50,7 @@ public abstract class JWTCallerPrincipal implements JsonWebToken {
      *                JsonWebToken interface be displayed.
      * @return human readable presentation of the caller principal and associated JWT.
      */
-    public abstract String toString(boolean showAll);
+    public abstract String toString(final boolean showAll);
 
     public <T> Optional<T> claim(final String claimName) {
         final T claim = (T) getClaim(claimName);

http://git-wip-us.apache.org/repos/asf/tomee/blob/0340cef2/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipalFactory.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipalFactory.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipalFactory.java
index 51ca256..e7ebcd6 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipalFactory.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/principal/JWTCallerPrincipalFactory.java
@@ -28,6 +28,7 @@ import java.util.ServiceLoader;
  * The factory class that provides the token string to JWTCallerPrincipal parsing for a given implementation.
  */
 public abstract class JWTCallerPrincipalFactory {
+
     private static JWTCallerPrincipalFactory instance;
 
     /**
@@ -100,7 +101,8 @@ public abstract class JWTCallerPrincipalFactory {
                         instance = spi;
                     }
                 }
-            } catch (Throwable e) {
+
+            } catch (final Throwable e) {
                 System.err.printf("Warning: %s\n", e.getMessage());
             }
         }
@@ -112,7 +114,7 @@ public abstract class JWTCallerPrincipalFactory {
      *
      * @param resolver the instance to use.
      */
-    public static void setInstance(JWTCallerPrincipalFactory resolver) {
+    public static void setInstance(final JWTCallerPrincipalFactory resolver) {
         instance = resolver;
     }
 
@@ -123,5 +125,5 @@ public abstract class JWTCallerPrincipalFactory {
      * @return A JWTCallerPrincipal representation for the token.
      * @throws ParseException on parse or verification failure.
      */
-    public abstract JWTCallerPrincipal parse(String token, JWTAuthContextInfo authContextInfo) throws ParseException;
+    public abstract JWTCallerPrincipal parse(final String token, final JWTAuthContextInfo authContextInfo) throws ParseException;
 }
\ No newline at end of file