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:25 UTC
[21/38] tomee git commit: Better injection support
Better injection support
Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/2b9950f6
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/2b9950f6
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/2b9950f6
Branch: refs/heads/master
Commit: 2b9950f66edc5ffb845b1400155c0aa2be0e858f
Parents: 1ad96bb
Author: Jean-Louis Monteiro <je...@gmail.com>
Authored: Tue Feb 27 14:20:49 2018 +0100
Committer: Jean-Louis Monteiro <je...@gmail.com>
Committed: Tue Feb 27 14:20:49 2018 +0100
----------------------------------------------------------------------
.../tomee/microprofile/jwt/MPJWTFilter.java | 12 ++++++++++
.../jwt/cdi/ClaimValueProducer.java | 11 ++++++---
.../microprofile/jwt/cdi/JsonValueProducer.java | 1 +
.../jwt/cdi/RawClaimTypeProducer.java | 24 ++++++++++++++++----
.../principal/DefaultJWTCallerPrincipal.java | 2 +-
5 files changed, 41 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tomee/blob/2b9950f6/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 752bcda..ebed96d 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
@@ -32,8 +32,10 @@ import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.security.Principal;
+import java.util.Locale;
import java.util.Map;
import java.util.Optional;
@@ -66,6 +68,16 @@ public class MPJWTFilter implements Filter {
// todo not sure what to do with the realm
final String authorizationHeader = ((HttpServletRequest) request).getHeader("Authorization");
+ if (authorizationHeader == null || authorizationHeader.isEmpty()) {
+ HttpServletResponse.class.cast(response).sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ return;
+ }
+
+ if (!authorizationHeader.toLowerCase(Locale.ENGLISH).startsWith("bearer ")) {
+ HttpServletResponse.class.cast(response).sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ return;
+ }
+
final String token = authorizationHeader.substring("bearer ".length());
final JsonWebToken jsonWebToken;
try {
http://git-wip-us.apache.org/repos/asf/tomee/blob/2b9950f6/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueProducer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueProducer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueProducer.java
index aeed7c8..b0e2e7b 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueProducer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/ClaimValueProducer.java
@@ -47,9 +47,14 @@ public class ClaimValueProducer<T> {
boolean isOptional = false;
if (matchType instanceof ParameterizedType) {
actualType = ((ParameterizedType) matchType).getActualTypeArguments()[0];
- isOptional = matchType.getTypeName().equals(Optional.class.getTypeName());
+
+ if (actualType instanceof ParameterizedType) {
+ isOptional = ParameterizedType.class.cast(actualType).getRawType().getTypeName()
+ .startsWith(Optional.class.getTypeName());
+ }
+
if (isOptional) {
- actualType = ((ParameterizedType) matchType).getActualTypeArguments()[0];
+ actualType = ((ParameterizedType) actualType).getActualTypeArguments()[0];
}
}
@@ -62,7 +67,7 @@ public class ClaimValueProducer<T> {
return returnValue;
}
- String getName(final InjectionPoint ip) {
+ private String getName(final InjectionPoint ip) {
String name = null;
for (Annotation ann : ip.getQualifiers()) {
if (ann instanceof Claim) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/2b9950f6/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonValueProducer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonValueProducer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonValueProducer.java
index af15b89..645b41b 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonValueProducer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/JsonValueProducer.java
@@ -29,6 +29,7 @@ import javax.json.JsonString;
import javax.json.JsonValue;
import java.lang.annotation.Annotation;
import java.util.Optional;
+import java.util.Set;
public class JsonValueProducer {
http://git-wip-us.apache.org/repos/asf/tomee/blob/2b9950f6/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/RawClaimTypeProducer.java
----------------------------------------------------------------------
diff --git a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/RawClaimTypeProducer.java b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/RawClaimTypeProducer.java
index 55b6324..fbc037b 100644
--- a/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/RawClaimTypeProducer.java
+++ b/tck/mp-jwt-embedded/src/main/java/org/apache/tomee/microprofile/jwt/cdi/RawClaimTypeProducer.java
@@ -25,7 +25,9 @@ import javax.enterprise.inject.spi.InjectionPoint;
import javax.inject.Inject;
import javax.inject.Named;
import java.lang.annotation.Annotation;
+import java.util.HashSet;
import java.util.Optional;
+import java.util.Set;
public class RawClaimTypeProducer {
@@ -34,13 +36,26 @@ public class RawClaimTypeProducer {
@Produces
@Claim("")
+ public Set<String> getSetOfString(final InjectionPoint ip) {
+ final String name = getName(ip);
+ ClaimValue<Optional<String>> cv = producer.generalClaimValueProducer(name);
+ Optional<String> value = cv.getValue();
+ if (value.isPresent()) {
+ return new HashSet<String>() {{
+ add(value.get());
+ }};
+ }
+ return null;
+ }
+
+ @Produces
+ @Claim("")
@Named("RawClaimTypeProducer#getValue")
public Object getValue(final InjectionPoint ip) {
String name = getName(ip);
ClaimValue<Optional<Object>> cv = producer.generalClaimValueProducer(name);
Optional<Object> value = cv.getValue();
- Object returnValue = value.orElse(null);
- return returnValue;
+ return value.orElse(null);
}
@Produces
@@ -49,11 +64,10 @@ public class RawClaimTypeProducer {
public Optional getOptionalValue(final InjectionPoint ip) {
String name = getName(ip);
ClaimValue<Optional<Object>> cv = producer.generalClaimValueProducer(name);
- Optional<Object> value = cv.getValue();
- return value;
+ return cv.getValue();
}
- String getName(final InjectionPoint ip) {
+ private String getName(final InjectionPoint ip) {
String name = null;
for (Annotation ann : ip.getQualifiers()) {
if (ann instanceof Claim) {
http://git-wip-us.apache.org/repos/asf/tomee/blob/2b9950f6/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 47c6ad3..e077ca4 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
@@ -76,7 +76,7 @@ public class DefaultJWTCallerPrincipal extends JWTCallerPrincipal {
} catch (MalformedClaimException e1) {
}
}
- return audSet;
+ return audSet.isEmpty() ? null : audSet;
}
@Override