Skip to content

Commit 4e27901

Browse files
committed
feat: Support for credentialStatus.
Signed-off-by: Markus Sabadello <[email protected]>
1 parent 5d1f439 commit 4e27901

File tree

7 files changed

+399
-2
lines changed

7 files changed

+399
-2
lines changed

src/main/java/com/danubetech/verifiablecredentials/VerifiableCredential.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.danubetech.verifiablecredentials;
22

33
import com.apicatalog.jsonld.loader.DocumentLoader;
4+
import com.danubetech.verifiablecredentials.credentialstatus.CredentialStatus;
45
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
56
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
67
import com.fasterxml.jackson.annotation.JsonCreator;
@@ -39,6 +40,7 @@ public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B
3940
private Date issuanceDate;
4041
private Date expirationDate;
4142
private CredentialSubject credentialSubject;
43+
private CredentialStatus credentialStatus;
4244
private LdProof ldProof;
4345

4446
public Builder(VerifiableCredential jsonLDObject) {
@@ -57,6 +59,7 @@ public VerifiableCredential build() {
5759
if (this.issuanceDate != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_ISSUANCEDATE, JsonLDUtils.dateToString(this.issuanceDate));
5860
if (this.expirationDate != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_EXPIRATIONDATE, JsonLDUtils.dateToString(this.expirationDate));
5961
if (this.credentialSubject != null) this.credentialSubject.addToJsonLDObject(this.jsonLDObject);
62+
if (this.credentialStatus != null) this.credentialStatus.addToJsonLDObject(this.jsonLDObject);
6063
if (this.ldProof != null) this.ldProof.addToJsonLDObject(this.jsonLDObject);
6164

6265
return (VerifiableCredential) this.jsonLDObject;
@@ -82,6 +85,11 @@ public B credentialSubject(CredentialSubject credentialSubject) {
8285
return (B) this;
8386
}
8487

88+
public B credentialStatus(CredentialStatus credentialStatus) {
89+
this.credentialStatus = credentialStatus;
90+
return (B) this;
91+
}
92+
8593
public B ldProof(LdProof ldProof) {
8694
this.ldProof = ldProof;
8795
return (B) this;
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.danubetech.verifiablecredentials.credentialstatus;
2+
3+
import com.apicatalog.jsonld.loader.DocumentLoader;
4+
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
5+
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
6+
import com.fasterxml.jackson.annotation.JsonCreator;
7+
import foundation.identity.jsonld.JsonLDObject;
8+
import foundation.identity.jsonld.JsonLDUtils;
9+
10+
import java.io.Reader;
11+
import java.net.URI;
12+
import java.util.Map;
13+
14+
public class CredentialStatus extends JsonLDObject {
15+
16+
public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
17+
public static final String[] DEFAULT_JSONLD_TYPES = { };
18+
public static final String DEFAULT_JSONLD_PREDICATE = VerifiableCredentialKeywords.JSONLD_TERM_CREDENTIALSTATUS;
19+
public static final DocumentLoader DEFAULT_DOCUMENT_LOADER = VerifiableCredentialContexts.DOCUMENT_LOADER;
20+
21+
@JsonCreator
22+
public CredentialStatus() {
23+
super();
24+
}
25+
26+
protected CredentialStatus(Map<String, Object> jsonObject) {
27+
super(jsonObject);
28+
}
29+
30+
/*
31+
* Factory methods
32+
*/
33+
34+
public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B> {
35+
36+
public Builder(CredentialStatus jsonLDObject) {
37+
super(jsonLDObject);
38+
}
39+
40+
@Override
41+
public CredentialStatus build() {
42+
43+
super.build();
44+
45+
return (CredentialStatus) this.jsonLDObject;
46+
}
47+
}
48+
49+
public static Builder<? extends Builder<?>> builder() {
50+
return new Builder(new CredentialStatus());
51+
}
52+
53+
public static CredentialStatus fromJsonObject(Map<String, Object> jsonObject) {
54+
return new CredentialStatus(jsonObject);
55+
}
56+
57+
public static CredentialStatus fromJson(Reader reader) {
58+
return new CredentialStatus(readJson(reader));
59+
}
60+
61+
public static CredentialStatus fromJson(String json) {
62+
return new CredentialStatus(readJson(json));
63+
}
64+
65+
/*
66+
* Adding, getting, and removing the JSON-LD object
67+
*/
68+
69+
public static CredentialStatus getFromJsonLDObject(JsonLDObject jsonLdObject) {
70+
return JsonLDObject.getFromJsonLDObject(CredentialStatus.class, jsonLdObject);
71+
}
72+
73+
public static void removeFromJsonLdObject(JsonLDObject jsonLdObject) {
74+
JsonLDObject.removeFromJsonLdObject(CredentialStatus.class, jsonLdObject);
75+
}
76+
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.danubetech.verifiablecredentials.credentialstatus;
2+
3+
import com.apicatalog.jsonld.loader.DocumentLoader;
4+
import com.danubetech.verifiablecredentials.CredentialSubject;
5+
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
6+
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
7+
import com.fasterxml.jackson.annotation.JsonCreator;
8+
import foundation.identity.jsonld.JsonLDObject;
9+
import foundation.identity.jsonld.JsonLDUtils;
10+
11+
import java.io.Reader;
12+
import java.net.URI;
13+
import java.util.Map;
14+
15+
public class RevocationList2020Status extends CredentialStatus {
16+
17+
public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
18+
public static final String[] DEFAULT_JSONLD_TYPES = { VerifiableCredentialKeywords.JSONLD_TERM_REVOCATION_LIST_2020_STATUS };
19+
public static final String DEFAULT_JSONLD_PREDICATE = VerifiableCredentialKeywords.JSONLD_TERM_CREDENTIALSTATUS;
20+
public static final DocumentLoader DEFAULT_DOCUMENT_LOADER = VerifiableCredentialContexts.DOCUMENT_LOADER;
21+
22+
@JsonCreator
23+
public RevocationList2020Status() {
24+
super();
25+
}
26+
27+
protected RevocationList2020Status(Map<String, Object> jsonObject) {
28+
super(jsonObject);
29+
}
30+
31+
/*
32+
* Factory methods
33+
*/
34+
35+
public static class Builder<B extends Builder<B>> extends CredentialStatus.Builder<B> {
36+
37+
private String revocationListIndex;
38+
private URI revocationListCredential;
39+
40+
public Builder(RevocationList2020Status jsonLDObject) {
41+
super(jsonLDObject);
42+
}
43+
44+
@Override
45+
public RevocationList2020Status build() {
46+
47+
super.build();
48+
49+
// add JSON-LD properties
50+
if (this.revocationListIndex != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTINDEX, this.revocationListIndex);
51+
if (this.revocationListCredential != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTCREDENTIAL, JsonLDUtils.uriToString(this.revocationListCredential));
52+
53+
return (RevocationList2020Status) this.jsonLDObject;
54+
}
55+
56+
public B revocationListIndex(String revocationListIndex) {
57+
this.revocationListIndex = revocationListIndex;
58+
return (B) this;
59+
}
60+
61+
public B revocationListCredential(URI revocationListCredential) {
62+
this.revocationListCredential = revocationListCredential;
63+
return (B) this;
64+
}
65+
}
66+
67+
public static Builder<? extends Builder<?>> builder() {
68+
return new Builder(new RevocationList2020Status());
69+
}
70+
71+
public static RevocationList2020Status fromJsonObject(Map<String, Object> jsonObject) {
72+
return new RevocationList2020Status(jsonObject);
73+
}
74+
75+
public static RevocationList2020Status fromJson(Reader reader) {
76+
return new RevocationList2020Status(readJson(reader));
77+
}
78+
79+
public static RevocationList2020Status fromJson(String json) {
80+
return new RevocationList2020Status(readJson(json));
81+
}
82+
83+
/*
84+
* Adding, getting, and removing the JSON-LD object
85+
*/
86+
87+
public static RevocationList2020Status getFromJsonLDObject(JsonLDObject jsonLdObject) {
88+
return JsonLDObject.getFromJsonLDObject(RevocationList2020Status.class, jsonLdObject);
89+
}
90+
91+
public static void removeFromJsonLdObject(JsonLDObject jsonLdObject) {
92+
JsonLDObject.removeFromJsonLdObject(RevocationList2020Status.class, jsonLdObject);
93+
}
94+
95+
/*
96+
* Getters
97+
*/
98+
99+
public String getRevocationListIndex() {
100+
return JsonLDUtils.jsonLdGetString(this.getJsonObject(), VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTINDEX);
101+
}
102+
103+
public URI getRevocationListCredential() {
104+
return JsonLDUtils.stringToUri(JsonLDUtils.jsonLdGetString(this.getJsonObject(), VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTCREDENTIAL));
105+
}
106+
}

src/main/java/com/danubetech/verifiablecredentials/credentialstatus/RevocationQuery2020Status.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.net.URI;
1414
import java.util.Map;
1515

16-
public class RevocationQuery2020Status extends JsonLDObject {
16+
public class RevocationQuery2020Status extends CredentialStatus {
1717

1818
public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
1919
public static final String[] DEFAULT_JSONLD_TYPES = { VerifiableCredentialKeywords.JSONLD_TERM_REVOCATION_QUERY_2020_STATUS };
@@ -33,7 +33,7 @@ protected RevocationQuery2020Status(Map<String, Object> jsonObject) {
3333
* Factory methods
3434
*/
3535

36-
public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B> {
36+
public static class Builder<B extends Builder<B>> extends CredentialStatus.Builder<B> {
3737

3838
private String credentialReference;
3939
private String revocationService;

src/main/java/com/danubetech/verifiablecredentials/jsonld/VerifiableCredentialContexts.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class VerifiableCredentialContexts {
1515

1616
public static final URI JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 = URI.create("https://www.w3.org/2018/credentials/v1");
1717
public static final URI JSONLD_CONTEXT_W3C_2018_CREDENTIALS_EXAMPLES_V1 = URI.create("https://www.w3.org/2018/credentials/examples/v1");
18+
public static final URI JSONLD_CONTEXT_W3C_NS_ODRL = URI.create("https://www.w3.org/ns/odrl.jsonld");
1819
public static final URI JSONLD_CONTEXT_DANUBETECH_2020_CREDENTIALS_V1 = URI.create("https://danubetech.com/2020/credentials/v1");
1920

2021
public static final Map<URI, JsonDocument> CONTEXTS;
@@ -32,6 +33,8 @@ public class VerifiableCredentialContexts {
3233
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("credentials-v1.jsonld")));
3334
CONTEXTS.put(JSONLD_CONTEXT_W3C_2018_CREDENTIALS_EXAMPLES_V1,
3435
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("credentials-examples-v1.jsonld")));
36+
CONTEXTS.put(JSONLD_CONTEXT_W3C_NS_ODRL,
37+
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("odrl.jsonld")));
3538
CONTEXTS.put(JSONLD_CONTEXT_DANUBETECH_2020_CREDENTIALS_V1,
3639
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("danubetech-v1.jsonld")));
3740

src/main/java/com/danubetech/verifiablecredentials/jsonld/VerifiableCredentialKeywords.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,9 @@ public class VerifiableCredentialKeywords {
2828
public static final String JSONLD_TERM_CREDENTIALREFERENCE = "credentialReference";
2929
public static final String JSONLD_TERM_REVOCATIONSERVICE = "revocationService";
3030

31+
public static final String JSONLD_TERM_REVOCATION_LIST_2020_STATUS = "RevocationList2020Status";
32+
public static final String JSONLD_TERM_REVOCATIONLISTINDEX = "revocationListIndex";
33+
public static final String JSONLD_TERM_REVOCATIONLISTCREDENTIAL = "revocationListCredential";
34+
3135
public static final String JSONLD_TERM_BLOCKCHAIN_HASH_PROOF_2020 = "BlockchainHashProof2020";
3236
}

0 commit comments

Comments
 (0)