Skip to content

Commit 14905fa

Browse files
committed
Simplified type checking.
1 parent 29a33c3 commit 14905fa

1 file changed

Lines changed: 14 additions & 19 deletions

File tree

jjwt/src/main/java/io/jsonwebtoken/jjwtfun/controller/DynamicJWTController.java

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -41,31 +41,31 @@ public JwtResponse dynamicBuilderSpecific(@RequestBody Map<String, Object> claim
4141
claims.forEach((key, value) -> {
4242
switch (key) {
4343
case "iss":
44-
ensureType(key, value, String.class);
44+
ensureType(key, value, String.class);
4545
builder.setIssuer((String) value);
4646
break;
4747
case "sub":
48-
ensureType(key, value, String.class);
48+
ensureType(key, value, String.class);
4949
builder.setSubject((String) value);
5050
break;
5151
case "aud":
52-
ensureType(key, value, String.class);
52+
ensureType(key, value, String.class);
5353
builder.setAudience((String) value);
5454
break;
5555
case "exp":
56-
value = ensureType(key, value, Long.class);
57-
builder.setExpiration(Date.from(Instant.ofEpochSecond((Long) value)));
56+
ensureType(key, value, Long.class);
57+
builder.setExpiration(Date.from(Instant.ofEpochSecond(Long.parseLong(value.toString()))));
5858
break;
5959
case "nbf":
60-
value = ensureType(key, value, Long.class);
61-
builder.setNotBefore(Date.from(Instant.ofEpochSecond((Long) value)));
60+
ensureType(key, value, Long.class);
61+
builder.setNotBefore(Date.from(Instant.ofEpochSecond(Long.parseLong(value.toString()))));
6262
break;
6363
case "iat":
64-
value = ensureType(key, value, Long.class);
65-
builder.setIssuedAt(Date.from(Instant.ofEpochSecond((Long) value)));
64+
ensureType(key, value, Long.class);
65+
builder.setIssuedAt(Date.from(Instant.ofEpochSecond(Long.parseLong(value.toString()))));
6666
break;
6767
case "jti":
68-
ensureType(key, value, String.class);
68+
ensureType(key, value, String.class);
6969
builder.setId((String) value);
7070
break;
7171
default:
@@ -78,20 +78,15 @@ public JwtResponse dynamicBuilderSpecific(@RequestBody Map<String, Object> claim
7878
return new JwtResponse(builder.compact());
7979
}
8080

81-
private Object ensureType(String registeredClaim, Object value, Class expectedType) {
82-
// we want to promote Integers to Longs in this case
83-
if (expectedType == Long.class && value instanceof Integer) {
84-
value = ((Integer) value).longValue();
85-
}
86-
87-
boolean isCorrectType = expectedType.isInstance(value);
81+
private void ensureType(String registeredClaim, Object value, Class expectedType) {
82+
boolean isCorrectType =
83+
expectedType.isInstance(value) ||
84+
expectedType == Long.class && value instanceof Integer;
8885

8986
if (!isCorrectType) {
9087
String msg = "Expected type: " + expectedType.getCanonicalName() + " for registered claim: '" +
9188
registeredClaim + "', but got value: " + value + " of type: " + value.getClass().getCanonicalName();
9289
throw new JwtException(msg);
9390
}
94-
95-
return value;
9691
}
9792
}

0 commit comments

Comments
 (0)