Generic ExpirationProbe

This commit is contained in:
Xavi Aracil 2022-12-01 12:34:36 +01:00
parent ce89968837
commit d334c0f143
4 changed files with 16 additions and 8 deletions

View File

@ -26,8 +26,8 @@ public class Assertion extends Credential {
final Assertion.Type assertionType;
protected Assertion(Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName) {
super(resource.getID(), resource, data, jwt, schemas, issuedOnPropertyName);
protected Assertion(Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName, String expiresAtPropertyName) {
super(resource.getID(), resource, data, jwt, schemas, issuedOnPropertyName, expiresAtPropertyName);
JsonNode typeNode = jsonData.get("type");
this.assertionType = Assertion.Type.valueOf(typeNode);
@ -60,7 +60,7 @@ public class Assertion extends Credential {
public Assertion build() {
// transform key of schemas map to string because the type of the key in the base map is generic
// and our specific key is an Enum
return new Assertion(getResource(), getJsonData(), getJwt(), schemas, ISSUED_ON_PROPERTY_NAME);
return new Assertion(getResource(), getJsonData(), getJwt(), schemas, ISSUED_ON_PROPERTY_NAME, EXPIRES_AT_PROPERTY_NAME);
}
}
@ -301,4 +301,5 @@ public class Assertion extends Credential {
public static final String ID = Assertion.class.getCanonicalName();
private static final String ISSUED_ON_PROPERTY_NAME = "issuedOn";
private static final String EXPIRES_AT_PROPERTY_NAME = "expires";
}

View File

@ -30,15 +30,17 @@ public abstract class Credential extends GeneratedObject {
final JsonNode jsonData;
final String jwt;
final String issuedOnPropertyName;
final String expiresAtPropertyName;
final Map<CredentialEnum, SchemaKey> schemas;
protected Credential(String id, Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName) {
protected Credential(String id, Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName, String expiresAtPropertyName) {
super(id, GeneratedObject.Type.INTERNAL);
this.resource = checkNotNull(resource);
this.jsonData = checkNotNull(data);
this.jwt = jwt; //may be null
this.schemas = schemas;
this.issuedOnPropertyName = issuedOnPropertyName;
this.expiresAtPropertyName = expiresAtPropertyName;
checkTrue(RECOGNIZED_PAYLOAD_TYPES.contains(resource.getType()));
}
@ -59,6 +61,10 @@ public abstract class Credential extends GeneratedObject {
return issuedOnPropertyName;
}
public String getExpiresAtPropertyName() {
return expiresAtPropertyName;
}
/**
* Get the canonical schema for this credential if such exists.
*/

View File

@ -28,8 +28,8 @@ import com.google.common.collect.ImmutableMap;
public class VerifiableCredential extends Credential {
final VerifiableCredential.Type credentialType;
protected VerifiableCredential(Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName) {
super(ID, resource, data, jwt, schemas, issuedOnPropertyName);
protected VerifiableCredential(Resource resource, JsonNode data, String jwt, Map<CredentialEnum, SchemaKey> schemas, String issuedOnPropertyName, String expiresAtPropertyName) {
super(ID, resource, data, jwt, schemas, issuedOnPropertyName, expiresAtPropertyName);
JsonNode typeNode = jsonData.get("type");
this.credentialType = VerifiableCredential.Type.valueOf(typeNode);
@ -133,10 +133,11 @@ public class VerifiableCredential extends Credential {
public static class Builder extends Credential.Builder<VerifiableCredential> {
@Override
public VerifiableCredential build() {
return new VerifiableCredential(getResource(), getJsonData(), getJwt(), schemas, ISSUED_ON_PROPERTY_NAME);
return new VerifiableCredential(getResource(), getJsonData(), getJwt(), schemas, ISSUED_ON_PROPERTY_NAME, EXPIRES_AT_PROPERTY_NAME);
}
}
public static final String ID = VerifiableCredential.class.getCanonicalName();
private static final String ISSUED_ON_PROPERTY_NAME = "issuanceDate";
private static final String EXPIRES_AT_PROPERTY_NAME = "expirationDate";
}

View File

@ -25,7 +25,7 @@ public class ExpirationProbe extends Probe<Credential> {
* If the AchievementCredential or EndorsementCredential has an expirationDate property
* and the expiration date is prior to the current date, the credential has expired.
*/
JsonNode node = crd.getJson().get("expirationDate");
JsonNode node = crd.getJson().get(crd.getExpiresAtPropertyName());
if(node != null) {
try {
ZonedDateTime expirationDate = ZonedDateTime.parse(node.textValue());