FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

JCL-380: Add issuedAt getter to credentials by acoburn · Pull Request #529 · inrupt/solid-client-java · GitHub

Repository navigation

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .java  (3) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class AccessCredential {
private final URI recipient;
private final URI creator;
private final Instant expiration;
private final Instant issuedAt;
private final Status status;

/**
Expand All @@ -78,6 +79,7 @@ protected AccessCredential(final URI identifier, final String credential,
this.types = metadata.getTypes();
this.status = metadata.getStatus();
this.expiration = metadata.getExpiration();
this.issuedAt = metadata.getIssuedAt();
}

/**
Expand Down Expand Up @@ -116,6 +118,10 @@ public Instant getExpiration() {
return expiration != null ? expiration : Instant.MAX;
}

public Instant getIssuedAt() {
return issuedAt;
}

/**
* Get the issuer of the access credential.
*
Expand Down Expand Up @@ -188,6 +194,7 @@ public static class CredentialMetadata {
private final Set<String> types;
private final Status status;
private final Instant expiration;
private final Instant issuedAt;

/**
* A collection of server-managed credential metadata.
Expand All @@ -197,12 +204,30 @@ public static class CredentialMetadata {
* @param types the credential types
* @param expiration the credential expiration
* @param status the credential status
* @deprecated as of Beta4, please use the 6-parameter constructor
*/
@Deprecated
public CredentialMetadata(final URI issuer, final URI creator, final Set<String> types,
final Instant expiration, final Status status) {
this(issuer, creator, types, Instant.now(), expiration, status);
}

/**
* A collection of server-managed credential metadata.
*
* @param issuer the issuer
* @param creator the agent who created the credential
* @param types the credential types
* @param issuedAt the credential issuance date
* @param expiration the credential expiration date
* @param status the credential status
*/
public CredentialMetadata(final URI issuer, final URI creator, final Set<String> types,
final Instant issuedAt, final Instant expiration, final Status status) {
this.issuer = Objects.requireNonNull(issuer, "issuer may not be null!");
this.creator = Objects.requireNonNull(creator, "creator may not be null!");
this.types = Objects.requireNonNull(types, "types may not be null!");
this.issuedAt = Objects.requireNonNull(issuedAt, "issuedAt may not be null!");
this.expiration = expiration;
this.status = status;
}
Expand Down Expand Up @@ -251,6 +276,15 @@ public Instant getExpiration() {
public Status getStatus() {
return status;
}

/**
* Get the instant when the credential was issued.
*
* @return the time at which the access credentials was issued
*/
public Instant getIssuedAt() {
return issuedAt;
}
}

/** User-managed credential data. */
Expand Down Expand Up @@ -318,6 +352,7 @@ static CredentialMetadata extractMetadata(final Map<String, Object> data) {
new IllegalArgumentException("Missing or invalid issuer field"));
final Set<String> types = asSet(data.get(TYPE)).orElseGet(Collections::emptySet);
final Instant expiration = asInstant(data.get("expirationDate")).orElse(Instant.MAX);
final Instant issuedAt = asInstant(data.get("issuanceDate")).orElse(Instant.EPOCH);
final Status status = asMap(data.get("credentialStatus")).flatMap(credentialStatus ->
asSet(credentialStatus.get(TYPE)).filter(statusTypes ->
statusTypes.contains(REVOCATION_LIST_2020_STATUS)).map(x ->
Expand All @@ -329,7 +364,7 @@ static CredentialMetadata extractMetadata(final Map<String, Object> data) {
final URI creator = asUri(subject.get("id")).orElseThrow(() ->
new IllegalArgumentException("Missing or invalid credentialSubject.id field"));

return new CredentialMetadata(issuer, creator, types, expiration, status);
return new CredentialMetadata(issuer, creator, types, issuedAt, expiration, status);
}

static Map<String, Object> extractConsent(final Map<String, Object> data, final String property) {
Expand Down
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ void testReadAccessGrant() throws IOException {
expectedTypes.add("SolidAccessGrant");
assertEquals(expectedTypes, grant.getTypes());
assertEquals(Instant.parse("2022-08-27T12:00:00Z"), grant.getExpiration());
assertEquals(Instant.parse("2022-08-25T20:34:05.153Z"), grant.getIssuedAt());
assertEquals(URI.create("https://accessgrant.example/credential/5c6060ad-2f16-4bc1-b022-dffb46bff626"),
grant.getIdentifier());
assertEquals(Collections.singleton("https://purpose.example/Purpose1"), grant.getPurpose());
Expand Down Expand Up @@ -88,6 +89,7 @@ void testReadAccessGrantSingletons() throws IOException {
expectedTypes.add("SolidAccessGrant");
assertEquals(expectedTypes, grant.getTypes());
assertEquals(Instant.parse("2022-08-27T12:00:00Z"), grant.getExpiration());
assertEquals(Instant.parse("2022-08-25T20:34:05.153Z"), grant.getIssuedAt());
assertEquals(URI.create("https://accessgrant.example/credential/5c6060ad-2f16-4bc1-b022-dffb46bff626"),
grant.getIdentifier());
assertEquals(Collections.singleton("https://purpose.example/Purpose1"), grant.getPurpose());
Expand Down
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ void testReadAccessRequest() throws IOException {
expectedTypes.add("SolidAccessRequest");
assertEquals(expectedTypes, request.getTypes());
assertEquals(Instant.parse("2022-08-27T12:00:00Z"), request.getExpiration());
assertEquals(Instant.parse("2022-08-25T20:34:05.153Z"), request.getIssuedAt());
assertEquals(URI.create("https://accessgrant.test/credential/d604c858-209a-4bb6-a7f8-2f52c9617cab"),
request.getIdentifier());
assertEquals(Collections.singleton(URI.create("https://purpose.test/Purpose1")), request.getPurposes());
Expand Down Expand Up @@ -83,6 +84,7 @@ void testReadAccessRequestSingletons() throws IOException {
expectedTypes.add("SolidAccessRequest");
assertEquals(expectedTypes, request.getTypes());
assertEquals(Instant.parse("2022-08-27T12:00:00Z"), request.getExpiration());
assertEquals(Instant.parse("2022-08-25T20:34:05.153Z"), request.getIssuedAt());
assertEquals(URI.create("https://accessgrant.test/credential/d604c858-209a-4bb6-a7f8-2f52c9617cab"),
request.getIdentifier());
assertEquals(Collections.singleton(URI.create("https://purpose.test/Purpose1")), request.getPurposes());
Expand Down

Back | FazBrowse Home | New Git URL