diff --git a/build.gradle b/build.gradle index b6b9b305..c592523a 100644 --- a/build.gradle +++ b/build.gradle @@ -249,4 +249,96 @@ tasks.register("prepareOpenApiSpec") { tasks.named("openApiGenerate") { dependsOn("prepareOpenApiSpec") + + doLast { + def ops = [ + "Challenge", "Credential", "Delegation", "Delegator", + "Done", "EndRole", "Exchange", "Group", + "LocScheme", "OOBI", "Query", "Registry", + "Submit", "Witness" + ] + def kelOps = ["Done", "Witness", "Submit", "Group", "Delegation"] as Set + def modelDir = file("src/main/java/org/cardanofoundation/signify/generated/keria/model") + def dualExtendsOps = ["Group", "Witness", "Done"] + + ops.each { op -> + // Detect metadata type from the Pending variant + def pendingFile = new File(modelDir, "Pending${op}Operation.java") + if (!pendingFile.exists()) { + logger.warn("Pending${op}Operation.java not found, skipping ${op}") + return + } + def metadataMatcher = (pendingFile.text =~ /private\s+(\w+)\s+metadata;/) + def metadataType = metadataMatcher ? metadataMatcher[0][1] : null + + // Add 'implements XxxOperation' to Pending/Completed/Failed classes + // Also add @JsonDeserialize to break inheritance from Operation's custom deserializer + ["Pending", "Completed", "Failed"].each { state -> + def f = new File(modelDir, "${state}${op}Operation.java") + if (f.exists()) { + def className = "${state}${op}Operation" + f.text = f.text.replace( + "public class ${className} {", + "@com.fasterxml.jackson.databind.annotation.JsonDeserialize\npublic final class ${className} implements ${op}Operation {" + ) + } + } + + // Replace the generated merged oneOf class with a sealed interface + def target = new File(modelDir, "${op}Operation.java") + def metadataMethod = metadataType ? "\n ${metadataType} getMetadata();" : "" + def extendsClause = kelOps.contains(op) + ? (dualExtendsOps.contains(op) ? "extends KelOperation" : "extends KelOperation") + : "extends Operation" + target.text = """ +package org.cardanofoundation.signify.generated.keria.model; + +public sealed interface ${op}Operation ${extendsClause} permits + Pending${op}Operation, + Completed${op}Operation, + Failed${op}Operation { +${metadataMethod} +} +""" + } + + // Generate the general Operation sealed interface (union of all operation types) + def operationFile = new File(modelDir, "Operation.java") + operationFile.text = """ + package org.cardanofoundation.signify.generated.keria.model; + + import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + import org.cardanofoundation.signify.app.coring.OperationDeserializer; + + @JsonDeserialize(using = OperationDeserializer.class) + public sealed interface Operation permits + ChallengeOperation, + CredentialOperation, + DelegatorOperation, + EndRoleOperation, + ExchangeOperation, + KelOperation, + LocSchemeOperation, + OOBIOperation, + QueryOperation, + RegistryOperation { + + String getName(); + } + """ + + // Generate KelOperation — a sealed group interface for all KEL event operation types. + def kelPermits = kelOps.sort().collect { op -> " ${op}Operation" }.join(",\n") + def kelOperationFile = new File(modelDir, "KelOperation.java") + kelOperationFile.text = """\ +package org.cardanofoundation.signify.generated.keria.model; + +/** + * Marker interface for operations that result from appending a KEL event. + */ +public sealed interface KelOperation extends Operation permits +${kelPermits} { +} +""" + } } \ No newline at end of file diff --git a/src/main/java/org/cardanofoundation/signify/app/Contacting.java b/src/main/java/org/cardanofoundation/signify/app/Contacting.java index 6ce678cc..e7548a09 100644 --- a/src/main/java/org/cardanofoundation/signify/app/Contacting.java +++ b/src/main/java/org/cardanofoundation/signify/app/Contacting.java @@ -3,9 +3,9 @@ import com.fasterxml.jackson.core.type.TypeReference; import lombok.Getter; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.cesr.util.Utils; +import org.cardanofoundation.signify.generated.keria.model.ChallengeOperation; import org.cardanofoundation.signify.generated.keria.model.Challenge; import org.cardanofoundation.signify.generated.keria.model.Contact; import org.cardanofoundation.signify.generated.keria.model.Exn; @@ -91,14 +91,14 @@ public Exn respond(String name, String recipient, List words) throws IOE * @return The long-running operation * @throws Exception if the fetch operation fails */ - public Operation verify(String source, List words) throws LibsodiumException, IOException, InterruptedException { + public ChallengeOperation verify(String source, List words) throws LibsodiumException, IOException, InterruptedException { String path = "/challenges_verify/" + source; String method = "POST"; Map data = new LinkedHashMap<>(); data.put("words", words); HttpResponse response = this.client.fetch(path, method, data); - return Utils.fromJson(response.body(), new TypeReference>() {}); + return Utils.fromJson(response.body(), ChallengeOperation.class); } /** diff --git a/src/main/java/org/cardanofoundation/signify/app/Delegating.java b/src/main/java/org/cardanofoundation/signify/app/Delegating.java index 44167de6..326aa817 100644 --- a/src/main/java/org/cardanofoundation/signify/app/Delegating.java +++ b/src/main/java/org/cardanofoundation/signify/app/Delegating.java @@ -5,6 +5,8 @@ import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.InteractionResponse; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; +import org.cardanofoundation.signify.cesr.util.Utils; +import org.cardanofoundation.signify.generated.keria.model.DelegatorOperation; import java.io.IOException; import java.net.http.HttpResponse; @@ -30,7 +32,7 @@ public Delegations(SignifyClient client) { * @return The delegated approval result * @throws Exception if the fetch operation fails */ - public EventResult approve(String name, Object data) throws LibsodiumException, DigestException, IOException, InterruptedException { + public EventResult approve(String name, Object data) throws LibsodiumException, DigestException, IOException, InterruptedException { InteractionResponse interactionResponse = this.client .identifiers() .createInteract(name, data); @@ -40,10 +42,11 @@ public EventResult approve(String name, Object data) throws LibsodiumException, "POST", interactionResponse.jsondata() ); - return new EventResult(interactionResponse.serder(), interactionResponse.sigs(), res); + DelegatorOperation op = Utils.fromJson(res.body(), DelegatorOperation.class); + return new EventResult<>(interactionResponse.serder(), interactionResponse.sigs(), op); } - public EventResult approve(String name) throws LibsodiumException, DigestException, IOException, InterruptedException { + public EventResult approve(String name) throws LibsodiumException, DigestException, IOException, InterruptedException { return this.approve(name, null); } } diff --git a/src/main/java/org/cardanofoundation/signify/app/aiding/EventResult.java b/src/main/java/org/cardanofoundation/signify/app/aiding/EventResult.java index 22f2cf3b..a78a2908 100644 --- a/src/main/java/org/cardanofoundation/signify/app/aiding/EventResult.java +++ b/src/main/java/org/cardanofoundation/signify/app/aiding/EventResult.java @@ -4,10 +4,10 @@ import java.util.List; import org.cardanofoundation.signify.cesr.Serder; +import org.cardanofoundation.signify.generated.keria.model.Operation; -public record EventResult(Serder serder, List sigs, HttpResponse response) { - - public Object op() { - return response.body(); +public record EventResult(Serder serder, List sigs, T opInstance) { + public T op() { + return opInstance; } } \ No newline at end of file diff --git a/src/main/java/org/cardanofoundation/signify/app/aiding/IdentifierController.java b/src/main/java/org/cardanofoundation/signify/app/aiding/IdentifierController.java index f6063e1d..a8d40630 100644 --- a/src/main/java/org/cardanofoundation/signify/app/aiding/IdentifierController.java +++ b/src/main/java/org/cardanofoundation/signify/app/aiding/IdentifierController.java @@ -1,4 +1,9 @@ + package org.cardanofoundation.signify.app.aiding; +import org.cardanofoundation.signify.generated.keria.model.PendingGroupOperation; +import org.cardanofoundation.signify.generated.keria.model.PendingWitnessOperation; +import org.cardanofoundation.signify.generated.keria.model.PendingDelegationOperation; +import org.cardanofoundation.signify.generated.keria.model.PendingDoneOperation; import com.fasterxml.jackson.core.type.TypeReference; import org.cardanofoundation.signify.cesr.Keeping; @@ -27,10 +32,12 @@ import java.util.*; import java.util.concurrent.ExecutionException; import org.cardanofoundation.signify.generated.keria.model.EndrolesAidPostRequest; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; import org.cardanofoundation.signify.generated.keria.model.GroupMember; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; +import org.cardanofoundation.signify.generated.keria.model.Operation; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; -import org.cardanofoundation.signify.generated.keria.model.KeyStateRecordKt; import static org.cardanofoundation.signify.cesr.util.CoreUtil.Versionage; import static org.cardanofoundation.signify.core.Httping.parseRangeHeaders; @@ -129,7 +136,7 @@ public HabState update(String name, IdentifierInfo info) throws InterruptedExcep * @param kargs Optional parameters to create the identifier * @return An EventResult to the inception result */ - public EventResult create(String name, CreateIdentifierArgs kargs) throws InterruptedException, DigestException, IOException, LibsodiumException { + public EventResult create(String name, CreateIdentifierArgs kargs) throws InterruptedException, DigestException, IOException, LibsodiumException { // Assuming kargs is an instance of a class with appropriate getters Algos algo = kargs.getAlgo() == null ? Algos.salty : kargs.getAlgo(); @@ -275,7 +282,8 @@ public EventResult create(String name, CreateIdentifierArgs kargs) throws Interr this.client.setPidx(this.client.getPidx() + 1); HttpResponse response = this.client.fetch("/identifiers", "POST", jsondata); - return new EventResult(serder, sigs, response); + KelOperation kelOp = Utils.fromJson(response.body(), KelOperation.class); + return new EventResult(serder, sigs, kelOp); } @@ -290,7 +298,7 @@ public EventResult create(String name, CreateIdentifierArgs kargs) throws Interr * @return An EventResult to the result of the authorization * @throws LibsodiumException if there is an error in the cryptographic operations */ - public EventResult addEndRole(String name, String role, String eid, String stamp) throws InterruptedException, DigestException, IOException, LibsodiumException { + public EventResult addEndRole(String name, String role, String eid, String stamp) throws InterruptedException, DigestException, IOException, LibsodiumException { HabState hab = this.get(name) .orElseThrow(() -> new IllegalArgumentException("Identifier not found: " + name)); String pre = hab.getPrefix(); @@ -310,7 +318,8 @@ public EventResult addEndRole(String name, String role, String eid, String stamp "POST", endrolesAidPostRequest ); - return new EventResult(rpy, sigs, res); + EndRoleOperation op = Utils.fromJson(res.body(), EndRoleOperation.class); + return new EventResult<>(rpy, sigs, op); } /** @@ -335,14 +344,15 @@ private Serder makeEndRole(String pre, String role, String eid, String stamp) th return Eventing.reply(route, data, stamp, null, Serials.JSON); } - public EventResult interact(String name, Object data) throws InterruptedException, DigestException, IOException, LibsodiumException { + public EventResult interact(String name, Object data) throws InterruptedException, DigestException, IOException, LibsodiumException { InteractionResponse interactionResponse = this.createInteract(name, data); HttpResponse response = this.client.fetch( "/identifiers/" + name + "/events", "POST", interactionResponse.jsondata() ); - return new EventResult(interactionResponse.serder(), interactionResponse.sigs(), response); + KelOperation kelOp = Utils.fromJson(response.body(), KelOperation.class); + return new EventResult(interactionResponse.serder(), interactionResponse.sigs(), kelOp); } public InteractionResponse createInteract(String name, Object data) throws InterruptedException, DigestException, IOException, LibsodiumException { @@ -358,10 +368,13 @@ public InteractionResponse createInteract(String name, Object data) throws Inter data = Collections.singletonList(data); } + @SuppressWarnings("unchecked") + List dataList = (List) data; + InteractArgs interactArgs = InteractArgs.builder() .pre(pre) .sn(BigInteger.valueOf(sn + 1)) - .data((List) data) + .data(dataList) .dig(dig) .build(); Serder serder = Eventing.interact(interactArgs); @@ -376,11 +389,11 @@ public InteractionResponse createInteract(String name, Object data) throws Inter return new InteractionResponse(serder, sigs.signatures(), jsondata); } - public EventResult rotate(String name) throws ExecutionException, InterruptedException, DigestException, IOException, LibsodiumException { + public EventResult rotate(String name) throws ExecutionException, InterruptedException, DigestException, IOException, LibsodiumException { return this.rotate(name, RotateIdentifierArgs.builder().build()); } - public EventResult rotate(String name, RotateIdentifierArgs kargs) throws InterruptedException, DigestException, IOException, LibsodiumException { + public EventResult rotate(String name, RotateIdentifierArgs kargs) throws InterruptedException, DigestException, IOException, LibsodiumException { boolean transferable = kargs.getTransferable() != null ? kargs.getTransferable() : true; String ncode = kargs.getNcode() != null ? kargs.getNcode() : MatterCodex.Ed25519_Seed.getValue(); int ncount = kargs.getNcount() != null ? kargs.getNcount() : 1; @@ -464,7 +477,8 @@ public EventResult rotate(String name, RotateIdentifierArgs kargs) throws Interr jsondata ); - return new EventResult(serder, sigs, res); + KelOperation kelOp = Utils.fromJson(res.body(), KelOperation.class); + return new EventResult(serder, sigs, kelOp); } /** diff --git a/src/main/java/org/cardanofoundation/signify/app/coring/KeyStates.java b/src/main/java/org/cardanofoundation/signify/app/coring/KeyStates.java index 8666931e..cb4a4821 100644 --- a/src/main/java/org/cardanofoundation/signify/app/coring/KeyStates.java +++ b/src/main/java/org/cardanofoundation/signify/app/coring/KeyStates.java @@ -4,6 +4,7 @@ import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.cesr.util.Utils; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import java.io.IOException; import java.net.HttpURLConnection; @@ -67,7 +68,7 @@ public List list(List pres) throws LibsodiumException, I * @return A map representing the long-running operation * @throws Exception if the fetch operation fails */ - public Object query(String pre, String sn, Object anchor) throws LibsodiumException, IOException, InterruptedException { + public QueryOperation query(String pre, String sn, Object anchor) throws LibsodiumException, IOException, InterruptedException { String path = "/queries"; Map data = new LinkedHashMap<>(); data.put("pre", pre); @@ -79,10 +80,10 @@ public Object query(String pre, String sn, Object anchor) throws LibsodiumExcept } String method = "POST"; HttpResponse res = this.client.fetch(path, method, data); - return Utils.fromJson(res.body(), Object.class); + return Utils.fromJson(res.body(), QueryOperation.class); } - public Object query(String pre, String sn) throws Exception { + public QueryOperation query(String pre, String sn) throws LibsodiumException, IOException, InterruptedException { return query(pre, sn, null); } } diff --git a/src/main/java/org/cardanofoundation/signify/app/coring/Oobis.java b/src/main/java/org/cardanofoundation/signify/app/coring/Oobis.java index af2f34fc..bb58e564 100644 --- a/src/main/java/org/cardanofoundation/signify/app/coring/Oobis.java +++ b/src/main/java/org/cardanofoundation/signify/app/coring/Oobis.java @@ -12,6 +12,7 @@ import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.cesr.util.Utils; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.OOBIOperation; public class Oobis { private final SignifyClient client; @@ -53,7 +54,7 @@ public Optional get(String name, String role) throws IOException, Interrup * @throws JsonProcessingException if there is an error processing the JSON * @throws LibsodiumException if there is an error in the cryptographic operations */ - public Object resolve(String oobi, String alias) throws IOException, InterruptedException, LibsodiumException { + public OOBIOperation resolve(String oobi, String alias) throws IOException, InterruptedException, LibsodiumException { String path = "/oobis"; String method = "POST"; @@ -63,6 +64,6 @@ public Object resolve(String oobi, String alias) throws IOException, Interrupted data.put("oobialias", alias); } HttpResponse response = this.client.fetch(path, method, data); - return Utils.fromJson(response.body(), Object.class); + return Utils.fromJson(response.body(), OOBIOperation.class); } } \ No newline at end of file diff --git a/src/main/java/org/cardanofoundation/signify/app/coring/Operation.java b/src/main/java/org/cardanofoundation/signify/app/coring/Operation.java deleted file mode 100644 index 4f67c11d..00000000 --- a/src/main/java/org/cardanofoundation/signify/app/coring/Operation.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.cardanofoundation.signify.app.coring; - -import lombok.*; -import org.cardanofoundation.signify.cesr.util.Utils; - -import java.util.Map; - -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class Operation { - - String name; - Metadata metadata; - boolean done; - Object error; - T response; - - @Getter - @Setter - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class Metadata { - Operation depends; - Map properties; - } - - public static Operation fromObject(Object obj) { - OperationBuilder resultBuilder = Operation.builder(); - - if (obj instanceof Operation operation) { - return (Operation) operation; - } - else if (obj instanceof Map map) { - resultBuilder - .name(map.containsKey("name") ? (String) map.get("name") : null) - .metadata(convertMetadata(map.get("metadata"))) - .done(map.containsKey("done") && (boolean) map.get("done")) - .error(map.getOrDefault("error", null)) - .response(map.containsKey("response") ? (R) map.get("response") : null); - } else if(obj instanceof String) { // json string - Map mapObj = Utils.fromJson((String) obj, Map.class); - return fromObject(mapObj); - } - else { - throw new IllegalArgumentException("Object is neither an Operation instance nor a Map"); - } - - return resultBuilder.build(); - } - - private static Metadata convertMetadata(Object metadataObj) { - if (metadataObj == null) { - return null; - } - if (metadataObj instanceof Metadata) { - return (Metadata) metadataObj; - } - if (metadataObj instanceof Map map) { - Map properties = map.containsKey("properties") - ? (Map) map.get("properties") - : (Map) map; - - return Metadata.builder() - .depends(map.get("depends") != null ? fromObject(map.get("depends")) : null) - .properties(properties) - .build(); - } - throw new IllegalArgumentException("Metadata object is neither a Metadata instance nor a Map"); - } -} diff --git a/src/main/java/org/cardanofoundation/signify/app/coring/OperationDeserializer.java b/src/main/java/org/cardanofoundation/signify/app/coring/OperationDeserializer.java new file mode 100644 index 00000000..d58519e2 --- /dev/null +++ b/src/main/java/org/cardanofoundation/signify/app/coring/OperationDeserializer.java @@ -0,0 +1,157 @@ +package org.cardanofoundation.signify.app.coring; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.*; +import com.fasterxml.jackson.databind.deser.ContextualDeserializer; +import com.fasterxml.jackson.databind.node.ObjectNode; + +import org.cardanofoundation.signify.generated.keria.model.*; + +import java.io.IOException; +import java.util.Map; + +public class OperationDeserializer extends JsonDeserializer implements ContextualDeserializer { + + private enum OperationType { + CHALLENGE(PendingChallengeOperation.class, CompletedChallengeOperation.class, FailedChallengeOperation.class), + CREDENTIAL(PendingCredentialOperation.class, CompletedCredentialOperation.class, FailedCredentialOperation.class), + DELEGATION(PendingDelegationOperation.class, CompletedDelegationOperation.class, FailedDelegationOperation.class), + DELEGATOR(PendingDelegatorOperation.class, CompletedDelegatorOperation.class, FailedDelegatorOperation.class), + DONE(PendingDoneOperation.class, CompletedDoneOperation.class, FailedDoneOperation.class), + ENDROLE(PendingEndRoleOperation.class, CompletedEndRoleOperation.class, FailedEndRoleOperation.class), + EXCHANGE(PendingExchangeOperation.class, CompletedExchangeOperation.class, FailedExchangeOperation.class), + GROUP(PendingGroupOperation.class, CompletedGroupOperation.class, FailedGroupOperation.class), + LOCSCHEME(PendingLocSchemeOperation.class, CompletedLocSchemeOperation.class, FailedLocSchemeOperation.class), + OOBI(PendingOOBIOperation.class, CompletedOOBIOperation.class, FailedOOBIOperation.class), + QUERY(PendingQueryOperation.class, CompletedQueryOperation.class, FailedQueryOperation.class), + REGISTRY(PendingRegistryOperation.class, CompletedRegistryOperation.class, FailedRegistryOperation.class), + SUBMIT(PendingSubmitOperation.class, CompletedSubmitOperation.class, FailedSubmitOperation.class), + WITNESS(PendingWitnessOperation.class, CompletedWitnessOperation.class, FailedWitnessOperation.class); + + final Class pending; + final Class completed; + final Class failed; + + OperationType(Class pending, Class completed, Class failed) { + this.pending = pending; + this.completed = completed; + this.failed = failed; + } + } + + private static final Map PREFIX_MAP = Map.ofEntries( + Map.entry("challenge", OperationType.CHALLENGE), + Map.entry("credential", OperationType.CREDENTIAL), + Map.entry("delegation", OperationType.DELEGATION), + Map.entry("delegator", OperationType.DELEGATOR), + Map.entry("done", OperationType.DONE), + Map.entry("endrole", OperationType.ENDROLE), + Map.entry("exchange", OperationType.EXCHANGE), + Map.entry("group", OperationType.GROUP), + Map.entry("locscheme", OperationType.LOCSCHEME), + Map.entry("oobi", OperationType.OOBI), + Map.entry("query", OperationType.QUERY), + Map.entry("registry", OperationType.REGISTRY), + Map.entry("submit", OperationType.SUBMIT), + Map.entry("witness", OperationType.WITNESS) + ); + + private static final Map, OperationType> INTERFACE_MAP = Map.ofEntries( + Map.entry(ChallengeOperation.class, OperationType.CHALLENGE), + Map.entry(CredentialOperation.class, OperationType.CREDENTIAL), + Map.entry(DelegationOperation.class, OperationType.DELEGATION), + Map.entry(DelegatorOperation.class, OperationType.DELEGATOR), + Map.entry(DoneOperation.class, OperationType.DONE), + Map.entry(EndRoleOperation.class, OperationType.ENDROLE), + Map.entry(ExchangeOperation.class, OperationType.EXCHANGE), + Map.entry(GroupOperation.class, OperationType.GROUP), + Map.entry(LocSchemeOperation.class, OperationType.LOCSCHEME), + Map.entry(OOBIOperation.class, OperationType.OOBI), + Map.entry(QueryOperation.class, OperationType.QUERY), + Map.entry(RegistryOperation.class, OperationType.REGISTRY), + Map.entry(SubmitOperation.class, OperationType.SUBMIT), + Map.entry(WitnessOperation.class, OperationType.WITNESS) + ); + + private final OperationType fixedType; + + public OperationDeserializer() { + this.fixedType = null; + } + + private OperationDeserializer(OperationType fixedType) { + this.fixedType = fixedType; + } + + @Override + public JsonDeserializer createContextual(DeserializationContext ctxt, BeanProperty property) throws JsonMappingException { + JavaType type = ctxt.getContextualType(); + if (type != null) { + OperationType opType = INTERFACE_MAP.get(type.getRawClass()); + if (opType != null) { + return new OperationDeserializer(opType); + } + } + return this; + } + + @Override + public Operation deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { + JsonNode node = p.readValueAsTree(); + + OperationType opType = fixedType; + if (opType == null) { + String name = node.has("name") ? node.get("name").asText() : null; + opType = resolveFromPrefix(name); + if (opType == null) { + throw new IOException("Cannot determine operation type from name: " + name + + ". Expected format: . where type is one of: " + PREFIX_MAP.keySet()); + } + } + + if (opType == OperationType.DELEGATION + && node.has("metadata") + && !node.get("metadata").isNull() + && node.get("metadata").has("teepre")) { + opType = OperationType.DELEGATOR; + } + + Class concreteType; + if (node.has("response") && !node.get("response").isNull()) { + concreteType = opType.completed; + } else if (node.has("error") && !node.get("error").isNull()) { + concreteType = opType.failed; + } else { + concreteType = opType.pending; + } + + removeDoneFields(node); + JsonParser nodeParser = node.traverse(p.getCodec()); + nodeParser.nextToken(); + return ctxt.readValue(nodeParser, concreteType); + } + + private static OperationType resolveFromPrefix(String name) { + if (name == null || !name.contains(".")) { + return null; + } + String prefix = name.substring(0, name.indexOf('.')).toLowerCase(); + return PREFIX_MAP.get(prefix); + } + + /** + * Remove 'done' field only from depends. + */ + private static void removeDoneFields(JsonNode node) { + if (node != null && node.isObject()) { + node.fields().forEachRemaining(entry -> { + String key = entry.getKey(); + JsonNode value = entry.getValue(); + if ("depends".equals(key) && value.isObject()) { + ((ObjectNode) value).remove("done"); + } + removeDoneFields(value); + }); + } + } +} diff --git a/src/main/java/org/cardanofoundation/signify/app/coring/Operations.java b/src/main/java/org/cardanofoundation/signify/app/coring/Operations.java index 6cf99375..3f09e05c 100644 --- a/src/main/java/org/cardanofoundation/signify/app/coring/Operations.java +++ b/src/main/java/org/cardanofoundation/signify/app/coring/Operations.java @@ -5,6 +5,7 @@ import org.cardanofoundation.signify.app.coring.deps.OperationsDeps; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.cesr.util.Utils; +import org.cardanofoundation.signify.generated.keria.model.*; import java.io.IOException; import java.net.HttpURLConnection; @@ -21,71 +22,111 @@ public Operations(OperationsDeps client) { } /** - * Get operation by name + * Get operation by name, deserialized into a specific type. * * @param name Name or ID of the operation to retrieve - * @return Optional containing the operation if found, or empty if not found - * @throws IOException if an I/O error occurs - * @throws InterruptedException if the operation is interrupted - * @throws LibsodiumException if a Sodium error occurs + * @param type The target class to deserialize into (e.g., CredentialOperation.class) + * @return Optional containing the typed operation if found, or empty if not found */ - public Optional> get(String name) throws IOException, InterruptedException, LibsodiumException { + public Optional get(String name, Class type) throws IOException, InterruptedException, LibsodiumException { String path = "/operations/" + name; - String method = "GET"; - HttpResponse response = this.client.fetch(path, method, null); - + HttpResponse response = this.client.fetch(path, "GET", null); + if (response.statusCode() == HttpURLConnection.HTTP_NOT_FOUND) { return Optional.empty(); } - - return Optional.of(Utils.fromJson(response.body(), new TypeReference<>() {})); + + return Optional.of(Utils.fromJson(response.body(), type)); + } + + /** + * Get operation by name, deserialized into the general Operation union type. + * + * @param name Name or ID of the operation to retrieve + * @return Optional containing the Operation if found, or empty if not found + */ + public Optional get(String name) throws IOException, InterruptedException, LibsodiumException { + return get(name, Operation.class); } - public List> list(String type) throws IOException, InterruptedException, LibsodiumException { + /** + * List operations, deserialized into the general Operation union type. + */ + public List list(String type) throws IOException, InterruptedException, LibsodiumException { String path = "/operations" + (type != null ? "?type=" + type : ""); - String method = "GET"; - HttpResponse response = this.client.fetch(path, method, null); + HttpResponse response = this.client.fetch(path, "GET", null); return Utils.fromJson(response.body(), new TypeReference<>() {}); } + /** + * List all operations. + */ + public List list() throws IOException, InterruptedException, LibsodiumException { + return list(null); + } + public void delete(String name) throws IOException, InterruptedException, LibsodiumException { String path = "/operations/" + name; - String method = "DELETE"; - this.client.fetch(path, method, null); + this.client.fetch(path, "DELETE", null); } - public Operation wait(Operation op) throws IOException, InterruptedException, LibsodiumException { - return wait(op, WaitOptions.builder().build(), System.currentTimeMillis()); + /** + * Wait for an operation to complete, returning the result as the general Operation union type. + * + * @param op The operation instance to wait for + */ + public Operation wait(Operation op) throws IOException, InterruptedException, LibsodiumException { + return wait(op, Operation.class, WaitOptions.builder().build(), System.currentTimeMillis()); + } + + /** + * Wait for an operation to complete, returning the result deserialized into the given type. + * Handles dependent operations automatically. + * + * @param op The operation instance to wait for + * @param resultType The target class to deserialize the final result into (e.g., CredentialOperation.class) + */ + public T wait(Operation op, Class resultType) throws IOException, InterruptedException, LibsodiumException { + return wait(op, resultType, WaitOptions.builder().build(), System.currentTimeMillis()); } - public Operation wait(Operation op, WaitOptions options) throws IOException, InterruptedException, LibsodiumException { - return wait(op, options, System.currentTimeMillis()); + public T wait(Operation op, Class resultType, WaitOptions options) throws IOException, InterruptedException, LibsodiumException { + return wait(op, resultType, options, System.currentTimeMillis()); } - public Operation wait(Operation op, WaitOptions options, long startingTime) throws IOException, InterruptedException, LibsodiumException { + @SuppressWarnings("unchecked") + private T wait(Operation op, Class resultType, WaitOptions options, long startingTime) throws IOException, InterruptedException, LibsodiumException { int minSleep = options.getMinSleep(); int maxSleep = options.getMaxSleep(); int increaseFactor = options.getIncreaseFactor(); - if (op.getMetadata() != null && op.getMetadata().getDepends() != null && !op.getMetadata().getDepends().isDone()) { - wait(op.getMetadata().getDepends(), options, startingTime); - } + String operationName = op.getName(); + + waitOnDepends(op, options, startingTime); - if (op.isDone()) { - return op; + if (isDone(op)) { + if (resultType == Operation.class) { + return (T) op; + } + return get(operationName, resultType) + .orElseThrow(() -> new IOException("Operation not found: " + operationName)); } int retries = 0; while (true) { - String opName = op.getName(); - op = this.get(opName).orElseThrow(() -> new IllegalArgumentException("Operation not found: " + opName)); + Operation newOp = get(operationName, Operation.class) + .orElseThrow(() -> new IOException("Operation not found: " + operationName)); int delay = Math.max(minSleep, Math.min(maxSleep, (int) Math.pow(2, retries) * increaseFactor)); retries++; - if (op.isDone()) { - return op; + if (isDone(newOp)) { + if (resultType == Operation.class) { + return (T) newOp; + } + return get(operationName, resultType) + .orElseThrow(() -> new IOException("Operation not found: " + operationName)); } Thread.sleep(delay); @@ -100,6 +141,42 @@ public Operation wait(Operation op, WaitOptions options, long starting } } + private static boolean isDone(Operation op) { + return switch (op) { + case PendingChallengeOperation ignored -> false; + case PendingCredentialOperation ignored -> false; + case PendingDelegationOperation ignored -> false; + case PendingDelegatorOperation ignored -> false; + case PendingDoneOperation ignored -> false; + case PendingEndRoleOperation ignored -> false; + case PendingExchangeOperation ignored -> false; + case PendingGroupOperation ignored -> false; + case PendingLocSchemeOperation ignored -> false; + case PendingOOBIOperation ignored -> false; + case PendingQueryOperation ignored -> false; + case PendingRegistryOperation ignored -> false; + case PendingSubmitOperation ignored -> false; + case PendingWitnessOperation ignored -> false; + default -> true; + }; + } + + private void waitOnDepends(Operation operation, WaitOptions options, long startingTime) throws IOException, InterruptedException, LibsodiumException { + KelOperation depOp = switch (operation) { + case DelegatorOperation op when op.getMetadata() != null + && op.getMetadata().getDepends() != null -> op.getMetadata().getDepends(); + case RegistryOperation op when op.getMetadata() != null + && op.getMetadata().getDepends() != null -> op.getMetadata().getDepends(); + case CredentialOperation op when op.getMetadata() != null + && op.getMetadata().getDepends() != null -> op.getMetadata().getDepends(); + default -> null; + }; + + if (depOp != null && !isDone(depOp)) { + wait(depOp, KelOperation.class, options, startingTime); + } + } + @Builder @Getter @Setter diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/Credentials.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/Credentials.java index 80fc779a..98e9b87b 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/Credentials.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/Credentials.java @@ -1,8 +1,8 @@ package org.cardanofoundation.signify.app.credentialing.credentials; import com.fasterxml.jackson.core.type.TypeReference; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.clienting.SignifyClient; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; import org.cardanofoundation.signify.cesr.Keeping; import org.cardanofoundation.signify.cesr.Saider; import org.cardanofoundation.signify.cesr.Serder; @@ -180,7 +180,7 @@ public IssueCredentialResult issue(String name, CredentialData args) throws IOEx body.put(keeper.getAlgo().getValue(), keeper.getParams().toMap()); HttpResponse response = this.client.fetch(path, method, body); - Operation op = Operation.fromObject(Utils.fromJson(response.body(), Map.class)); + CredentialOperation op = Utils.fromJson(response.body(), CredentialOperation.class); return new IssueCredentialResult(new Serder(acdc), new Serder(iss), anc, op); } @@ -257,7 +257,7 @@ public RevokeCredentialResult revoke(String name, String said, String datetime) String path = "/identifiers/" + name + "/credentials/" + said; String method = "DELETE"; HttpResponse response = this.client.fetch(path, method, body); - Operation op = Operation.fromObject(Utils.fromJson(response.body(), Map.class)); + CredentialOperation op = Utils.fromJson(response.body(), CredentialOperation.class); return new RevokeCredentialResult(new Serder(ixn), new Serder(rev), op); } diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/IssueCredentialResult.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/IssueCredentialResult.java index df6a6f53..1840b149 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/IssueCredentialResult.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/IssueCredentialResult.java @@ -1,8 +1,8 @@ package org.cardanofoundation.signify.app.credentialing.credentials; import lombok.*; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.Serder; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; @Getter @Setter @@ -14,5 +14,5 @@ public class IssueCredentialResult { private Serder acdc; private Serder iss; private Serder anc; - private Operation op; + private CredentialOperation op; } diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/RevokeCredentialResult.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/RevokeCredentialResult.java index 03e137de..88fe307e 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/RevokeCredentialResult.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/credentials/RevokeCredentialResult.java @@ -3,8 +3,8 @@ import lombok.Builder; import lombok.Getter; import lombok.Setter; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.Serder; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; @Getter @Setter @@ -12,5 +12,5 @@ public class RevokeCredentialResult { private Serder anc; private Serder rev; - private Operation op; + private CredentialOperation op; } diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/ipex/Ipex.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/ipex/Ipex.java index f3588b39..2b9945e9 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/ipex/Ipex.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/ipex/Ipex.java @@ -15,6 +15,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import org.cardanofoundation.signify.generated.keria.model.ExchangeOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; public class Ipex { @@ -45,7 +46,7 @@ public Exchanging.ExchangeMessageResult apply(IpexApplyArgs args) throws Interru ); } - public Object submitApply(String name, Serder exn, List sigs, List recp) throws IOException, InterruptedException, LibsodiumException { + public ExchangeOperation submitApply(String name, Serder exn, List sigs, List recp) throws IOException, InterruptedException, LibsodiumException { Map body = new LinkedHashMap<>(); body.put("exn", exn.getKed()); body.put("sigs", sigs); @@ -56,7 +57,7 @@ public Object submitApply(String name, Serder exn, List sigs, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { + public ExchangeOperation submitOffer(String name, Serder exn, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { Map body = new LinkedHashMap<>(); body.put("exn", exn.getKed()); body.put("sigs", sigs); @@ -96,7 +97,7 @@ public Object submitOffer(String name, Serder exn, List sigs, String atc "POST", body ); - return Utils.fromJson(response.body(), Object.class); + return Utils.fromJson(response.body(), ExchangeOperation.class); } /** @@ -121,7 +122,7 @@ public Exchanging.ExchangeMessageResult agree(IpexAgreeArgs args) throws Interru ); } - public Object submitAgree(String name, Serder exn, List sigs, List recp) throws IOException, InterruptedException, LibsodiumException { + public ExchangeOperation submitAgree(String name, Serder exn, List sigs, List recp) throws IOException, InterruptedException, LibsodiumException { Map body = new LinkedHashMap<>(); body.put("exn", exn.getKed()); body.put("sigs", sigs); @@ -132,7 +133,7 @@ public Object submitAgree(String name, Serder exn, List sigs, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { + public ExchangeOperation submitGrant(String name, Serder exn, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { Map body = Map.of( "exn", exn.getKed(), "sigs", sigs, @@ -188,7 +189,7 @@ public Object submitGrant(String name, Serder exn, List sigs, String atc "POST", body ); - return Utils.fromJson(response.body(), Object.class); + return Utils.fromJson(response.body(), ExchangeOperation.class); } /** @@ -213,7 +214,7 @@ public Exchanging.ExchangeMessageResult admit(IpexAdmitArgs args) throws Interru ); } - public Object submitAdmit(String name, Serder exn, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { + public ExchangeOperation submitAdmit(String name, Serder exn, List sigs, String atc, List recp) throws IOException, InterruptedException, LibsodiumException { Map body = new LinkedHashMap<>(); body.put("exn", exn.getKed()); body.put("sigs", sigs); @@ -225,6 +226,6 @@ public Object submitAdmit(String name, Serder exn, List sigs, String atc "POST", body ); - return Utils.fromJson(response.body(), Object.class); + return Utils.fromJson(response.body(), ExchangeOperation.class); } } \ No newline at end of file diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/Registries.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/Registries.java index fdd72484..d5738b7c 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/Registries.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/Registries.java @@ -19,6 +19,7 @@ import java.util.*; import org.cardanofoundation.signify.generated.keria.model.HabState; import org.cardanofoundation.signify.generated.keria.model.Registry; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; import com.fasterxml.jackson.core.type.TypeReference; import static org.cardanofoundation.signify.cesr.util.CoreUtil.Versionage; @@ -104,7 +105,8 @@ public RegistryResult create(CreateRegistryArgs args) throws IOException, Interr List sigs = keeper.sign(serder.getRaw().getBytes()).signatures(); HttpResponse res = this.createFromEvents(hab, args.getName(), args.getRegistryName(), regser.getKed(), serder.getKed(), sigs); - return new RegistryResult(regser, serder, sigs, res); + RegistryOperation op = Utils.fromJson(res.body(), RegistryOperation.class); + return new RegistryResult(regser, serder, sigs, op); } } diff --git a/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/RegistryResult.java b/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/RegistryResult.java index f1850990..fe66b46c 100644 --- a/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/RegistryResult.java +++ b/src/main/java/org/cardanofoundation/signify/app/credentialing/registries/RegistryResult.java @@ -1,28 +1,12 @@ package org.cardanofoundation.signify.app.credentialing.registries; -import lombok.Getter; -import lombok.Setter; import org.cardanofoundation.signify.cesr.Serder; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; -import java.net.http.HttpResponse; import java.util.List; -@Getter -@Setter -public class RegistryResult { - private final Serder regser; - private final Serder serder; - private final List sigs; - private final HttpResponse response; - - public RegistryResult(Serder regser, Serder serder, List sigs, HttpResponse response) { - this.regser = regser; - this.serder = serder; - this.sigs = sigs; - this.response = response; - } - - public String op() { - return response.body(); +public record RegistryResult(Serder regser, Serder serder, List sigs, RegistryOperation opInstance) { + public RegistryOperation op() { + return opInstance; } -} \ No newline at end of file +} diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/ChallengeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/ChallengeOperation.java index cfe01a20..f350c942 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/ChallengeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/ChallengeOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.ChallengeOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.ChallengeOperationResponse; -import org.cardanofoundation.signify.generated.keria.model.CompletedChallengeOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedChallengeOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingChallengeOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * ChallengeOperation - */ -@JsonPropertyOrder({ - ChallengeOperation.JSON_PROPERTY_NAME, - ChallengeOperation.JSON_PROPERTY_METADATA, - ChallengeOperation.JSON_PROPERTY_DONE, - ChallengeOperation.JSON_PROPERTY_RESPONSE, - ChallengeOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class ChallengeOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private ChallengeOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private ChallengeOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public ChallengeOperation() { - } - - public ChallengeOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public ChallengeOperation metadata(@jakarta.annotation.Nullable ChallengeOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public ChallengeOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable ChallengeOperationMetadata metadata) { - this.metadata = metadata; - } - - public ChallengeOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public ChallengeOperation response(@jakarta.annotation.Nonnull ChallengeOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ChallengeOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull ChallengeOperationResponse response) { - this.response = response; - } - - public ChallengeOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ChallengeOperation challengeOperation = (ChallengeOperation) o; - return Objects.equals(this.name, challengeOperation.name) && - Objects.equals(this.metadata, challengeOperation.metadata) && - Objects.equals(this.done, challengeOperation.done) && - Objects.equals(this.response, challengeOperation.response) && - Objects.equals(this.error, challengeOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ChallengeOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface ChallengeOperation extends Operation permits + PendingChallengeOperation, + CompletedChallengeOperation, + FailedChallengeOperation { + ChallengeOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedChallengeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedChallengeOperation.java index bdf68e73..9871c33d 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedChallengeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedChallengeOperation.java @@ -35,7 +35,8 @@ CompletedChallengeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedChallengeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedChallengeOperation implements ChallengeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedCredentialOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedCredentialOperation.java index 7efab3a2..10cbc2db 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedCredentialOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedCredentialOperation.java @@ -35,7 +35,8 @@ CompletedCredentialOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedCredentialOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedCredentialOperation implements CredentialOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegationOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegationOperation.java index c9abe014..32487a92 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegationOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegationOperation.java @@ -35,7 +35,8 @@ CompletedDelegationOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedDelegationOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedDelegationOperation implements DelegationOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegatorOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegatorOperation.java index 643dc420..17b4047b 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegatorOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDelegatorOperation.java @@ -34,7 +34,8 @@ CompletedDelegatorOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedDelegatorOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedDelegatorOperation implements DelegatorOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDoneOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDoneOperation.java index 4d55536c..f79243e0 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDoneOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedDoneOperation.java @@ -35,7 +35,8 @@ CompletedDoneOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedDoneOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedDoneOperation implements DoneOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedEndRoleOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedEndRoleOperation.java index a11a6af5..df2d55bf 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedEndRoleOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedEndRoleOperation.java @@ -35,7 +35,8 @@ CompletedEndRoleOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedEndRoleOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedEndRoleOperation implements EndRoleOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedExchangeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedExchangeOperation.java index 691ab8d3..3bc31ed1 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedExchangeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedExchangeOperation.java @@ -34,7 +34,8 @@ CompletedExchangeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedExchangeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedExchangeOperation implements ExchangeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedGroupOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedGroupOperation.java index 8139a8b8..4d18394f 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedGroupOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedGroupOperation.java @@ -33,7 +33,8 @@ CompletedGroupOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedGroupOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedGroupOperation implements GroupOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedLocSchemeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedLocSchemeOperation.java index d414e5fa..7402f6cf 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedLocSchemeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedLocSchemeOperation.java @@ -34,7 +34,8 @@ CompletedLocSchemeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedLocSchemeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedLocSchemeOperation implements LocSchemeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedOOBIOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedOOBIOperation.java index 51358ab0..18fdb3e5 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedOOBIOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedOOBIOperation.java @@ -35,7 +35,8 @@ CompletedOOBIOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedOOBIOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedOOBIOperation implements OOBIOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedQueryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedQueryOperation.java index 72536380..ef1f6595 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedQueryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedQueryOperation.java @@ -35,7 +35,8 @@ CompletedQueryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedQueryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedQueryOperation implements QueryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedRegistryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedRegistryOperation.java index 511a8b56..10b7beae 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedRegistryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedRegistryOperation.java @@ -35,7 +35,8 @@ CompletedRegistryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedRegistryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedRegistryOperation implements RegistryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedSubmitOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedSubmitOperation.java index a7c3a21c..26a8fd83 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedSubmitOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedSubmitOperation.java @@ -35,7 +35,8 @@ CompletedSubmitOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedSubmitOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedSubmitOperation implements SubmitOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedWitnessOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedWitnessOperation.java index 4ffc2c05..8fb9d8c8 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedWitnessOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CompletedWitnessOperation.java @@ -35,7 +35,8 @@ CompletedWitnessOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CompletedWitnessOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class CompletedWitnessOperation implements WitnessOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperation.java index b99c5ad5..442b682f 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedCredentialOperation; -import org.cardanofoundation.signify.generated.keria.model.CredentialOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.CredentialOperationResponse; -import org.cardanofoundation.signify.generated.keria.model.FailedCredentialOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingCredentialOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * CredentialOperation - */ -@JsonPropertyOrder({ - CredentialOperation.JSON_PROPERTY_NAME, - CredentialOperation.JSON_PROPERTY_METADATA, - CredentialOperation.JSON_PROPERTY_DONE, - CredentialOperation.JSON_PROPERTY_RESPONSE, - CredentialOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CredentialOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private CredentialOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private CredentialOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public CredentialOperation() { - } - - public CredentialOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public CredentialOperation metadata(@jakarta.annotation.Nullable CredentialOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public CredentialOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable CredentialOperationMetadata metadata) { - this.metadata = metadata; - } - - public CredentialOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public CredentialOperation response(@jakarta.annotation.Nonnull CredentialOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public CredentialOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull CredentialOperationResponse response) { - this.response = response; - } - - public CredentialOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - CredentialOperation credentialOperation = (CredentialOperation) o; - return Objects.equals(this.name, credentialOperation.name) && - Objects.equals(this.metadata, credentialOperation.metadata) && - Objects.equals(this.done, credentialOperation.done) && - Objects.equals(this.response, credentialOperation.response) && - Objects.equals(this.error, credentialOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class CredentialOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface CredentialOperation extends Operation permits + PendingCredentialOperation, + CompletedCredentialOperation, + FailedCredentialOperation { + CredentialOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadata.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadata.java index 61648f66..19df8b1a 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadata.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadata.java @@ -20,8 +20,8 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CredentialOperationMetadataDepends; import org.cardanofoundation.signify.generated.keria.model.CredentialSad; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -39,8 +39,8 @@ public class CredentialOperationMetadata { private CredentialSad ced; public static final String JSON_PROPERTY_DEPENDS = "depends"; - @jakarta.annotation.Nullable - private CredentialOperationMetadataDepends depends; + @jakarta.annotation.Nonnull + private KelOperation depends; public CredentialOperationMetadata() { } @@ -70,7 +70,7 @@ public void setCed(@jakarta.annotation.Nonnull CredentialSad ced) { this.ced = ced; } - public CredentialOperationMetadata depends(@jakarta.annotation.Nullable CredentialOperationMetadataDepends depends) { + public CredentialOperationMetadata depends(@jakarta.annotation.Nonnull KelOperation depends) { this.depends = depends; return this; @@ -80,18 +80,18 @@ public CredentialOperationMetadata depends(@jakarta.annotation.Nullable Credenti * Get depends * @return depends */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) - public CredentialOperationMetadataDepends getDepends() { + public KelOperation getDepends() { return depends; } - @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDepends(@jakarta.annotation.Nullable CredentialOperationMetadataDepends depends) { + @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = true) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public void setDepends(@jakarta.annotation.Nonnull KelOperation depends) { this.depends = depends; } diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadataDepends.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadataDepends.java deleted file mode 100644 index f5f5076a..00000000 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/CredentialOperationMetadataDepends.java +++ /dev/null @@ -1,604 +0,0 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package org.cardanofoundation.signify.generated.keria.model; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import org.cardanofoundation.signify.generated.keria.model.DRTV1; -import org.cardanofoundation.signify.generated.keria.model.DRTV2; -import org.cardanofoundation.signify.generated.keria.model.ICPV1Kt; -import org.cardanofoundation.signify.generated.keria.model.IXNV1; -import org.cardanofoundation.signify.generated.keria.model.IXNV2; -import org.cardanofoundation.signify.generated.keria.model.ROTV1; -import org.cardanofoundation.signify.generated.keria.model.ROTV2; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * CredentialOperationMetadataDepends - */ -@JsonPropertyOrder({ - CredentialOperationMetadataDepends.JSON_PROPERTY_V, - CredentialOperationMetadataDepends.JSON_PROPERTY_T, - CredentialOperationMetadataDepends.JSON_PROPERTY_D, - CredentialOperationMetadataDepends.JSON_PROPERTY_I, - CredentialOperationMetadataDepends.JSON_PROPERTY_S, - CredentialOperationMetadataDepends.JSON_PROPERTY_P, - CredentialOperationMetadataDepends.JSON_PROPERTY_KT, - CredentialOperationMetadataDepends.JSON_PROPERTY_K, - CredentialOperationMetadataDepends.JSON_PROPERTY_NT, - CredentialOperationMetadataDepends.JSON_PROPERTY_N, - CredentialOperationMetadataDepends.JSON_PROPERTY_BT, - CredentialOperationMetadataDepends.JSON_PROPERTY_BR, - CredentialOperationMetadataDepends.JSON_PROPERTY_BA, - CredentialOperationMetadataDepends.JSON_PROPERTY_A, - CredentialOperationMetadataDepends.JSON_PROPERTY_C -}) -@JsonTypeName("CredentialOperationMetadata_depends") -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class CredentialOperationMetadataDepends { - public static final String JSON_PROPERTY_V = "v"; - @jakarta.annotation.Nonnull - private String v; - - public static final String JSON_PROPERTY_T = "t"; - @jakarta.annotation.Nonnull - private String t; - - public static final String JSON_PROPERTY_D = "d"; - @jakarta.annotation.Nonnull - private String d; - - public static final String JSON_PROPERTY_I = "i"; - @jakarta.annotation.Nonnull - private String i; - - public static final String JSON_PROPERTY_S = "s"; - @jakarta.annotation.Nonnull - private String s; - - public static final String JSON_PROPERTY_P = "p"; - @jakarta.annotation.Nonnull - private String p; - - public static final String JSON_PROPERTY_KT = "kt"; - @jakarta.annotation.Nonnull - private ICPV1Kt kt; - - public static final String JSON_PROPERTY_K = "k"; - @jakarta.annotation.Nonnull - private List k; - - public static final String JSON_PROPERTY_NT = "nt"; - @jakarta.annotation.Nonnull - private ICPV1Kt nt; - - public static final String JSON_PROPERTY_N = "n"; - @jakarta.annotation.Nonnull - private List n; - - public static final String JSON_PROPERTY_BT = "bt"; - @jakarta.annotation.Nonnull - private String bt; - - public static final String JSON_PROPERTY_BR = "br"; - @jakarta.annotation.Nonnull - private List br; - - public static final String JSON_PROPERTY_BA = "ba"; - @jakarta.annotation.Nonnull - private List ba; - - public static final String JSON_PROPERTY_A = "a"; - @jakarta.annotation.Nullable - private Object a = null; - - public static final String JSON_PROPERTY_C = "c"; - @jakarta.annotation.Nonnull - private List c; - - public CredentialOperationMetadataDepends() { - } - - public CredentialOperationMetadataDepends v(@jakarta.annotation.Nonnull String v) { - - this.v = v; - return this; - } - - /** - * Get v - * @return v - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_V, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getV() { - return v; - } - - - @JsonProperty(value = JSON_PROPERTY_V, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setV(@jakarta.annotation.Nonnull String v) { - this.v = v; - } - - public CredentialOperationMetadataDepends t(@jakarta.annotation.Nonnull String t) { - - this.t = t; - return this; - } - - /** - * Get t - * @return t - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_T, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getT() { - return t; - } - - - @JsonProperty(value = JSON_PROPERTY_T, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setT(@jakarta.annotation.Nonnull String t) { - this.t = t; - } - - public CredentialOperationMetadataDepends d(@jakarta.annotation.Nonnull String d) { - - this.d = d; - return this; - } - - /** - * Get d - * @return d - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_D, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getD() { - return d; - } - - - @JsonProperty(value = JSON_PROPERTY_D, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setD(@jakarta.annotation.Nonnull String d) { - this.d = d; - } - - public CredentialOperationMetadataDepends i(@jakarta.annotation.Nonnull String i) { - - this.i = i; - return this; - } - - /** - * Get i - * @return i - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_I, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getI() { - return i; - } - - - @JsonProperty(value = JSON_PROPERTY_I, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setI(@jakarta.annotation.Nonnull String i) { - this.i = i; - } - - public CredentialOperationMetadataDepends s(@jakarta.annotation.Nonnull String s) { - - this.s = s; - return this; - } - - /** - * Get s - * @return s - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_S, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getS() { - return s; - } - - - @JsonProperty(value = JSON_PROPERTY_S, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setS(@jakarta.annotation.Nonnull String s) { - this.s = s; - } - - public CredentialOperationMetadataDepends p(@jakarta.annotation.Nonnull String p) { - - this.p = p; - return this; - } - - /** - * Get p - * @return p - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_P, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getP() { - return p; - } - - - @JsonProperty(value = JSON_PROPERTY_P, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setP(@jakarta.annotation.Nonnull String p) { - this.p = p; - } - - public CredentialOperationMetadataDepends kt(@jakarta.annotation.Nonnull ICPV1Kt kt) { - - this.kt = kt; - return this; - } - - /** - * Get kt - * @return kt - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_KT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ICPV1Kt getKt() { - return kt; - } - - - @JsonProperty(value = JSON_PROPERTY_KT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setKt(@jakarta.annotation.Nonnull ICPV1Kt kt) { - this.kt = kt; - } - - public CredentialOperationMetadataDepends k(@jakarta.annotation.Nonnull List k) { - - this.k = k; - return this; - } - - public CredentialOperationMetadataDepends addKItem(String kItem) { - if (this.k == null) { - this.k = new ArrayList<>(); - } - this.k.add(kItem); - return this; - } - - /** - * Get k - * @return k - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_K, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public List getK() { - return k; - } - - - @JsonProperty(value = JSON_PROPERTY_K, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setK(@jakarta.annotation.Nonnull List k) { - this.k = k; - } - - public CredentialOperationMetadataDepends nt(@jakarta.annotation.Nonnull ICPV1Kt nt) { - - this.nt = nt; - return this; - } - - /** - * Get nt - * @return nt - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ICPV1Kt getNt() { - return nt; - } - - - @JsonProperty(value = JSON_PROPERTY_NT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setNt(@jakarta.annotation.Nonnull ICPV1Kt nt) { - this.nt = nt; - } - - public CredentialOperationMetadataDepends n(@jakarta.annotation.Nonnull List n) { - - this.n = n; - return this; - } - - public CredentialOperationMetadataDepends addNItem(String nItem) { - if (this.n == null) { - this.n = new ArrayList<>(); - } - this.n.add(nItem); - return this; - } - - /** - * Get n - * @return n - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_N, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public List getN() { - return n; - } - - - @JsonProperty(value = JSON_PROPERTY_N, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setN(@jakarta.annotation.Nonnull List n) { - this.n = n; - } - - public CredentialOperationMetadataDepends bt(@jakarta.annotation.Nonnull String bt) { - - this.bt = bt; - return this; - } - - /** - * Get bt - * @return bt - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_BT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getBt() { - return bt; - } - - - @JsonProperty(value = JSON_PROPERTY_BT, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setBt(@jakarta.annotation.Nonnull String bt) { - this.bt = bt; - } - - public CredentialOperationMetadataDepends br(@jakarta.annotation.Nonnull List br) { - - this.br = br; - return this; - } - - public CredentialOperationMetadataDepends addBrItem(String brItem) { - if (this.br == null) { - this.br = new ArrayList<>(); - } - this.br.add(brItem); - return this; - } - - /** - * Get br - * @return br - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_BR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public List getBr() { - return br; - } - - - @JsonProperty(value = JSON_PROPERTY_BR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setBr(@jakarta.annotation.Nonnull List br) { - this.br = br; - } - - public CredentialOperationMetadataDepends ba(@jakarta.annotation.Nonnull List ba) { - - this.ba = ba; - return this; - } - - public CredentialOperationMetadataDepends addBaItem(String baItem) { - if (this.ba == null) { - this.ba = new ArrayList<>(); - } - this.ba.add(baItem); - return this; - } - - /** - * Get ba - * @return ba - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_BA, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public List getBa() { - return ba; - } - - - @JsonProperty(value = JSON_PROPERTY_BA, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setBa(@jakarta.annotation.Nonnull List ba) { - this.ba = ba; - } - - public CredentialOperationMetadataDepends a(@jakarta.annotation.Nullable Object a) { - - this.a = a; - return this; - } - - /** - * Get a - * @return a - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_A, required = false) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public Object getA() { - return a; - } - - - @JsonProperty(value = JSON_PROPERTY_A, required = false) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setA(@jakarta.annotation.Nullable Object a) { - this.a = a; - } - - public CredentialOperationMetadataDepends c(@jakarta.annotation.Nonnull List c) { - - this.c = c; - return this; - } - - public CredentialOperationMetadataDepends addCItem(String cItem) { - if (this.c == null) { - this.c = new ArrayList<>(); - } - this.c.add(cItem); - return this; - } - - /** - * Get c - * @return c - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_C, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public List getC() { - return c; - } - - - @JsonProperty(value = JSON_PROPERTY_C, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setC(@jakarta.annotation.Nonnull List c) { - this.c = c; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - CredentialOperationMetadataDepends credentialOperationMetadataDepends = (CredentialOperationMetadataDepends) o; - return Objects.equals(this.v, credentialOperationMetadataDepends.v) && - Objects.equals(this.t, credentialOperationMetadataDepends.t) && - Objects.equals(this.d, credentialOperationMetadataDepends.d) && - Objects.equals(this.i, credentialOperationMetadataDepends.i) && - Objects.equals(this.s, credentialOperationMetadataDepends.s) && - Objects.equals(this.p, credentialOperationMetadataDepends.p) && - Objects.equals(this.kt, credentialOperationMetadataDepends.kt) && - Objects.equals(this.k, credentialOperationMetadataDepends.k) && - Objects.equals(this.nt, credentialOperationMetadataDepends.nt) && - Objects.equals(this.n, credentialOperationMetadataDepends.n) && - Objects.equals(this.bt, credentialOperationMetadataDepends.bt) && - Objects.equals(this.br, credentialOperationMetadataDepends.br) && - Objects.equals(this.ba, credentialOperationMetadataDepends.ba) && - Objects.equals(this.a, credentialOperationMetadataDepends.a) && - Objects.equals(this.c, credentialOperationMetadataDepends.c); - } - - @Override - public int hashCode() { - return Objects.hash(v, t, d, i, s, p, kt, k, nt, n, bt, br, ba, a, c); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class CredentialOperationMetadataDepends {\n"); - sb.append(" v: ").append(toIndentedString(v)).append("\n"); - sb.append(" t: ").append(toIndentedString(t)).append("\n"); - sb.append(" d: ").append(toIndentedString(d)).append("\n"); - sb.append(" i: ").append(toIndentedString(i)).append("\n"); - sb.append(" s: ").append(toIndentedString(s)).append("\n"); - sb.append(" p: ").append(toIndentedString(p)).append("\n"); - sb.append(" kt: ").append(toIndentedString(kt)).append("\n"); - sb.append(" k: ").append(toIndentedString(k)).append("\n"); - sb.append(" nt: ").append(toIndentedString(nt)).append("\n"); - sb.append(" n: ").append(toIndentedString(n)).append("\n"); - sb.append(" bt: ").append(toIndentedString(bt)).append("\n"); - sb.append(" br: ").append(toIndentedString(br)).append("\n"); - sb.append(" ba: ").append(toIndentedString(ba)).append("\n"); - sb.append(" a: ").append(toIndentedString(a)).append("\n"); - sb.append(" c: ").append(toIndentedString(c)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegationOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegationOperation.java index da0687d3..009a463e 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegationOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegationOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedDelegationOperation; -import org.cardanofoundation.signify.generated.keria.model.CompletedDelegationOperationResponse; -import org.cardanofoundation.signify.generated.keria.model.DelegationMetadata; -import org.cardanofoundation.signify.generated.keria.model.FailedDelegationOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingDelegationOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * DelegationOperation - */ -@JsonPropertyOrder({ - DelegationOperation.JSON_PROPERTY_NAME, - DelegationOperation.JSON_PROPERTY_METADATA, - DelegationOperation.JSON_PROPERTY_DONE, - DelegationOperation.JSON_PROPERTY_RESPONSE, - DelegationOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class DelegationOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private DelegationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private CompletedDelegationOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public DelegationOperation() { - } - - public DelegationOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public DelegationOperation metadata(@jakarta.annotation.Nullable DelegationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public DelegationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable DelegationMetadata metadata) { - this.metadata = metadata; - } - - public DelegationOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public DelegationOperation response(@jakarta.annotation.Nonnull CompletedDelegationOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public CompletedDelegationOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull CompletedDelegationOperationResponse response) { - this.response = response; - } - - public DelegationOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DelegationOperation delegationOperation = (DelegationOperation) o; - return Objects.equals(this.name, delegationOperation.name) && - Objects.equals(this.metadata, delegationOperation.metadata) && - Objects.equals(this.done, delegationOperation.done) && - Objects.equals(this.response, delegationOperation.response) && - Objects.equals(this.error, delegationOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class DelegationOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface DelegationOperation extends KelOperation permits + PendingDelegationOperation, + CompletedDelegationOperation, + FailedDelegationOperation { + DelegationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperation.java index e0ebb68f..a7d369d9 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperation.java @@ -1,271 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedDelegatorOperation; -import org.cardanofoundation.signify.generated.keria.model.DelegatorOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.FailedDelegatorOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingDelegatorOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * DelegatorOperation - */ -@JsonPropertyOrder({ - DelegatorOperation.JSON_PROPERTY_NAME, - DelegatorOperation.JSON_PROPERTY_METADATA, - DelegatorOperation.JSON_PROPERTY_DONE, - DelegatorOperation.JSON_PROPERTY_RESPONSE, - DelegatorOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class DelegatorOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private DelegatorOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private String response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public DelegatorOperation() { - } - - public DelegatorOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public DelegatorOperation metadata(@jakarta.annotation.Nullable DelegatorOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public DelegatorOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable DelegatorOperationMetadata metadata) { - this.metadata = metadata; - } - - public DelegatorOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public DelegatorOperation response(@jakarta.annotation.Nonnull String response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull String response) { - this.response = response; - } - - public DelegatorOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DelegatorOperation delegatorOperation = (DelegatorOperation) o; - return Objects.equals(this.name, delegatorOperation.name) && - Objects.equals(this.metadata, delegatorOperation.metadata) && - Objects.equals(this.done, delegatorOperation.done) && - Objects.equals(this.response, delegatorOperation.response) && - Objects.equals(this.error, delegatorOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class DelegatorOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface DelegatorOperation extends Operation permits + PendingDelegatorOperation, + CompletedDelegatorOperation, + FailedDelegatorOperation { + DelegatorOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadata.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadata.java index b0ec8d73..9d91940a 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadata.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadata.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import org.cardanofoundation.signify.generated.keria.model.Anchor; -import org.cardanofoundation.signify.generated.keria.model.DelegatorOperationMetadataDepends; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -50,7 +50,7 @@ public class DelegatorOperationMetadata { public static final String JSON_PROPERTY_DEPENDS = "depends"; @jakarta.annotation.Nullable - private DelegatorOperationMetadataDepends depends; + private KelOperation depends; public DelegatorOperationMetadata() { } @@ -130,7 +130,7 @@ public void setAnchor(@jakarta.annotation.Nullable Anchor anchor) { this.anchor = anchor; } - public DelegatorOperationMetadata depends(@jakarta.annotation.Nullable DelegatorOperationMetadataDepends depends) { + public DelegatorOperationMetadata depends(@jakarta.annotation.Nullable KelOperation depends) { this.depends = depends; return this; @@ -144,14 +144,14 @@ public DelegatorOperationMetadata depends(@jakarta.annotation.Nullable Delegator @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public DelegatorOperationMetadataDepends getDepends() { + public KelOperation getDepends() { return depends; } @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setDepends(@jakarta.annotation.Nullable DelegatorOperationMetadataDepends depends) { + public void setDepends(@jakarta.annotation.Nullable KelOperation depends) { this.depends = depends; } diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadataDepends.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadataDepends.java deleted file mode 100644 index b61eac75..00000000 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DelegatorOperationMetadataDepends.java +++ /dev/null @@ -1,273 +0,0 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - - -package org.cardanofoundation.signify.generated.keria.model; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.DoneOperation; -import org.cardanofoundation.signify.generated.keria.model.DoneOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.DoneOperationMetadataResponse; -import org.cardanofoundation.signify.generated.keria.model.GroupOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.WitnessOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * DelegatorOperationMetadataDepends - */ -@JsonPropertyOrder({ - DelegatorOperationMetadataDepends.JSON_PROPERTY_NAME, - DelegatorOperationMetadataDepends.JSON_PROPERTY_METADATA, - DelegatorOperationMetadataDepends.JSON_PROPERTY_DONE, - DelegatorOperationMetadataDepends.JSON_PROPERTY_ERROR, - DelegatorOperationMetadataDepends.JSON_PROPERTY_RESPONSE -}) -@JsonTypeName("DelegatorOperationMetadata_depends") -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class DelegatorOperationMetadataDepends { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private DoneOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private DoneOperationMetadataResponse response; - - public DelegatorOperationMetadataDepends() { - } - - public DelegatorOperationMetadataDepends name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public DelegatorOperationMetadataDepends metadata(@jakarta.annotation.Nullable DoneOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public DoneOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable DoneOperationMetadata metadata) { - this.metadata = metadata; - } - - public DelegatorOperationMetadataDepends done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public DelegatorOperationMetadataDepends error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - public DelegatorOperationMetadataDepends response(@jakarta.annotation.Nonnull DoneOperationMetadataResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneOperationMetadataResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull DoneOperationMetadataResponse response) { - this.response = response; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DelegatorOperationMetadataDepends delegatorOperationMetadataDepends = (DelegatorOperationMetadataDepends) o; - return Objects.equals(this.name, delegatorOperationMetadataDepends.name) && - Objects.equals(this.metadata, delegatorOperationMetadataDepends.metadata) && - Objects.equals(this.done, delegatorOperationMetadataDepends.done) && - Objects.equals(this.error, delegatorOperationMetadataDepends.error) && - Objects.equals(this.response, delegatorOperationMetadataDepends.response); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, error, response); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class DelegatorOperationMetadataDepends {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DoneOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DoneOperation.java index 9dad5e32..61855d00 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/DoneOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/DoneOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedDoneOperation; -import org.cardanofoundation.signify.generated.keria.model.DoneOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.DoneOperationMetadataResponse; -import org.cardanofoundation.signify.generated.keria.model.FailedDoneOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingDoneOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * DoneOperation - */ -@JsonPropertyOrder({ - DoneOperation.JSON_PROPERTY_NAME, - DoneOperation.JSON_PROPERTY_METADATA, - DoneOperation.JSON_PROPERTY_DONE, - DoneOperation.JSON_PROPERTY_RESPONSE, - DoneOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class DoneOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private DoneOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private DoneOperationMetadataResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public DoneOperation() { - } - - public DoneOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public DoneOperation metadata(@jakarta.annotation.Nullable DoneOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public DoneOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable DoneOperationMetadata metadata) { - this.metadata = metadata; - } - - public DoneOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public DoneOperation response(@jakarta.annotation.Nonnull DoneOperationMetadataResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneOperationMetadataResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull DoneOperationMetadataResponse response) { - this.response = response; - } - - public DoneOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - DoneOperation doneOperation = (DoneOperation) o; - return Objects.equals(this.name, doneOperation.name) && - Objects.equals(this.metadata, doneOperation.metadata) && - Objects.equals(this.done, doneOperation.done) && - Objects.equals(this.response, doneOperation.response) && - Objects.equals(this.error, doneOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class DoneOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface DoneOperation extends KelOperation permits + PendingDoneOperation, + CompletedDoneOperation, + FailedDoneOperation { + DoneOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/EndRoleOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/EndRoleOperation.java index 29feaf1d..07ede67b 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/EndRoleOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/EndRoleOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedEndRoleOperation; -import org.cardanofoundation.signify.generated.keria.model.CompletedEndRoleOperationResponse; -import org.cardanofoundation.signify.generated.keria.model.EndRoleMetadata; -import org.cardanofoundation.signify.generated.keria.model.FailedEndRoleOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingEndRoleOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * EndRoleOperation - */ -@JsonPropertyOrder({ - EndRoleOperation.JSON_PROPERTY_NAME, - EndRoleOperation.JSON_PROPERTY_METADATA, - EndRoleOperation.JSON_PROPERTY_DONE, - EndRoleOperation.JSON_PROPERTY_RESPONSE, - EndRoleOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class EndRoleOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private EndRoleMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private CompletedEndRoleOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public EndRoleOperation() { - } - - public EndRoleOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public EndRoleOperation metadata(@jakarta.annotation.Nullable EndRoleMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public EndRoleMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable EndRoleMetadata metadata) { - this.metadata = metadata; - } - - public EndRoleOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public EndRoleOperation response(@jakarta.annotation.Nonnull CompletedEndRoleOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public CompletedEndRoleOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull CompletedEndRoleOperationResponse response) { - this.response = response; - } - - public EndRoleOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - EndRoleOperation endRoleOperation = (EndRoleOperation) o; - return Objects.equals(this.name, endRoleOperation.name) && - Objects.equals(this.metadata, endRoleOperation.metadata) && - Objects.equals(this.done, endRoleOperation.done) && - Objects.equals(this.response, endRoleOperation.response) && - Objects.equals(this.error, endRoleOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class EndRoleOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface EndRoleOperation extends Operation permits + PendingEndRoleOperation, + CompletedEndRoleOperation, + FailedEndRoleOperation { + EndRoleMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/ExchangeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/ExchangeOperation.java index 3ba6982b..2aa0e738 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/ExchangeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/ExchangeOperation.java @@ -1,271 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedExchangeOperation; -import org.cardanofoundation.signify.generated.keria.model.ExchangeOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.FailedExchangeOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingExchangeOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * ExchangeOperation - */ -@JsonPropertyOrder({ - ExchangeOperation.JSON_PROPERTY_NAME, - ExchangeOperation.JSON_PROPERTY_METADATA, - ExchangeOperation.JSON_PROPERTY_DONE, - ExchangeOperation.JSON_PROPERTY_RESPONSE, - ExchangeOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class ExchangeOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private ExchangeOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private ExchangeOperationMetadata response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public ExchangeOperation() { - } - - public ExchangeOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public ExchangeOperation metadata(@jakarta.annotation.Nullable ExchangeOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public ExchangeOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable ExchangeOperationMetadata metadata) { - this.metadata = metadata; - } - - public ExchangeOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public ExchangeOperation response(@jakarta.annotation.Nonnull ExchangeOperationMetadata response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public ExchangeOperationMetadata getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull ExchangeOperationMetadata response) { - this.response = response; - } - - public ExchangeOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - ExchangeOperation exchangeOperation = (ExchangeOperation) o; - return Objects.equals(this.name, exchangeOperation.name) && - Objects.equals(this.metadata, exchangeOperation.metadata) && - Objects.equals(this.done, exchangeOperation.done) && - Objects.equals(this.response, exchangeOperation.response) && - Objects.equals(this.error, exchangeOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class ExchangeOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface ExchangeOperation extends Operation permits + PendingExchangeOperation, + CompletedExchangeOperation, + FailedExchangeOperation { + ExchangeOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedChallengeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedChallengeOperation.java index ac00310f..2c40adcf 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedChallengeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedChallengeOperation.java @@ -35,7 +35,8 @@ FailedChallengeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedChallengeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedChallengeOperation implements ChallengeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedCredentialOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedCredentialOperation.java index 4ea34fe5..55eb55fe 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedCredentialOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedCredentialOperation.java @@ -35,7 +35,8 @@ FailedCredentialOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedCredentialOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedCredentialOperation implements CredentialOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegationOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegationOperation.java index f37fd95b..551c9d92 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegationOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegationOperation.java @@ -35,7 +35,8 @@ FailedDelegationOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedDelegationOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedDelegationOperation implements DelegationOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegatorOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegatorOperation.java index 80237e03..c1377c60 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegatorOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDelegatorOperation.java @@ -35,7 +35,8 @@ FailedDelegatorOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedDelegatorOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedDelegatorOperation implements DelegatorOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDoneOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDoneOperation.java index a22cd9fd..4647a5a3 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDoneOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedDoneOperation.java @@ -35,7 +35,8 @@ FailedDoneOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedDoneOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedDoneOperation implements DoneOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedEndRoleOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedEndRoleOperation.java index ac78fc8a..0f1f93a8 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedEndRoleOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedEndRoleOperation.java @@ -35,7 +35,8 @@ FailedEndRoleOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedEndRoleOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedEndRoleOperation implements EndRoleOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedExchangeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedExchangeOperation.java index b0b19485..35fd6947 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedExchangeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedExchangeOperation.java @@ -35,7 +35,8 @@ FailedExchangeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedExchangeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedExchangeOperation implements ExchangeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedGroupOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedGroupOperation.java index 9a164344..ab55b090 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedGroupOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedGroupOperation.java @@ -35,7 +35,8 @@ FailedGroupOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedGroupOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedGroupOperation implements GroupOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedLocSchemeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedLocSchemeOperation.java index 51bc1a13..e7c0431f 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedLocSchemeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedLocSchemeOperation.java @@ -35,7 +35,8 @@ FailedLocSchemeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedLocSchemeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedLocSchemeOperation implements LocSchemeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedOOBIOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedOOBIOperation.java index d840cc93..2e2fc7b0 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedOOBIOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedOOBIOperation.java @@ -35,7 +35,8 @@ FailedOOBIOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedOOBIOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedOOBIOperation implements OOBIOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedQueryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedQueryOperation.java index e72c2e7c..c8fb20b9 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedQueryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedQueryOperation.java @@ -35,7 +35,8 @@ FailedQueryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedQueryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedQueryOperation implements QueryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedRegistryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedRegistryOperation.java index c3e9a65e..b6078050 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedRegistryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedRegistryOperation.java @@ -35,7 +35,8 @@ FailedRegistryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedRegistryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedRegistryOperation implements RegistryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedSubmitOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedSubmitOperation.java index b2af42ac..e94e2a5a 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedSubmitOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedSubmitOperation.java @@ -35,7 +35,8 @@ FailedSubmitOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedSubmitOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedSubmitOperation implements SubmitOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedWitnessOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedWitnessOperation.java index deb4a1f2..9282e0b4 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedWitnessOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/FailedWitnessOperation.java @@ -35,7 +35,8 @@ FailedWitnessOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class FailedWitnessOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class FailedWitnessOperation implements WitnessOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/GroupOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/GroupOperation.java index c26edf88..56b9fd74 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/GroupOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/GroupOperation.java @@ -1,239 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedGroupOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedGroupOperation; -import org.cardanofoundation.signify.generated.keria.model.GroupOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingGroupOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * GroupOperation - */ -@JsonPropertyOrder({ - GroupOperation.JSON_PROPERTY_NAME, - GroupOperation.JSON_PROPERTY_METADATA, - GroupOperation.JSON_PROPERTY_DONE, - GroupOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class GroupOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private GroupOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public GroupOperation() { - } - - public GroupOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public GroupOperation metadata(@jakarta.annotation.Nullable GroupOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public GroupOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable GroupOperationMetadata metadata) { - this.metadata = metadata; - } - - public GroupOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public GroupOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - GroupOperation groupOperation = (GroupOperation) o; - return Objects.equals(this.name, groupOperation.name) && - Objects.equals(this.metadata, groupOperation.metadata) && - Objects.equals(this.done, groupOperation.done) && - Objects.equals(this.error, groupOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class GroupOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface GroupOperation extends KelOperation permits + PendingGroupOperation, + CompletedGroupOperation, + FailedGroupOperation { + GroupOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/KelOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/KelOperation.java new file mode 100644 index 00000000..ea065a9a --- /dev/null +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/KelOperation.java @@ -0,0 +1,12 @@ +package org.cardanofoundation.signify.generated.keria.model; + +/** + * Marker interface for operations that result from appending a KEL event. + */ +public sealed interface KelOperation extends Operation permits + DelegationOperation, + DoneOperation, + GroupOperation, + SubmitOperation, + WitnessOperation { +} diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/LocSchemeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/LocSchemeOperation.java index 478778df..6077f65a 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/LocSchemeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/LocSchemeOperation.java @@ -1,271 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedLocSchemeOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedLocSchemeOperation; -import org.cardanofoundation.signify.generated.keria.model.LocSchemeMetadata; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingLocSchemeOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * LocSchemeOperation - */ -@JsonPropertyOrder({ - LocSchemeOperation.JSON_PROPERTY_NAME, - LocSchemeOperation.JSON_PROPERTY_METADATA, - LocSchemeOperation.JSON_PROPERTY_DONE, - LocSchemeOperation.JSON_PROPERTY_RESPONSE, - LocSchemeOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class LocSchemeOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private LocSchemeMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private LocSchemeMetadata response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public LocSchemeOperation() { - } - - public LocSchemeOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public LocSchemeOperation metadata(@jakarta.annotation.Nullable LocSchemeMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public LocSchemeMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable LocSchemeMetadata metadata) { - this.metadata = metadata; - } - - public LocSchemeOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public LocSchemeOperation response(@jakarta.annotation.Nonnull LocSchemeMetadata response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public LocSchemeMetadata getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull LocSchemeMetadata response) { - this.response = response; - } - - public LocSchemeOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - LocSchemeOperation locSchemeOperation = (LocSchemeOperation) o; - return Objects.equals(this.name, locSchemeOperation.name) && - Objects.equals(this.metadata, locSchemeOperation.metadata) && - Objects.equals(this.done, locSchemeOperation.done) && - Objects.equals(this.response, locSchemeOperation.response) && - Objects.equals(this.error, locSchemeOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class LocSchemeOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface LocSchemeOperation extends Operation permits + PendingLocSchemeOperation, + CompletedLocSchemeOperation, + FailedLocSchemeOperation { + LocSchemeMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/OOBIOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/OOBIOperation.java index 2896343d..81a14eb8 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/OOBIOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/OOBIOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedOOBIOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedOOBIOperation; -import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; -import org.cardanofoundation.signify.generated.keria.model.OOBIMetadata; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingOOBIOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * OOBIOperation - */ -@JsonPropertyOrder({ - OOBIOperation.JSON_PROPERTY_NAME, - OOBIOperation.JSON_PROPERTY_METADATA, - OOBIOperation.JSON_PROPERTY_DONE, - OOBIOperation.JSON_PROPERTY_RESPONSE, - OOBIOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class OOBIOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private OOBIMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private KeyStateRecord response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public OOBIOperation() { - } - - public OOBIOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public OOBIOperation metadata(@jakarta.annotation.Nullable OOBIMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public OOBIMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable OOBIMetadata metadata) { - this.metadata = metadata; - } - - public OOBIOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public OOBIOperation response(@jakarta.annotation.Nonnull KeyStateRecord response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public KeyStateRecord getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull KeyStateRecord response) { - this.response = response; - } - - public OOBIOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - OOBIOperation ooBIOperation = (OOBIOperation) o; - return Objects.equals(this.name, ooBIOperation.name) && - Objects.equals(this.metadata, ooBIOperation.metadata) && - Objects.equals(this.done, ooBIOperation.done) && - Objects.equals(this.response, ooBIOperation.response) && - Objects.equals(this.error, ooBIOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class OOBIOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface OOBIOperation extends Operation permits + PendingOOBIOperation, + CompletedOOBIOperation, + FailedOOBIOperation { + OOBIMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/Operation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/Operation.java index f073f24f..d9a72903 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/Operation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/Operation.java @@ -1,282 +1,22 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - -package org.cardanofoundation.signify.generated.keria.model; - -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.ChallengeOperation; -import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; -import org.cardanofoundation.signify.generated.keria.model.DelegationOperation; -import org.cardanofoundation.signify.generated.keria.model.DelegatorOperation; -import org.cardanofoundation.signify.generated.keria.model.DelegatorOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.DoneOperation; -import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; -import org.cardanofoundation.signify.generated.keria.model.ExchangeOperation; -import org.cardanofoundation.signify.generated.keria.model.GroupOperation; -import org.cardanofoundation.signify.generated.keria.model.LocSchemeOperation; -import org.cardanofoundation.signify.generated.keria.model.OOBIOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.QueryOperation; -import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; -import org.cardanofoundation.signify.generated.keria.model.SubmitOperation; -import org.cardanofoundation.signify.generated.keria.model.WitnessOperation; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * Operation - */ -@JsonPropertyOrder({ - Operation.JSON_PROPERTY_NAME, - Operation.JSON_PROPERTY_METADATA, - Operation.JSON_PROPERTY_DONE, - Operation.JSON_PROPERTY_RESPONSE, - Operation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class Operation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private DelegatorOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private String response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public Operation() { - } - - public Operation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public Operation metadata(@jakarta.annotation.Nullable DelegatorOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public DelegatorOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable DelegatorOperationMetadata metadata) { - this.metadata = metadata; - } - - public Operation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public Operation response(@jakarta.annotation.Nonnull String response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull String response) { - this.response = response; - } - - public Operation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; + package org.cardanofoundation.signify.generated.keria.model; + + import com.fasterxml.jackson.databind.annotation.JsonDeserialize; + import org.cardanofoundation.signify.app.coring.OperationDeserializer; + + @JsonDeserialize(using = OperationDeserializer.class) + public sealed interface Operation permits + ChallengeOperation, + CredentialOperation, + DelegatorOperation, + EndRoleOperation, + ExchangeOperation, + KelOperation, + LocSchemeOperation, + OOBIOperation, + QueryOperation, + RegistryOperation { + + String getName(); } - Operation operation = (Operation) o; - return Objects.equals(this.name, operation.name) && - Objects.equals(this.metadata, operation.metadata) && - Objects.equals(this.done, operation.done) && - Objects.equals(this.response, operation.response) && - Objects.equals(this.error, operation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Operation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - -} - + \ No newline at end of file diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingChallengeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingChallengeOperation.java index c355e069..70ea2429 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingChallengeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingChallengeOperation.java @@ -33,7 +33,8 @@ PendingChallengeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingChallengeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingChallengeOperation implements ChallengeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingCredentialOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingCredentialOperation.java index 37f31315..0d718887 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingCredentialOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingCredentialOperation.java @@ -33,7 +33,8 @@ PendingCredentialOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingCredentialOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingCredentialOperation implements CredentialOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegationOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegationOperation.java index 56f54cf0..717c0460 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegationOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegationOperation.java @@ -33,7 +33,8 @@ PendingDelegationOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingDelegationOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingDelegationOperation implements DelegationOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegatorOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegatorOperation.java index 394e283e..acb16603 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegatorOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDelegatorOperation.java @@ -33,7 +33,8 @@ PendingDelegatorOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingDelegatorOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingDelegatorOperation implements DelegatorOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDoneOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDoneOperation.java index d351781e..41505b4b 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDoneOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingDoneOperation.java @@ -33,7 +33,8 @@ PendingDoneOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingDoneOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingDoneOperation implements DoneOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingEndRoleOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingEndRoleOperation.java index 77058437..8691cd9a 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingEndRoleOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingEndRoleOperation.java @@ -33,7 +33,8 @@ PendingEndRoleOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingEndRoleOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingEndRoleOperation implements EndRoleOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingExchangeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingExchangeOperation.java index a27b259a..cbc5cddf 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingExchangeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingExchangeOperation.java @@ -33,7 +33,8 @@ PendingExchangeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingExchangeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingExchangeOperation implements ExchangeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingGroupOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingGroupOperation.java index a2b43284..6a2801e4 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingGroupOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingGroupOperation.java @@ -33,7 +33,8 @@ PendingGroupOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingGroupOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingGroupOperation implements GroupOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingLocSchemeOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingLocSchemeOperation.java index ff7d1006..4910bba8 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingLocSchemeOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingLocSchemeOperation.java @@ -33,7 +33,8 @@ PendingLocSchemeOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingLocSchemeOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingLocSchemeOperation implements LocSchemeOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingOOBIOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingOOBIOperation.java index fd9a0918..a4851ce2 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingOOBIOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingOOBIOperation.java @@ -33,7 +33,8 @@ PendingOOBIOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingOOBIOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingOOBIOperation implements OOBIOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingQueryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingQueryOperation.java index f3ccaa7e..93b1bfed 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingQueryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingQueryOperation.java @@ -33,7 +33,8 @@ PendingQueryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingQueryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingQueryOperation implements QueryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingRegistryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingRegistryOperation.java index b360bc20..2a2a103c 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingRegistryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingRegistryOperation.java @@ -33,7 +33,8 @@ PendingRegistryOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingRegistryOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingRegistryOperation implements RegistryOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingSubmitOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingSubmitOperation.java index d7e5dc11..c07ab082 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingSubmitOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingSubmitOperation.java @@ -33,7 +33,8 @@ PendingSubmitOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingSubmitOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingSubmitOperation implements SubmitOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingWitnessOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingWitnessOperation.java index 2eb73a1a..78e237b1 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingWitnessOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/PendingWitnessOperation.java @@ -33,7 +33,8 @@ PendingWitnessOperation.JSON_PROPERTY_DONE }) @jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class PendingWitnessOperation { +@com.fasterxml.jackson.databind.annotation.JsonDeserialize +public final class PendingWitnessOperation implements WitnessOperation { public static final String JSON_PROPERTY_NAME = "name"; @jakarta.annotation.Nonnull private String name; diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/QueryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/QueryOperation.java index f022f4e7..c667a3e7 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/QueryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/QueryOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedQueryOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedQueryOperation; -import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingQueryOperation; -import org.cardanofoundation.signify.generated.keria.model.QueryMetadata; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * QueryOperation - */ -@JsonPropertyOrder({ - QueryOperation.JSON_PROPERTY_NAME, - QueryOperation.JSON_PROPERTY_METADATA, - QueryOperation.JSON_PROPERTY_DONE, - QueryOperation.JSON_PROPERTY_RESPONSE, - QueryOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class QueryOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private QueryMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private KeyStateRecord response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public QueryOperation() { - } - - public QueryOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public QueryOperation metadata(@jakarta.annotation.Nullable QueryMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public QueryMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable QueryMetadata metadata) { - this.metadata = metadata; - } - - public QueryOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public QueryOperation response(@jakarta.annotation.Nonnull KeyStateRecord response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public KeyStateRecord getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull KeyStateRecord response) { - this.response = response; - } - - public QueryOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - QueryOperation queryOperation = (QueryOperation) o; - return Objects.equals(this.name, queryOperation.name) && - Objects.equals(this.metadata, queryOperation.metadata) && - Objects.equals(this.done, queryOperation.done) && - Objects.equals(this.response, queryOperation.response) && - Objects.equals(this.error, queryOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class QueryOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface QueryOperation extends Operation permits + PendingQueryOperation, + CompletedQueryOperation, + FailedQueryOperation { + QueryMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperation.java index 5fc37a12..ed39b35b 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedRegistryOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedRegistryOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingRegistryOperation; -import org.cardanofoundation.signify.generated.keria.model.RegistryOperationMetadata; -import org.cardanofoundation.signify.generated.keria.model.RegistryOperationResponse; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * RegistryOperation - */ -@JsonPropertyOrder({ - RegistryOperation.JSON_PROPERTY_NAME, - RegistryOperation.JSON_PROPERTY_METADATA, - RegistryOperation.JSON_PROPERTY_DONE, - RegistryOperation.JSON_PROPERTY_RESPONSE, - RegistryOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class RegistryOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private RegistryOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private RegistryOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public RegistryOperation() { - } - - public RegistryOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public RegistryOperation metadata(@jakarta.annotation.Nullable RegistryOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public RegistryOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable RegistryOperationMetadata metadata) { - this.metadata = metadata; - } - - public RegistryOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public RegistryOperation response(@jakarta.annotation.Nonnull RegistryOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public RegistryOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull RegistryOperationResponse response) { - this.response = response; - } - - public RegistryOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - RegistryOperation registryOperation = (RegistryOperation) o; - return Objects.equals(this.name, registryOperation.name) && - Objects.equals(this.metadata, registryOperation.metadata) && - Objects.equals(this.done, registryOperation.done) && - Objects.equals(this.response, registryOperation.response) && - Objects.equals(this.error, registryOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class RegistryOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface RegistryOperation extends Operation permits + PendingRegistryOperation, + CompletedRegistryOperation, + FailedRegistryOperation { + RegistryOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperationMetadata.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperationMetadata.java index 405937c5..6e848c61 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperationMetadata.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/RegistryOperationMetadata.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.annotation.JsonValue; import org.cardanofoundation.signify.generated.keria.model.Anchor; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.annotation.JsonTypeName; @@ -39,8 +40,8 @@ public class RegistryOperationMetadata { private String pre; public static final String JSON_PROPERTY_DEPENDS = "depends"; - @jakarta.annotation.Nullable - private Object depends = null; + @jakarta.annotation.Nonnull + private KelOperation depends; public static final String JSON_PROPERTY_ANCHOR = "anchor"; @jakarta.annotation.Nonnull @@ -74,7 +75,7 @@ public void setPre(@jakarta.annotation.Nonnull String pre) { this.pre = pre; } - public RegistryOperationMetadata depends(@jakarta.annotation.Nullable Object depends) { + public RegistryOperationMetadata depends(@jakarta.annotation.Nonnull KelOperation depends) { this.depends = depends; return this; @@ -84,18 +85,18 @@ public RegistryOperationMetadata depends(@jakarta.annotation.Nullable Object dep * Get depends * @return depends */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) + @jakarta.annotation.Nonnull + @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = true) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public Object getDepends() { + public KelOperation getDepends() { return depends; } - @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = false) + @JsonProperty(value = JSON_PROPERTY_DEPENDS, required = true) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDepends(@jakarta.annotation.Nullable Object depends) { + public void setDepends(@jakarta.annotation.Nonnull KelOperation depends) { this.depends = depends; } diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/SubmitOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/SubmitOperation.java index 966e94d0..fd570197 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/SubmitOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/SubmitOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedSubmitOperation; -import org.cardanofoundation.signify.generated.keria.model.FailedSubmitOperation; -import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingSubmitOperation; -import org.cardanofoundation.signify.generated.keria.model.SubmitOperationMetadata; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * SubmitOperation - */ -@JsonPropertyOrder({ - SubmitOperation.JSON_PROPERTY_NAME, - SubmitOperation.JSON_PROPERTY_METADATA, - SubmitOperation.JSON_PROPERTY_DONE, - SubmitOperation.JSON_PROPERTY_RESPONSE, - SubmitOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class SubmitOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private SubmitOperationMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private KeyStateRecord response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public SubmitOperation() { - } - - public SubmitOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public SubmitOperation metadata(@jakarta.annotation.Nullable SubmitOperationMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public SubmitOperationMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable SubmitOperationMetadata metadata) { - this.metadata = metadata; - } - - public SubmitOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public SubmitOperation response(@jakarta.annotation.Nonnull KeyStateRecord response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public KeyStateRecord getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull KeyStateRecord response) { - this.response = response; - } - - public SubmitOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - SubmitOperation submitOperation = (SubmitOperation) o; - return Objects.equals(this.name, submitOperation.name) && - Objects.equals(this.metadata, submitOperation.metadata) && - Objects.equals(this.done, submitOperation.done) && - Objects.equals(this.response, submitOperation.response) && - Objects.equals(this.error, submitOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class SubmitOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface SubmitOperation extends KelOperation permits + PendingSubmitOperation, + CompletedSubmitOperation, + FailedSubmitOperation { + SubmitOperationMetadata getMetadata(); } - diff --git a/src/main/java/org/cardanofoundation/signify/generated/keria/model/WitnessOperation.java b/src/main/java/org/cardanofoundation/signify/generated/keria/model/WitnessOperation.java index 4e9f9d91..a2154caf 100644 --- a/src/main/java/org/cardanofoundation/signify/generated/keria/model/WitnessOperation.java +++ b/src/main/java/org/cardanofoundation/signify/generated/keria/model/WitnessOperation.java @@ -1,272 +1,10 @@ -/* - * KERIA Interactive Web Interface API - * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) - * - * The version of the OpenAPI document: 1.0.1 - * - * - * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * https://openapi-generator.tech - * Do not edit the class manually. - */ - package org.cardanofoundation.signify.generated.keria.model; -import java.util.Objects; -import java.util.Arrays; -import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonTypeName; -import com.fasterxml.jackson.annotation.JsonValue; -import org.cardanofoundation.signify.generated.keria.model.CompletedWitnessOperation; -import org.cardanofoundation.signify.generated.keria.model.CompletedWitnessOperationResponse; -import org.cardanofoundation.signify.generated.keria.model.FailedWitnessOperation; -import org.cardanofoundation.signify.generated.keria.model.OperationStatus; -import org.cardanofoundation.signify.generated.keria.model.PendingWitnessOperation; -import org.cardanofoundation.signify.generated.keria.model.WitnessMetadata; -import com.fasterxml.jackson.annotation.JsonPropertyOrder; -import com.fasterxml.jackson.annotation.JsonTypeName; - -/** - * WitnessOperation - */ -@JsonPropertyOrder({ - WitnessOperation.JSON_PROPERTY_NAME, - WitnessOperation.JSON_PROPERTY_METADATA, - WitnessOperation.JSON_PROPERTY_DONE, - WitnessOperation.JSON_PROPERTY_RESPONSE, - WitnessOperation.JSON_PROPERTY_ERROR -}) -@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.18.0") -public class WitnessOperation { - public static final String JSON_PROPERTY_NAME = "name"; - @jakarta.annotation.Nonnull - private String name; - - public static final String JSON_PROPERTY_METADATA = "metadata"; - @jakarta.annotation.Nullable - private WitnessMetadata metadata; - - /** - * Gets or Sets done - */ - public enum DoneEnum { - TRUE(Boolean.valueOf("true")); - - private Boolean value; - - DoneEnum(Boolean value) { - this.value = value; - } - - @JsonValue - public Boolean getValue() { - return value; - } - - @Override - public String toString() { - return String.valueOf(value); - } - - @JsonCreator - public static DoneEnum fromValue(Boolean value) { - for (DoneEnum b : DoneEnum.values()) { - if (b.value.equals(value)) { - return b; - } - } - throw new IllegalArgumentException("Unexpected value '" + value + "'"); - } - } - - public static final String JSON_PROPERTY_DONE = "done"; - @jakarta.annotation.Nonnull - private DoneEnum done; - - public static final String JSON_PROPERTY_RESPONSE = "response"; - @jakarta.annotation.Nonnull - private CompletedWitnessOperationResponse response; - - public static final String JSON_PROPERTY_ERROR = "error"; - @jakarta.annotation.Nonnull - private OperationStatus error; - - public WitnessOperation() { - } - - public WitnessOperation name(@jakarta.annotation.Nonnull String name) { - - this.name = name; - return this; - } - - /** - * Get name - * @return name - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public String getName() { - return name; - } - - - @JsonProperty(value = JSON_PROPERTY_NAME, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setName(@jakarta.annotation.Nonnull String name) { - this.name = name; - } - - public WitnessOperation metadata(@jakarta.annotation.Nullable WitnessMetadata metadata) { - - this.metadata = metadata; - return this; - } - - /** - * Get metadata - * @return metadata - */ - @jakarta.annotation.Nullable - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - - public WitnessMetadata getMetadata() { - return metadata; - } - - - @JsonProperty(value = JSON_PROPERTY_METADATA, required = false) - @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) - public void setMetadata(@jakarta.annotation.Nullable WitnessMetadata metadata) { - this.metadata = metadata; - } - - public WitnessOperation done(@jakarta.annotation.Nonnull DoneEnum done) { - - this.done = done; - return this; - } - - /** - * Get done - * @return done - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public DoneEnum getDone() { - return done; - } - - - @JsonProperty(value = JSON_PROPERTY_DONE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setDone(@jakarta.annotation.Nonnull DoneEnum done) { - this.done = done; - } - - public WitnessOperation response(@jakarta.annotation.Nonnull CompletedWitnessOperationResponse response) { - - this.response = response; - return this; - } - - /** - * Get response - * @return response - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public CompletedWitnessOperationResponse getResponse() { - return response; - } - - - @JsonProperty(value = JSON_PROPERTY_RESPONSE, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setResponse(@jakarta.annotation.Nonnull CompletedWitnessOperationResponse response) { - this.response = response; - } - - public WitnessOperation error(@jakarta.annotation.Nonnull OperationStatus error) { - - this.error = error; - return this; - } - - /** - * Get error - * @return error - */ - @jakarta.annotation.Nonnull - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - - public OperationStatus getError() { - return error; - } - - - @JsonProperty(value = JSON_PROPERTY_ERROR, required = true) - @JsonInclude(value = JsonInclude.Include.ALWAYS) - public void setError(@jakarta.annotation.Nonnull OperationStatus error) { - this.error = error; - } - - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - WitnessOperation witnessOperation = (WitnessOperation) o; - return Objects.equals(this.name, witnessOperation.name) && - Objects.equals(this.metadata, witnessOperation.metadata) && - Objects.equals(this.done, witnessOperation.done) && - Objects.equals(this.response, witnessOperation.response) && - Objects.equals(this.error, witnessOperation.error); - } - - @Override - public int hashCode() { - return Objects.hash(name, metadata, done, response, error); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class WitnessOperation {\n"); - sb.append(" name: ").append(toIndentedString(name)).append("\n"); - sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); - sb.append(" done: ").append(toIndentedString(done)).append("\n"); - sb.append(" response: ").append(toIndentedString(response)).append("\n"); - sb.append(" error: ").append(toIndentedString(error)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +public sealed interface WitnessOperation extends KelOperation permits + PendingWitnessOperation, + CompletedWitnessOperation, + FailedWitnessOperation { + WitnessMetadata getMetadata(); } - diff --git a/src/test/java/org/cardanofoundation/signify/app/OperationsTest.java b/src/test/java/org/cardanofoundation/signify/app/OperationsTest.java index b93804bc..9915e621 100644 --- a/src/test/java/org/cardanofoundation/signify/app/OperationsTest.java +++ b/src/test/java/org/cardanofoundation/signify/app/OperationsTest.java @@ -1,10 +1,9 @@ package org.cardanofoundation.signify.app; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.coring.Operations; import org.cardanofoundation.signify.app.coring.deps.OperationsDeps; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; -import org.cardanofoundation.signify.cesr.util.Utils; +import org.cardanofoundation.signify.generated.keria.model.Operation; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -12,9 +11,11 @@ import java.io.IOException; import java.net.http.HttpResponse; -import java.util.*; +import java.util.UUID; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.*; public class OperationsTest { @@ -31,14 +32,25 @@ public class OperationsTest { @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); - operations = new Operations(client); + } + + private String pendingDoneOpJson(String name) { + return "{\"_type\":\"PendingDoneOperation\",\"name\":\"" + name + "\",\"done\":false,\"metadata\":{\"pre\":\"ETest\",\"response\":{}}}"; + } + + private String completedDoneOpJson(String name) { + return "{" + + "\"_type\": \"CompletedDoneOperation\"," + + "\"name\": \"" + name + "\"," + + "\"done\": true," + + "\"response\": {\"pre\": \"ETest\", \"response\": {}}" + + "}"; } @Test @DisplayName("should get operation by name") void canGetOperationByName() throws IOException, InterruptedException, LibsodiumException { - String operationName = UUID.randomUUID().toString(); - String responseBody = "{\"name\":\"" + operationName + "\"}"; + String responseBody = "{\"name\":\"witness.test1\", \"done\": false}"; HttpResponse mockResponse = Mockito.mock(HttpResponse.class); Mockito.when(mockResponse.body()).thenReturn(responseBody); @@ -57,7 +69,7 @@ void canGetOperationByName() throws IOException, InterruptedException, Libsodium @DisplayName("Can list operations") void canListOperations() throws IOException, InterruptedException, LibsodiumException { HttpResponse mockResponse = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse.body()).thenReturn("[{}]"); + Mockito.when(mockResponse.body()).thenReturn("[{\"name\":\"witness.test1\", \"done\": false}]"); Mockito.when(mockResponse.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) .thenReturn(mockResponse); @@ -73,7 +85,7 @@ void canListOperations() throws IOException, InterruptedException, LibsodiumExce @DisplayName("Can list operations by type") void canListOperationsByType() throws IOException, InterruptedException, LibsodiumException { HttpResponse mockResponse = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse.body()).thenReturn(Utils.jsonStringify(Collections.singletonList(buildOperation(true, true)))); + Mockito.when(mockResponse.body()).thenReturn("[{\"name\":\"witness.test123\", \"done\": true, \"response\": {}}]"); Mockito.when(mockResponse.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) .thenReturn(mockResponse); @@ -85,7 +97,7 @@ void canListOperationsByType() throws IOException, InterruptedException, Libsodi assertEquals("GET", methodCaptor.getValue()); assertEquals(1, opsResponse.size()); - assertEquals("response", opsResponse.getFirst().getResponse()); + assertEquals("witness.test123", opsResponse.getFirst().getName()); } @Test @@ -105,90 +117,116 @@ void canDeleteOperationByName() throws IOException, InterruptedException, Libsod } @Test - @DisplayName("Does not wait for operation that is already done") + @DisplayName("Does not poll when operation is already done") void doesNotWaitForOperationThatIsAlreadyDone() throws IOException, InterruptedException, LibsodiumException { - Operation operation = buildOperation(true, true); + String opName = "locscheme." + UUID.randomUUID(); + String doneJson = doneLocSchemeOpJson(opName); - var result = operations.wait(operation); - verify(client, never()).fetch(anyString(), anyString(), isNull(), isNull()); - assertEquals(operation, result); + Operation op = org.cardanofoundation.signify.cesr.util.Utils.fromJson(doneJson, Operation.class); + operations.wait(op, Operation.class); + verifyNoInteractions(client); } @Test - @DisplayName("Returns when operation is done after first call") - void returnsWhenOperationIsDoneAfterFirstCall() throws IOException, InterruptedException, LibsodiumException { - Operation operation = buildOperation(true, true); + @DisplayName("Returns when operation is done after first poll") + void returnsWhenOperationIsDoneAfterFirstPoll() throws IOException, InterruptedException, LibsodiumException { + String opName = "locscheme." + UUID.randomUUID(); + String pendingJson = pendingLocSchemeOpJson(opName); + String doneJson = doneLocSchemeOpJson(opName); + + HttpResponse pendingResponse = Mockito.mock(HttpResponse.class); + Mockito.when(pendingResponse.body()).thenReturn(pendingJson); + Mockito.when(pendingResponse.statusCode()).thenReturn(200); + + HttpResponse doneResponse = Mockito.mock(HttpResponse.class); + Mockito.when(doneResponse.body()).thenReturn(doneJson); + Mockito.when(doneResponse.statusCode()).thenReturn(200); - HttpResponse mockResponse = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse.body()).thenReturn(Utils.jsonStringify(operation)); - Mockito.when(mockResponse.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) - .thenReturn(mockResponse); + .thenReturn(pendingResponse) + .thenReturn(doneResponse); - operation.setDone(false); - operations.wait(operation); - verify(client, times(1)).fetch(anyString(), anyString(), isNull()); + Operation op = org.cardanofoundation.signify.cesr.util.Utils.fromJson(pendingJson, Operation.class); + operations.wait(op, Operation.class); + // 1 initial fetch + 1 poll + verify(client, times(2)).fetch(anyString(), anyString(), isNull()); } @Test - @DisplayName("Returns when operation is done after second call") - void returnsWhenOperationIsDoneAfterSecondCall() throws IOException, InterruptedException, LibsodiumException { - Operation operation1 = buildOperation(false, false); - Operation operation2 = buildOperation(true, true); + @DisplayName("Returns when operation is done after second poll") + void returnsWhenOperationIsDoneAfterSecondPoll() throws IOException, InterruptedException, LibsodiumException { + String opName = "locscheme." + UUID.randomUUID(); + String pendingJson = pendingLocSchemeOpJson(opName); + String doneJson = doneLocSchemeOpJson(opName); - HttpResponse mockResponse1 = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse1.body()).thenReturn(Utils.jsonStringify(operation1)); - Mockito.when(mockResponse1.statusCode()).thenReturn(200); + HttpResponse pendingResponse = Mockito.mock(HttpResponse.class); + Mockito.when(pendingResponse.body()).thenReturn(pendingJson); + Mockito.when(pendingResponse.statusCode()).thenReturn(200); - HttpResponse mockResponse2 = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse2.body()).thenReturn(Utils.jsonStringify(operation2)); - Mockito.when(mockResponse2.statusCode()).thenReturn(200); + HttpResponse doneResponse = Mockito.mock(HttpResponse.class); + Mockito.when(doneResponse.body()).thenReturn(doneJson); + Mockito.when(doneResponse.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) - .thenReturn(mockResponse1) - .thenReturn(mockResponse2); + .thenReturn(pendingResponse) + .thenReturn(pendingResponse) + .thenReturn(doneResponse); Operations.WaitOptions options = Operations.WaitOptions.builder() - .maxSleep(10) - .build(); - operations.wait(operation1, options); + .maxSleep(10) + .build(); + Operation op = org.cardanofoundation.signify.cesr.util.Utils.fromJson(pendingJson, Operation.class); + operations.wait(op, Operation.class, options); + // 1 initial + 2 polls verify(client, times(3)).fetch(anyString(), anyString(), isNull()); } @Test @DisplayName("Returns when child operation is also done") void returnsWhenChildOperationIsAlsoDone() throws IOException, InterruptedException, LibsodiumException { - HttpResponse mockResponse1 = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse1.body()).thenReturn(Utils.jsonStringify(buildOperation(false, false))); - Mockito.when(mockResponse1.statusCode()).thenReturn(200); + String depName = "done." + UUID.randomUUID(); + String mainName = "registry." + UUID.randomUUID(); + + HttpResponse response1 = Mockito.mock(HttpResponse.class); + // main: registry op, pending, depends (depName) is not done + Mockito.when(response1.body()).thenReturn(pendingRegistryWithDependsJson(mainName, depName, false)); + Mockito.when(response1.statusCode()).thenReturn(200); - HttpResponse mockResponse2 = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse2.body()).thenReturn(Utils.jsonStringify(buildOperation(false, true))); - Mockito.when(mockResponse2.statusCode()).thenReturn(200); + HttpResponse response2 = Mockito.mock(HttpResponse.class); + Mockito.when(response2.body()).thenReturn(pendingDoneOpJson(depName)); + Mockito.when(response2.statusCode()).thenReturn(200); - HttpResponse mockResponse3 = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse3.body()).thenReturn(Utils.jsonStringify(buildOperation(true, true))); - Mockito.when(mockResponse3.statusCode()).thenReturn(200); + HttpResponse response3 = Mockito.mock(HttpResponse.class); + Mockito.when(response3.body()).thenReturn(completedDoneOpJson(depName)); + Mockito.when(response3.statusCode()).thenReturn(200); + + HttpResponse response4 = Mockito.mock(HttpResponse.class); + // main: registry op, now done (completed) + Mockito.when(response4.body()).thenReturn(completedRegistryOpJson(mainName, depName)); + Mockito.when(response4.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) - .thenReturn(mockResponse1) - .thenReturn(mockResponse2) - .thenReturn(mockResponse3); + .thenReturn(response1) // main: initial fetch - pending, depends not done + .thenReturn(response2) // dep: initial fetch - pending, no nested depends + .thenReturn(response3) // dep: poll - done + .thenReturn(response4); // main: poll - now done (completed) Operations.WaitOptions options = Operations.WaitOptions.builder() - .maxSleep(10) - .build(); - operations.wait(buildOperation(false, false), options); - verify(client, times(4)).fetch(anyString(), anyString(), isNull()); + .maxSleep(10) + .build(); + Operation mainOp = org.cardanofoundation.signify.cesr.util.Utils.fromJson( + pendingRegistryWithDependsJson(mainName, depName, false), Operation.class); + operations.wait(mainOp, org.cardanofoundation.signify.generated.keria.model.Operation.class, options); + verify(client, times(5)).fetch(anyString(), anyString(), isNull()); } @Test @DisplayName("Throw if aborting operation") void throwIfAbortingOperation() throws IOException, InterruptedException, LibsodiumException { - Operation operation = buildOperation(false, false); + String opName = "locscheme." + UUID.randomUUID(); HttpResponse mockResponse = Mockito.mock(HttpResponse.class); - Mockito.when(mockResponse.body()).thenReturn(Utils.jsonStringify(operation)); + Mockito.when(mockResponse.body()).thenReturn(pendingLocSchemeOpJson(opName)); Mockito.when(mockResponse.statusCode()).thenReturn(200); when(client.fetch(anyString(), anyString(), isNull())) @@ -199,31 +237,55 @@ void throwIfAbortingOperation() throws IOException, InterruptedException, Libsod .abortSignal(Operations.AbortSignal.builder().timeout(5000L).build()) .build(); - Exception exception = assertThrows(InterruptedException.class, () -> operations.wait(operation, options)); + Operation abortOp = org.cardanofoundation.signify.cesr.util.Utils.fromJson( + pendingLocSchemeOpJson(opName), Operation.class); + Exception exception = assertThrows(InterruptedException.class, + () -> operations.wait(abortOp, Operation.class, options)); assertEquals("Operation aborted: Timeout", exception.getMessage()); } + private String completedRegistryOpJson(String name, String depName) { + return "{" + + "\"_type\": \"CompletedRegistryOperation\"," + + "\"name\": \"" + name + "\"," + + "\"done\": \"true\"," + + "\"metadata\": {" + + "\"pre\": \"ETest\"," + + "\"anchor\": {\"pre\": \"ETest\", \"sn\": 0, \"d\": \"ETest\"}," + + "\"depends\": {" + + "\"_type\": \"CompletedDoneOperation\"," + + "\"name\": \"" + depName + "\"," + + "\"done\": true," + + "\"metadata\": {\"pre\": \"ETest\", \"response\": {}}" + + "}" + + "}," + + "\"response\": {\"anchor\": {\"pre\": \"ETest\", \"sn\": 0, \"d\": \"ETest\"}}" + + "}"; + } - Operation buildOperation(boolean done, boolean dependsDone) { - Operation operation = Operation.builder() - .name(UUID.randomUUID().toString()) - .response("response") - .done(done) - .build(); - - Operation depends = Operation.builder() - .name(UUID.randomUUID().toString()) - .response("depend") - .done(dependsDone) - .build(); - - Operation.Metadata metadata = Operation.Metadata.builder() - .depends(depends) - .properties(Map.of("key", "value")) - .build(); - operation.setMetadata(metadata); - return operation; + private String pendingLocSchemeOpJson(String name) { + return "{\"name\": \"" + name + "\"}"; } + private String doneLocSchemeOpJson(String name) { + return "{\"name\": \"" + name + "\", \"response\": {\"eid\": \"ETest\", \"scheme\": \"http\", \"url\": \"http://test\"}}"; + } + private String pendingRegistryWithDependsJson(String name, String depName, boolean depDone) { + return "{" + + "\"_type\": \"RegistryDoneOperation\"," + + "\"name\": \"" + name + "\"," + + "\"done\": false," + + "\"metadata\": {" + + "\"pre\": \"ETest\"," + + "\"anchor\": {\"pre\": \"ETest\", \"sn\": 0, \"d\": \"ETest\"}," + + "\"depends\": {" + + "\"_type\": \"PendingDoneOperation\"," + + "\"name\": \"" + depName + "\"," + + "\"done\": " + depDone + "," + + "\"metadata\": {\"pre\": \"ETest\", \"response\": {}}" + + "}" + + "}" + + "}"; + } } \ No newline at end of file diff --git a/src/test/java/org/cardanofoundation/signify/app/RegistryTest.java b/src/test/java/org/cardanofoundation/signify/app/RegistryTest.java index c6eeca14..b3f23995 100644 --- a/src/test/java/org/cardanofoundation/signify/app/RegistryTest.java +++ b/src/test/java/org/cardanofoundation/signify/app/RegistryTest.java @@ -63,8 +63,9 @@ void shouldCreateRegistry() throws Exception { when(mockedKeeper.getParams()).thenReturn(SaltyParams.builder().build()); HttpResponse mockedResponse = mock(HttpResponse.class); - when(mockedClient.fetch(eq("/identifiers/a name/registries"), eq("POST"), any(), any())) + when(mockedClient.fetch(eq("/identifiers/a name/registries"), eq("POST"), any())) .thenReturn(mockedResponse); + when(mockedResponse.body()).thenReturn("{\"name\":\"registry.test\",\"done\":false}"); CreateRegistryArgs args = CreateRegistryArgs.builder() .name("a name") @@ -73,8 +74,8 @@ void shouldCreateRegistry() throws Exception { .build(); var actual = registries.create(args); - assertEquals("{\"v\":\"KERI10JSON0000c5_\",\"t\":\"vcp\",\"d\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"i\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"ii\":\"hab prefix\",\"s\":\"0\",\"c\":[\"NB\"],\"bt\":\"0\",\"b\":[],\"n\":\"\"}", actual.getRegser().getRaw()); - assertEquals("{\"v\":\"KERI10JSON0000f4_\",\"t\":\"ixn\",\"d\":\"EE5R61289Xnpxc2M-euPtsAkp849tUdNJ7DuyBeSiRtm\",\"i\":\"hab prefix\",\"s\":\"1\",\"p\":\"a digest\",\"a\":[{\"i\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"s\":\"0\",\"d\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\"}]}", actual.getSerder().getRaw()); + assertEquals("{\"v\":\"KERI10JSON0000c5_\",\"t\":\"vcp\",\"d\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"i\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"ii\":\"hab prefix\",\"s\":\"0\",\"c\":[\"NB\"],\"bt\":\"0\",\"b\":[],\"n\":\"\"}", actual.regser().getRaw()); + assertEquals("{\"v\":\"KERI10JSON0000f4_\",\"t\":\"ixn\",\"d\":\"EE5R61289Xnpxc2M-euPtsAkp849tUdNJ7DuyBeSiRtm\",\"i\":\"hab prefix\",\"s\":\"1\",\"p\":\"a digest\",\"a\":[{\"i\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\",\"s\":\"0\",\"d\":\"EMppKX_JxXBuL_xE3A_a6lOcseYwaB7jAvZ0YFdgecXX\"}]}", actual.serder().getRaw()); } @Test diff --git a/src/test/java/org/cardanofoundation/signify/e2e/BaseIntegrationTest.java b/src/test/java/org/cardanofoundation/signify/e2e/BaseIntegrationTest.java index 34178f20..bc3a5715 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/BaseIntegrationTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/BaseIntegrationTest.java @@ -6,7 +6,6 @@ import lombok.Setter; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.e2e.utils.TestUtils; import java.util.ArrayList; @@ -14,6 +13,8 @@ import java.util.concurrent.CompletableFuture; import org.cardanofoundation.signify.generated.keria.model.HabState; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import static org.cardanofoundation.signify.e2e.utils.TestUtils.unchecked; @@ -44,8 +45,8 @@ public static List getOobisAsync(GetOobisArgs... getOobisArgs) { return getOobisFutures.stream().map(CompletableFuture::join).toList(); } - public static List getKeyStateQuerAsync(GetKeyStateQueryArgs... getKeyStateQueryArgs) { - List> getKeyStatesFutures = new ArrayList<>(); + public static List getKeyStateQuerAsync(GetKeyStateQueryArgs... getKeyStateQueryArgs) { + List> getKeyStatesFutures = new ArrayList<>(); for (GetKeyStateQueryArgs getKeyStateQueryArg : getKeyStateQueryArgs) { getKeyStatesFutures.add(getKeyStateFuture(getKeyStateQueryArg.signifyClient, getKeyStateQueryArg.pre, getKeyStateQueryArg.sn)); } @@ -116,7 +117,7 @@ static CompletableFuture getOobisFuture(SignifyClient client, String name, )); } - static CompletableFuture getKeyStateFuture(SignifyClient client, String pre, String sn) { + static CompletableFuture getKeyStateFuture(SignifyClient client, String pre, String sn) { return CompletableFuture.supplyAsync(unchecked(() -> client.keyStates().query(pre, sn) )); @@ -129,7 +130,7 @@ static CompletableFuture resolveOobisFuture(SignifyClient signifyClient, S })); } - static CompletableFuture waitOperationFuture(SignifyClient client, Object op) { + static CompletableFuture waitOperationFuture(SignifyClient client, Operation op) { return CompletableFuture.supplyAsync(unchecked(() -> TestUtils.waitOperation(client, op) )); @@ -198,7 +199,7 @@ public static class GetKeyStateQueryArgs { @AllArgsConstructor public static class WaitOperationArgs { private SignifyClient signifyClient; - private Object op; + private Operation op; } @Getter diff --git a/src/test/java/org/cardanofoundation/signify/e2e/ChallengesTest.java b/src/test/java/org/cardanofoundation/signify/e2e/ChallengesTest.java index 728822c2..3d98427c 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/ChallengesTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/ChallengesTest.java @@ -2,15 +2,9 @@ import org.cardanofoundation.signify.app.Contacting; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; -import org.cardanofoundation.signify.cesr.Serder; -import org.cardanofoundation.signify.generated.keria.model.Challenge; -import org.cardanofoundation.signify.generated.keria.model.Contact; -import org.cardanofoundation.signify.generated.keria.model.OOBI; -import org.cardanofoundation.signify.generated.keria.model.Tier; +import org.cardanofoundation.signify.generated.keria.model.*; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,7 +12,6 @@ import java.util.*; import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.cardanofoundation.signify.e2e.utils.TestUtils.*; public class ChallengesTest { @@ -26,7 +19,7 @@ public class ChallengesTest { private final String url = "http://127.0.0.1:3901"; private final String bootUrl = "http://127.0.0.1:3903"; private static SignifyClient client1, client2; - private HashMap opResponse, opResponse1, opResponse2; + private String aid1Prefix, aid2Prefix; @Test void ChallengeTest() throws Exception { @@ -67,16 +60,15 @@ void ChallengeTest() throws Exception { "BLskRTInXnMxWaGqcpSyMgo0nYbalW99cGZESrz3zapM", "BIKKuvBwpmDVA4Ds-EpL5bt9OqPzWPja2LigFYZN2YfX" )); - EventResult icpResult1 = client1.identifiers().create("alice", kargs1); - Operation op1 = Operation.fromObject(waitOperation(client1, icpResult1.op())); - opResponse1 = (HashMap) op1.getResponse(); - EventResult rpyResult1 = client1.identifiers().addEndRole( + var icpResult1 = client1.identifiers().create("alice", kargs1); + aid1Prefix = waitForCompleted(client1, icpResult1.op(), CompletedWitnessOperation.class).getResponse().getI(); + var rpyResult1 = client1.identifiers().addEndRole( "alice", "agent", client1.getAgent().getPre(), null); - waitOperation(client1, rpyResult1.op()); - System.out.println("Alice's AID: " + opResponse1.get("i")); + waitForCompleted(client1, rpyResult1.op()); + System.out.println("Alice's AID: " + aid1Prefix); CreateIdentifierArgs kargs2 = new CreateIdentifierArgs(); kargs2.setToad(3); @@ -85,16 +77,15 @@ void ChallengeTest() throws Exception { "BLskRTInXnMxWaGqcpSyMgo0nYbalW99cGZESrz3zapM", "BIKKuvBwpmDVA4Ds-EpL5bt9OqPzWPja2LigFYZN2YfX" )); - EventResult icpResult2 = client2.identifiers().create("bob", kargs2); - Operation op2 = Operation.fromObject(waitOperation(client2, icpResult2.op())); - opResponse2 = (HashMap) op2.getResponse(); + var icpResult2 = client2.identifiers().create("bob", kargs2); + aid2Prefix = waitForCompleted(client2, icpResult2.op(), CompletedWitnessOperation.class).getResponse().getI(); - EventResult rpyResult2 = client2.identifiers().addEndRole( + var rpyResult2 = client2.identifiers().addEndRole( "bob", "agent", client2.getAgent().getPre(), null); - waitOperation(client2, rpyResult2.op()); + waitForCompleted(client2, rpyResult2.op()); // Exchange OOBIs OOBI oobi1 = client1.oobis().get("alice", "agent").get(); @@ -114,17 +105,16 @@ void ChallengeTest() throws Exception { assertEquals(0, bobContact.getChallenges().size()); // Bob responds to Alice's challenge - client2.challenges().respond("bob", (String) opResponse1.get("i"), challenge1_small.getWords()); + client2.challenges().respond("bob", aid1Prefix, challenge1_small.getWords()); System.out.println("Bob responded to Alice's challenge with signed words"); // Alice verifies Bob's response - Operation verifyResult = client1.challenges().verify((String) opResponse2.get("i"), challenge1_small.getWords()); - Operation op = Operation.fromObject(waitOperation(client1, verifyResult)); + ChallengeOperation verifyResult = client1.challenges().verify(aid2Prefix, challenge1_small.getWords()); + CompletedChallengeOperation verifyOp = waitForCompleted(client1, verifyResult, CompletedChallengeOperation.class); System.out.println("Alice verified challenge response"); - opResponse = (HashMap) op.getResponse(); - Serder exn = new Serder((Map) opResponse.get("exn")); - client1.challenges().responded((String) opResponse2.get("i"), (String) exn.getKed().get("d")); + ChallengeOperationResponseExn exn = verifyOp.getResponse().getExn(); + client1.challenges().responded(aid2Prefix, exn.getD()); System.out.println("Alice marked challenge response as accepted"); // Check Bob's challenge in contacts diff --git a/src/test/java/org/cardanofoundation/signify/e2e/CredentialsTest.java b/src/test/java/org/cardanofoundation/signify/e2e/CredentialsTest.java index efd3cb4c..9d44728d 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/CredentialsTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/CredentialsTest.java @@ -116,7 +116,7 @@ public void single_signature_credentials() throws Exception { registryArgs.setRegistryName(registryName); try { RegistryResult regResult = issuerClient.registries().create(registryArgs); - waitOperation(issuerClient, regResult.op()); + waitForCompleted(issuerClient, regResult.op()); } catch (IOException | InterruptedException | DigestException e) { throw new RuntimeException(e); } @@ -178,7 +178,7 @@ public void single_signature_credentials() throws Exception { cData.setA(a); IssueCredentialResult issResult = issuerClient.credentials().issue(issuerAid.name, cData); - waitOperation(issuerClient, issResult.getOp()); + waitForCompleted(issuerClient, issResult.getOp()); return issResult.getAcdc().getKed().get("d").toString(); }); @@ -265,8 +265,8 @@ public void single_signature_credentials() throws Exception { Exchanging.ExchangeMessageResult result = issuerClient.ipex().grant(gArgs); List holderAidPrefix = Collections.singletonList(holderAid.prefix); - Object op = issuerClient.ipex().submitGrant(issuerAid.name, result.exn(), result.sigs(), result.atc(), holderAidPrefix); - waitOperation(issuerClient, op); + ExchangeOperation op = issuerClient.ipex().submitGrant(issuerAid.name, result.exn(), result.sigs(), result.atc(), holderAidPrefix); + waitForCompleted(issuerClient, op); } catch (IOException | InterruptedException | DigestException | LibsodiumException e) { throw new RuntimeException(e); } @@ -300,10 +300,10 @@ public void single_signature_credentials() throws Exception { iargs.setDatetime(createTimestamp()); Exchanging.ExchangeMessageResult result = holderClient.ipex().admit(iargs); - Object op = holderClient.ipex().submitAdmit( + ExchangeOperation op = holderClient.ipex().submitAdmit( holderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(issuerAid.prefix) ); - waitOperation(holderClient, op); + waitForCompleted(holderClient, op); markAndRemoveNotification(holderClient, grantNotification); } catch (Exception e) { throw new RuntimeException(e); @@ -343,10 +343,10 @@ public void single_signature_credentials() throws Exception { try { Exchanging.ExchangeMessageResult result = verifierClient.ipex().apply(args); - Object op = verifierClient.ipex().submitApply( + ExchangeOperation op = verifierClient.ipex().submitApply( verifierAid.name, result.exn(), result.sigs(), Collections.singletonList(holderAid.prefix) ); - waitOperation(verifierClient, op); + waitForCompleted(verifierClient, op); } catch (Exception e) { throw new RuntimeException(e); } @@ -395,8 +395,8 @@ public void single_signature_credentials() throws Exception { offerArgs.setDatetime(createTimestamp()); Exchanging.ExchangeMessageResult result = holderClient.ipex().offer(offerArgs); - Object op = holderClient.ipex().submitOffer(holderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(verifierAid.prefix)); - waitOperation(holderClient, op); + ExchangeOperation op = holderClient.ipex().submitOffer(holderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(verifierAid.prefix)); + waitForCompleted(holderClient, op); } catch (Exception e) { throw new RuntimeException(e); } @@ -432,10 +432,10 @@ public void single_signature_credentials() throws Exception { agreeArgs.setDatetime(createTimestamp()); Exchanging.ExchangeMessageResult result = verifierClient.ipex().agree(agreeArgs); - Object op = verifierClient.ipex().submitAgree( + ExchangeOperation op = verifierClient.ipex().submitAgree( verifierAid.name, result.exn(), result.sigs(), Collections.singletonList(holderAid.prefix) ); - waitOperation(verifierClient, op); + waitForCompleted(verifierClient, op); } catch (Exception e) { throw new RuntimeException(e); } @@ -477,10 +477,10 @@ public void single_signature_credentials() throws Exception { Exchanging.ExchangeMessageResult result = holderClient.ipex().grant(grantArgs); - Object op = holderClient.ipex().submitGrant( + ExchangeOperation op = holderClient.ipex().submitGrant( holderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(verifierAid.prefix) ); - waitOperation(holderClient, op); + waitForCompleted(holderClient, op); } catch (Exception e) { throw new RuntimeException(e); } @@ -507,10 +507,10 @@ public void single_signature_credentials() throws Exception { admitArgs.setDatetime(createTimestamp()); Exchanging.ExchangeMessageResult result = verifierClient.ipex().admit(admitArgs); - Object op = verifierClient.ipex().submitAdmit( + ExchangeOperation op = verifierClient.ipex().submitAdmit( verifierAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(holderAid.prefix) ); - waitOperation(verifierClient, op); + waitForCompleted(verifierClient, op); markAndRemoveNotification(verifierClient, verifierGrantNote); Credential verifierCredential = verifierClient.credentials().get(qviCredentialId).get(); @@ -547,7 +547,7 @@ public void single_signature_credentials() throws Exception { try { RegistryResult regResult = holderClient.registries().create(registryArgs); - waitOperation(holderClient, regResult.op()); + waitForCompleted(holderClient, regResult.op()); List registriesList = holderClient.registries().list(holderAid.name); assertTrue(!registriesList.isEmpty()); @@ -595,7 +595,7 @@ public void single_signature_credentials() throws Exception { cData.setE(e); IssueCredentialResult result = holderClient.credentials().issue(holderAid.name, cData); - waitOperation(holderClient, result.getOp()); + waitForCompleted(holderClient, result.getOp()); return result.getAcdc().getKed().get("d").toString(); } catch (Exception e) { throw new RuntimeException(e); @@ -618,10 +618,10 @@ public void single_signature_credentials() throws Exception { grantArgs.setDatetime(dt); Exchanging.ExchangeMessageResult result = holderClient.ipex().grant(grantArgs); - Object op = holderClient.ipex().submitGrant( + ExchangeOperation op = holderClient.ipex().submitGrant( holderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(legalEntityAid.prefix) ); - waitOperation(holderClient, op); + waitForCompleted(holderClient, op); } catch (Exception e) { throw new RuntimeException(e); } @@ -640,10 +640,10 @@ public void single_signature_credentials() throws Exception { admitArgs.setDatetime(createTimestamp()); Exchanging.ExchangeMessageResult result = legalEntityClient.ipex().admit(admitArgs); - Object op = legalEntityClient.ipex().submitAdmit( + ExchangeOperation op = legalEntityClient.ipex().submitAdmit( legalEntityAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(holderAid.prefix) ); - waitOperation(legalEntityClient, op); + waitForCompleted(legalEntityClient, op); markAndRemoveNotification(legalEntityClient, grantNotification); } catch (Exception e) { throw new RuntimeException(e); @@ -688,7 +688,7 @@ public void single_signature_credentials() throws Exception { testSteps.step("Issuer revoke QVI credential", () -> { try { RevokeCredentialResult revokeOperation = issuerClient.credentials().revoke(issuerAid.name, qviCredentialId, null); - waitOperation(issuerClient, revokeOperation.getOp()); + waitForCompleted(issuerClient, revokeOperation.getOp()); Credential issuerCredential = issuerClient.credentials().get(qviCredentialId).get(); CredentialState status = issuerCredential.getStatus(); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/DelegationMultisigTest.java b/src/test/java/org/cardanofoundation/signify/e2e/DelegationMultisigTest.java index a1340368..eac6d6e4 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/DelegationMultisigTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/DelegationMultisigTest.java @@ -2,13 +2,18 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.e2e.utils.MultisigUtils; import org.cardanofoundation.signify.e2e.utils.Retry; import org.cardanofoundation.signify.e2e.utils.TestSteps; import org.cardanofoundation.signify.e2e.utils.TestUtils; +import org.cardanofoundation.signify.e2e.utils.TestUtils.Notification; +import org.cardanofoundation.signify.generated.keria.model.CompletedDelegatorOperation; +import org.cardanofoundation.signify.generated.keria.model.DelegatorOperation; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -86,7 +91,7 @@ void delegationMultisigTest() throws Exception { // First member start the creation of a multisig identifier // Create a multisig AID for the GEDA. // Skip if a GEDA AID has already been incepted. - Object otor1Object = testSteps.step(String.format("%s(%s) initiated delegator multisig, waiting for %s(%s) to join...", + KelOperation otor1 = testSteps.step(String.format("%s(%s) initiated delegator multisig, waiting for %s(%s) to join...", delegator1Name, delegator1Aid.getPrefix(), delegator2Name, delegator2Aid.getPrefix()), () -> { MultisigUtils.StartMultisigInceptArgs startMultisigInceptArgs = MultisigUtils.StartMultisigInceptArgs @@ -109,8 +114,6 @@ void delegationMultisigTest() throws Exception { } }); - Operation otor1 = Operation.fromObject(otor1Object); - TestUtils.Notification ntor; Retry.RetryOptions options = Retry.RetryOptions.builder() .maxSleep(10000) @@ -130,8 +133,7 @@ void delegationMultisigTest() throws Exception { .msgSaid(ntor.getA().getD()) .build(); - Object otor2Object = MultisigUtils.acceptMultisigIncept(delegator2Client, acceptMultisigInceptArgs); - Operation otor2 = Operation.fromObject(otor2Object); + KelOperation otor2 = MultisigUtils.acceptMultisigIncept(delegator2Client, acceptMultisigInceptArgs); String torpre = otor1.getName().split("\\.")[1]; @@ -152,7 +154,7 @@ void delegationMultisigTest() throws Exception { String delegatorGroupNameOobi = testSteps.step(String.format("Add and resolve delegator OOBI %s(%s)", delegatorGroupName, adelegatorGroupName.getPrefix()), () -> { String timestamp = createTimestamp(); try { - List opList1 = MultisigUtils.addEndRoleMultisig(delegator1Client, + List opList1 = MultisigUtils.addEndRoleMultisig(delegator1Client, delegatorGroupName, delegator1Aid, List.of(delegator2Aid), @@ -160,7 +162,7 @@ void delegationMultisigTest() throws Exception { timestamp, true); - List opList2 = MultisigUtils.addEndRoleMultisig(delegator2Client, + List opList2 = MultisigUtils.addEndRoleMultisig(delegator2Client, delegatorGroupName, delegator2Aid, List.of(delegator1Aid), @@ -199,7 +201,7 @@ void delegationMultisigTest() throws Exception { new GetOrCreateContactArgs(delegatee2Client, delegateeGroupName, oobiGtor) ); - Object opDelegatee1 = testSteps.step(delegatee1Name + "(" + delegatee1Aid.getPrefix() + ") initiated delegatee multisig, waiting for " + KelOperation opDelegatee1 = testSteps.step(delegatee1Name + "(" + delegatee1Aid.getPrefix() + ") initiated delegatee multisig, waiting for " + delegatee2Name + "(" + delegatee2Aid.getPrefix() + ") to join...", () -> { MultisigUtils.StartMultisigInceptArgs startMultisigInceptArgs = MultisigUtils.StartMultisigInceptArgs .builder() @@ -233,7 +235,7 @@ void delegationMultisigTest() throws Exception { .groupName(delegateeGroupName) .msgSaid(ntee.getA().getD()) .build(); - Object opDelegatee2 = MultisigUtils.acceptMultisigIncept(delegatee2Client, acceptMultisigInceptArgs); + KelOperation opDelegatee2 = MultisigUtils.acceptMultisigIncept(delegatee2Client, acceptMultisigInceptArgs); System.out.println(delegatee2Name + " joined multisig, waiting for delegator..."); HabState agtee1 = delegatee1Client.identifiers().get(delegateeGroupName).get(); @@ -242,8 +244,8 @@ void delegationMultisigTest() throws Exception { assertEquals(agtee1.getPrefix(), agtee2.getPrefix()); assertEquals(agtee1.getName(), agtee2.getName()); - String teepre = Operation.fromObject(opDelegatee1).getName().split("\\.")[1]; - assertEquals(teepre, Operation.fromObject(opDelegatee2).getName().split("\\.")[1]); + String teepre = opDelegatee1.getName().split("\\.")[1]; + assertEquals(teepre, opDelegatee2.getName().split("\\.")[1]); testSteps.step("delegator anchors/approves delegation", () -> { // GEDA anchors delegation with an interaction event. @@ -254,7 +256,7 @@ void delegationMultisigTest() throws Exception { }}; try { - Object delApprOp1 = MultisigUtils.delegateMultisig( + DelegatorOperation delApprOp1 = MultisigUtils.delegateMultisig( delegator1Client, delegator1Aid, Collections.singletonList(delegator2Aid), @@ -262,7 +264,7 @@ void delegationMultisigTest() throws Exception { anchor, true); - Object delApprOp2 = MultisigUtils.delegateMultisig( + DelegatorOperation delApprOp2 = MultisigUtils.delegateMultisig( delegator2Client, delegator2Aid, Collections.singletonList(delegator1Aid), @@ -270,11 +272,11 @@ void delegationMultisigTest() throws Exception { anchor, false); - Operation dresult1 = waitOperation(delegator1Client, delApprOp1); - Object responseDresult1 = dresult1.getResponse(); + CompletedDelegatorOperation dresult1 = waitForCompleted(delegator1Client, delApprOp1, CompletedDelegatorOperation.class); + String responseDresult1 = dresult1.getName(); - Operation dresult2 = waitOperation(delegator2Client, delApprOp2); - Object responseDresult2 = dresult2.getResponse(); + CompletedDelegatorOperation dresult2 = waitForCompleted(delegator2Client, delApprOp2, CompletedDelegatorOperation.class); + String responseDresult2 = dresult2.getName(); assertEquals(responseDresult1, responseDresult2); waitAndMarkNotification(delegator1Client, "/multisig/ixn"); @@ -283,8 +285,8 @@ void delegationMultisigTest() throws Exception { } }); - Object queryOp1 = delegator1Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); - Object queryOp2 = delegator2Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); + QueryOperation queryOp1 = delegator1Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); + QueryOperation queryOp2 = delegator2Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); waitOperationAsync( new WaitOperationArgs(delegator1Client, queryOp1), @@ -292,8 +294,8 @@ void delegationMultisigTest() throws Exception { ); // QARs query the GEDA's key state - Object ksteetor1 = delegatee1Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); - Object ksteetor2 = delegatee2Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); + QueryOperation ksteetor1 = delegatee1Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); + QueryOperation ksteetor2 = delegatee2Client.keyStates().query(adelegatorGroupName.getPrefix(), "1", null); waitOperationAsync( new WaitOperationArgs(delegatee1Client, ksteetor1), diff --git a/src/test/java/org/cardanofoundation/signify/e2e/DelegationTest.java b/src/test/java/org/cardanofoundation/signify/e2e/DelegationTest.java index 68051e8e..b6dc0bf1 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/DelegationTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/DelegationTest.java @@ -2,14 +2,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; -import org.cardanofoundation.signify.cesr.Salter; import org.cardanofoundation.signify.e2e.utils.TestSteps; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.cardanofoundation.signify.generated.keria.model.Tier; import org.junit.jupiter.api.Test; @@ -62,17 +61,17 @@ void delegationTest() throws Exception { "BLskRTInXnMxWaGqcpSyMgo0nYbalW99cGZESrz3zapM", "BIKKuvBwpmDVA4Ds-EpL5bt9OqPzWPja2LigFYZN2YfX")); kargs.setWits(wits); - EventResult icpResult1 = client1.identifiers().create("delegator", kargs); - waitOperation(client1, icpResult1.op()); + var icpResult1 = client1.identifiers().create("delegator", kargs); + waitForCompleted(client1, icpResult1.op()); HabState ator = client1.identifiers().get("delegator").get(); - EventResult rpyResult1 = client1.identifiers().addEndRole( + var rpyResult1 = client1.identifiers().addEndRole( "delegator", "agent", client1.getAgent().getPre(), null ); - waitOperation(client1, rpyResult1.op()); + waitForCompleted(client1, rpyResult1.op()); // Client 2 resolves delegator OOBI OOBI oobi1 = client1.oobis().get("delegator", "agent").get(); @@ -83,8 +82,8 @@ void delegationTest() throws Exception { // Client 2 creates delegate AID CreateIdentifierArgs delpre = new CreateIdentifierArgs(); delpre.setDelpre(ator.getPrefix()); - EventResult icpResult2 = client2.identifiers().create("delegate", delpre); - Operation op2 = Operation.fromObject(icpResult2.op()); + var icpResult2 = client2.identifiers().create("delegate", delpre); + KelOperation op2 = icpResult2.op(); opResponseName = op2.getName(); String delegatePrefix = opResponseName.split("\\.")[1]; System.out.println("Delegate's prefix: " + delegatePrefix); @@ -97,20 +96,20 @@ void delegationTest() throws Exception { anchor.put("d", delegatePrefix); testSteps.step("delegator approves delegation", () -> { - EventResult result = retry(unchecked(() -> { - EventResult apprDelRes = client1.delegations().approve("delegator", anchor); - waitOperation(client1, apprDelRes.op()); + var result = retry(unchecked(() -> { + var apprDelRes = client1.delegations().approve("delegator", anchor); + waitForCompleted(client1, apprDelRes.op()); return apprDelRes; })); List> approDelResList = (List>) result.serder().getKed().get("a"); assertEquals(approDelResList.getFirst(), anchor); }); - Object op3 = client2.keyStates().query(ator.getPrefix(), "1", null); - waitOperation(client2, op3); + QueryOperation op3 = client2.keyStates().query(ator.getPrefix(), "1", null); + waitForCompleted(client2, op3); // Client 2 check approval - waitOperation(client2, op2); + waitForCompleted(client2, op2); HabState aid2 = client2.identifiers().get("delegate").get(); assertEquals(delegatePrefix, aid2.getPrefix()); System.out.println("Delegation approved for aid: " + aid2.getPrefix()); @@ -118,13 +117,13 @@ void delegationTest() throws Exception { List clientList = new ArrayList<>(Arrays.asList(client1, client2)); assertOperations(clientList); - EventResult rpyResult2 = client2.identifiers().addEndRole( + var rpyResult2 = client2.identifiers().addEndRole( "delegate", "agent", client2.getAgent().getPre(), null ); - waitOperation(client2, rpyResult2.op()); + waitForCompleted(client2, rpyResult2.op()); Object oobis = client2.oobis().get("delegate", null).get(); OOBI oobiBody = (OOBI) oobis; List oobisResponse = oobiBody.getOobis(); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/MultisigHolderTest.java b/src/test/java/org/cardanofoundation/signify/e2e/MultisigHolderTest.java index 5ae7e049..1bb8da74 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/MultisigHolderTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/MultisigHolderTest.java @@ -1,7 +1,6 @@ package org.cardanofoundation.signify.e2e; import org.cardanofoundation.signify.app.Exchanging; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.IdentifierListResponse; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialData; @@ -17,11 +16,15 @@ import org.cardanofoundation.signify.generated.keria.model.Credential; import org.cardanofoundation.signify.generated.keria.model.CredentialSad; import org.cardanofoundation.signify.generated.keria.model.CredentialState; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; import org.cardanofoundation.signify.generated.keria.model.ExchangeResource; +import org.cardanofoundation.signify.generated.keria.model.ExchangeOperation; import org.cardanofoundation.signify.generated.keria.model.Exn; import org.cardanofoundation.signify.generated.keria.model.ExnMultisig; import org.cardanofoundation.signify.generated.keria.model.GroupMember; +import org.cardanofoundation.signify.generated.keria.model.GroupOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import org.cardanofoundation.signify.core.Eventing; import org.cardanofoundation.signify.e2e.utils.MultisigUtils.AcceptMultisigInceptArgs; import org.cardanofoundation.signify.e2e.utils.MultisigUtils.StartMultisigInceptArgs; @@ -29,7 +32,11 @@ import org.cardanofoundation.signify.e2e.utils.ResolveEnv; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.OOBIOperation; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.PendingGroupOperation; import org.cardanofoundation.signify.generated.keria.model.Registry; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -94,32 +101,32 @@ void multisigHolderTest() throws Exception { oobis2 = getOobisIndexAt0(oobis.get(1)); oobis3 = getOobisIndexAt0(oobis.get(2)); - Object op1 = client1.oobis().resolve(oobis2, "member2"); - op1 = waitOperation(client1, op1); + OOBIOperation op1 = client1.oobis().resolve(oobis2, "member2"); + waitForCompleted(client1, op1); op1 = client1.oobis().resolve(oobis3, "member3"); - op1 = waitOperation(client1, op1); + waitForCompleted(client1, op1); op1 = client1.oobis().resolve(SCHEMA_OOBI, "schema"); - op1 = waitOperation(client1, op1); + waitForCompleted(client1, op1); System.out.println("Member1 resolved 3 OOBIs"); - Object op2 = client2.oobis().resolve(oobis1, "member1"); - op2 = waitOperation(client2, op2); + OOBIOperation op2 = client2.oobis().resolve(oobis1, "member1"); + waitForCompleted(client2, op2); op2 = client2.oobis().resolve(oobis3, "member3"); - op2 = waitOperation(client2, op2); + waitForCompleted(client2, op2); op2 = client2.oobis().resolve(SCHEMA_OOBI, "schema"); - op2 = waitOperation(client2, op2); + waitForCompleted(client2, op2); System.out.println("Member2 resolved 3 OOBIs"); - Object op3 = client3.oobis().resolve(oobis1, "member1"); - op3 = waitOperation(client3, op3); + OOBIOperation op3 = client3.oobis().resolve(oobis1, "member1"); + waitForCompleted(client3, op3); op3 = client3.oobis().resolve(oobis2, "member2"); - op3 = waitOperation(client3, op3); + waitForCompleted(client3, op3); op3 = client3.oobis().resolve(SCHEMA_OOBI, "schema"); - op3 = waitOperation(client3, op3); + waitForCompleted(client3, op3); System.out.println("Member3 resolved 3 OOBIs"); // First member start the creation of a multisig identifier - op1 = startMultisigIncept(client1, new StartMultisigInceptArgs( + KelOperation gop1 = startMultisigIncept(client1, new StartMultisigInceptArgs( "holder", aid1.getName(), Arrays.asList(aid1.getPrefix(), aid2.getPrefix()), @@ -134,7 +141,7 @@ void multisigHolderTest() throws Exception { // Second member check notifications and join the multisig String msgSaid = waitAndMarkNotification(client2, "/multisig/icp"); System.out.println("Member2 received exchange message to join multisig"); - op2 = acceptMultisigIncept(client2, new AcceptMultisigInceptArgs( + KelOperation gop2 = acceptMultisigIncept(client2, new AcceptMultisigInceptArgs( "holder", aid2.getName(), msgSaid @@ -142,8 +149,8 @@ void multisigHolderTest() throws Exception { System.out.println("Member2 joined multisig, waiting for others..."); // Check for completion - op1 = waitOperation(client1, op1); - op2 = waitOperation(client2, op2); + waitForCompleted(client1, gop1); + waitForCompleted(client2, gop2); System.out.println("Multisig created!"); IdentifierListResponse identifiers1 = client1.identifiers().list(); @@ -182,8 +189,8 @@ void multisigHolderTest() throws Exception { String timestamp = createTimestamp(); - EventResult endRoleRes = client1.identifiers().addEndRole("holder", "agent", eid1, timestamp); - op1 = endRoleRes.op(); + var endRoleRes = client1.identifiers().addEndRole("holder", "agent", eid1, timestamp); + EndRoleOperation eop1 = endRoleRes.op(); Serder rpy = endRoleRes.serder(); List sigs = endRoleRes.sigs(); @@ -210,7 +217,7 @@ void multisigHolderTest() throws Exception { .map(KeyStateRecord::getI) .collect(Collectors.toList()); - Object resp = client1.exchanges().send( + Exn resp = client1.exchanges().send( "member1", "multisig", aid1, @@ -236,7 +243,7 @@ void multisigHolderTest() throws Exception { endRoleRes = client2. identifiers(). addEndRole("holder", rpyrole, rpyeid, rpystamp); - op2 = endRoleRes.op(); + EndRoleOperation eop2 = endRoleRes.op(); rpy = endRoleRes.serder(); sigs = endRoleRes.sigs(); @@ -277,15 +284,15 @@ void multisigHolderTest() throws Exception { System.out.println("Member2 authorized agent role to %s, waiting for others to authorize..." + eid1); // Check for completion - op1 = waitOperation(client1, op1); - op2 = waitOperation(client2, op2); + waitForCompleted(client1, eop1); + waitForCompleted(client2, eop2); System.out.println("End role authorization for agent " + eid1 + " completed!"); System.out.println("Starting multisig end role authorization for agent " + eid2); endRoleRes = client1.identifiers() .addEndRole("holder", "agent", eid2, timestamp); - op1 = endRoleRes.op(); + eop1 = endRoleRes.op(); rpy = endRoleRes.serder(); sigs = endRoleRes.sigs(); @@ -340,7 +347,7 @@ void multisigHolderTest() throws Exception { endRoleRes = client2. identifiers(). addEndRole("holder", rpyrole, rpyeid, rpystamp); - op2 = endRoleRes.op(); + eop2 = endRoleRes.op(); rpy = endRoleRes.serder(); sigs = endRoleRes.sigs(); @@ -382,8 +389,8 @@ void multisigHolderTest() throws Exception { System.out.println("Member2 authorized agent role to %s, waiting for others to authorize..." + eid1); // Check for completion - op1 = waitOperation(client1, op1); - op2 = waitOperation(client2, op2); + waitForCompleted(client1, eop1); + waitForCompleted(client2, eop2); System.out.println("End role authorization for agent " + eid2 + " completed!"); // Holder resolve multisig OOBI @@ -391,8 +398,8 @@ void multisigHolderTest() throws Exception { List oobisResponse = oobisRes.getOobis(); String oobiMultisig = oobisResponse.get(0).split("/agent/")[0]; - op3 = client3.oobis().resolve(oobiMultisig, "holder"); - waitOperation(client3, op3); + OOBIOperation oop3 = client3.oobis().resolve(oobiMultisig, "holder"); + waitForCompleted(client3, oop3); System.out.println("Issuer resolved multisig holder OOBI"); HabState holderAid = client1.identifiers().get("holder").get(); @@ -432,7 +439,7 @@ void multisigHolderTest() throws Exception { Exn getExn = exnRes.getExn(); - op1 = multisigAdmitCredential(client1, + ExchangeOperation exop1 = multisigAdmitCredential(client1, "holder", "member1", getExn.getD(), @@ -456,7 +463,7 @@ void multisigHolderTest() throws Exception { .map(KeyStateRecord::getI) .toList(); - op2 = multisigAdmitCredential(client2, + ExchangeOperation exop2 = multisigAdmitCredential(client2, "holder", "member2", getExn.getD(), @@ -465,8 +472,8 @@ void multisigHolderTest() throws Exception { ); System.out.println("Member1 admitted credential with SAID : " + exnGetAcdc.get("d")); - waitOperation(client1, op1); - waitOperation(client2, op2); + waitForCompleted(client1, exop1); + waitForCompleted(client2, exop2); CredentialFilter args = CredentialFilter.builder().build(); List creds1 = client1.credentials().list(args); @@ -504,8 +511,8 @@ public Object createRegistry(SignifyClient client, String name, String registryN .build(); RegistryResult result = client.registries().create(args); - Object op = result.op(); - waitOperation(client, op); + RegistryOperation op = result.op(); + waitForCompleted(client, op); List registryList = client.registries().list(name); Registry opResponseName = registryList.get(0); @@ -521,7 +528,7 @@ public Object issueCredential( CredentialData data ) throws Exception { IssueCredentialResult result = client.credentials().issue(name, data); - waitOperation(client, result.getOp()); + waitForCompleted(client, result.getOp()); List listCreds = client.credentials().list(CredentialFilter.builder().build()); Credential cred = listCreds.getFirst(); @@ -549,17 +556,17 @@ public Object issueCredential( List gsigs = grantResult.sigs(); String end = grantResult.atc(); - Object op = client + ExchangeOperation op = client .ipex() .submitGrant(name, grant, gsigs, end, List.of(data.getA().getI())); - waitOperation(client, op); + waitForCompleted(client, op); } System.out.println("Grant message sent"); return cred; } - public Object multisigAdmitCredential( + public ExchangeOperation multisigAdmitCredential( SignifyClient client, String groupName, String memberAlias, @@ -583,7 +590,7 @@ public Object multisigAdmitCredential( List sigs = exchangeMessageResult.sigs(); String end = exchangeMessageResult.atc(); - Object op = client.ipex().submitAdmit( + ExchangeOperation op = client.ipex().submitAdmit( groupName, admit, sigs, diff --git a/src/test/java/org/cardanofoundation/signify/e2e/MultisigInceptionTest.java b/src/test/java/org/cardanofoundation/signify/e2e/MultisigInceptionTest.java index daf3bea6..7f09bfa1 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/MultisigInceptionTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/MultisigInceptionTest.java @@ -1,13 +1,15 @@ package org.cardanofoundation.signify.e2e; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.cesr.util.Utils; import org.cardanofoundation.signify.e2e.utils.MultisigUtils; import org.cardanofoundation.signify.e2e.utils.TestSteps; import org.cardanofoundation.signify.e2e.utils.TestUtils; import org.cardanofoundation.signify.e2e.utils.TestUtils.Notification; import org.cardanofoundation.signify.generated.keria.model.GroupMember; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; +import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.Operation; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -16,14 +18,14 @@ import static org.cardanofoundation.signify.e2e.utils.MultisigUtils.acceptMultisigIncept; import static org.cardanofoundation.signify.e2e.utils.MultisigUtils.startMultisigIncept; -import static org.cardanofoundation.signify.e2e.utils.TestUtils.waitOperation; +import static org.cardanofoundation.signify.e2e.utils.TestUtils.waitForCompleted; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; public class MultisigInceptionTest extends BaseIntegrationTest { SignifyClient client1, client2; String aid1, aid2; - Object oobi1, oobi2; + OOBI oobi1, oobi2; TestSteps testSteps = new TestSteps(); @Test @@ -39,14 +41,14 @@ public void testMultisigInception() throws Exception { oobi1 = client1.oobis().get("member1", "agent").get(); oobi2 = client2.oobis().get("member2", "agent").get(); - TestUtils.resolveOobi(client1, Utils.toList(Utils.toMap(oobi2).get("oobis")).getFirst(), "member2"); - TestUtils.resolveOobi(client2, Utils.toList(Utils.toMap(oobi1).get("oobis")).getFirst(), "member1"); + TestUtils.resolveOobi(client1, oobi2.getOobis().getFirst(), "member2"); + TestUtils.resolveOobi(client2, oobi1.getOobis().getFirst(), "member1"); return null; }); testSteps.step("Create multisig group", () -> { String groupName = "multisig"; - Object op1 = startMultisigIncept(client1, MultisigUtils.StartMultisigInceptArgs.builder() + KelOperation op1 = startMultisigIncept(client1, MultisigUtils.StartMultisigInceptArgs.builder() .groupName(groupName) .localMemberName("member1") .participants(Arrays.asList(aid1, aid2)) @@ -69,7 +71,7 @@ public void testMultisigInception() throws Exception { String msgSaid = notifications.getLast().getA().getD(); assertNotNull(msgSaid, "msgSaid not defined"); - Object op2 = acceptMultisigIncept(client2, MultisigUtils.AcceptMultisigInceptArgs.builder() + KelOperation op2 = acceptMultisigIncept(client2, MultisigUtils.AcceptMultisigInceptArgs.builder() .localMemberName("member2") .groupName(groupName) .msgSaid(msgSaid) @@ -99,7 +101,7 @@ public void testMultisigInception() throws Exception { testSteps.step("Test creating another group", () -> { String groupName = "multisig2"; - Object op1 = startMultisigIncept(client1, MultisigUtils.StartMultisigInceptArgs.builder() + KelOperation op1 = startMultisigIncept(client1, MultisigUtils.StartMultisigInceptArgs.builder() .groupName(groupName) .localMemberName("member1") .participants(List.of(aid1, aid2)) @@ -119,15 +121,15 @@ public void testMultisigInception() throws Exception { String msgSaid = notifications.getLast().getA().getD(); assertNotNull(msgSaid, "msgSaid not defined"); - Object op2 = acceptMultisigIncept(client2, MultisigUtils.AcceptMultisigInceptArgs.builder() + KelOperation op2 = acceptMultisigIncept(client2, MultisigUtils.AcceptMultisigInceptArgs.builder() .localMemberName("member2") .groupName(groupName) .msgSaid(msgSaid) .build() ); - op1 = waitOperation(client1, op1); - op2 = waitOperation(client2, op2); + waitForCompleted(client1, op1); + waitForCompleted(client2, op2); // TODO: https://github.com/WebOfTrust/keria/issues/189 // const members = await client1.identifiers().members(groupName); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/MultisigJoinTest.java b/src/test/java/org/cardanofoundation/signify/e2e/MultisigJoinTest.java index a56f282f..50957035 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/MultisigJoinTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/MultisigJoinTest.java @@ -1,10 +1,8 @@ package org.cardanofoundation.signify.e2e; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.Keeping; import org.cardanofoundation.signify.cesr.Serder; import org.cardanofoundation.signify.cesr.Siger; @@ -15,9 +13,14 @@ import org.cardanofoundation.signify.generated.keria.model.Exn; import org.cardanofoundation.signify.generated.keria.model.ExnMultisig; import org.cardanofoundation.signify.generated.keria.model.GroupMember; +import org.cardanofoundation.signify.generated.keria.model.GroupOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.CompletedQueryOperation; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.*; import java.util.*; @@ -26,7 +29,6 @@ import static org.cardanofoundation.signify.e2e.utils.TestUtils.*; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class MultisigJoinTest extends BaseIntegrationTest { @@ -84,9 +86,9 @@ public void multisigJoinTest() throws Exception { kargs.setStates(states); kargs.setRstates(states); - EventResult icpResult = client1.identifiers().create(nameMultisig, kargs); + var icpResult = client1.identifiers().create(nameMultisig, kargs); - Object createMultisig1 = icpResult.op(); + KelOperation createMultisig1 = icpResult.op(); Serder serder = icpResult.serder(); List sigs = icpResult.sigs(); List sigers = sigs.stream() @@ -132,27 +134,22 @@ public void multisigJoinTest() throws Exception { iargs2.setStates(states); iargs2.setRstates(states); - EventResult icpResult2 = client2.identifiers().create(nameMultisig, iargs2); + var icpResult2 = client2.identifiers().create(nameMultisig, iargs2); - Object createMultisig2 = icpResult2.op(); + KelOperation createMultisig2 = icpResult2.op(); - List op = waitOperationAsync( + waitOperationAsync( new WaitOperationArgs(client1, createMultisig1), new WaitOperationArgs(client2, createMultisig2) ); - createMultisig1 = op.get(0); - createMultisig2 = op.get(1); - - Map multisigRes1 = castObjectToLinkedHashMap( - Utils.toMap(createMultisig1).get("response")); - Map multisigRes2 = castObjectToLinkedHashMap( - Utils.toMap(createMultisig2).get("response")); + HabState multisig1 = client1.identifiers().get(nameMultisig).get(); + HabState multisig2 = client2.identifiers().get(nameMultisig).get(); - assertEquals(aid1.getState().getK().getFirst(), Utils.toList(multisigRes1.get("k")).getFirst()); - assertEquals(aid2.getState().getK().getFirst(), Utils.toList(multisigRes1.get("k")).get(1)); - assertEquals(aid1.getState().getK().getFirst(), Utils.toList(multisigRes2.get("k")).getFirst()); - assertEquals(aid2.getState().getK().getFirst(), Utils.toList(multisigRes2.get("k")).get(1)); + assertEquals(aid1.getState().getK().getFirst(), multisig1.getState().getK().getFirst()); + assertEquals(aid2.getState().getK().getFirst(), multisig1.getState().getK().get(1)); + assertEquals(aid1.getState().getK().getFirst(), multisig2.getState().getK().getFirst()); + assertEquals(aid2.getState().getK().getFirst(), multisig2.getState().getK().get(1)); GroupMember membersAgent1 = client1.identifiers().members(nameMultisig); GroupMember membersAgent2 = client2.identifiers().members(nameMultisig); @@ -160,8 +157,8 @@ public void multisigJoinTest() throws Exception { String eid1 = membersAgent1.getSigning().getFirst().getEnds().getAgent().keySet().iterator().next(); String eid2 = membersAgent2.getSigning().getFirst().getEnds().getAgent().keySet().iterator().next(); - EventResult endRoleOperation1 = client1.identifiers().addEndRole(nameMultisig, "agent", eid1, null); - EventResult endRoleOperation2 = client2.identifiers().addEndRole(nameMultisig, "agent", eid2, null); + var endRoleOperation1 = client1.identifiers().addEndRole(nameMultisig, "agent", eid1, null); + var endRoleOperation2 = client2.identifiers().addEndRole(nameMultisig, "agent", eid2, null); oobiGetMultisig = client1.oobis().get(nameMultisig, "agent").get(); @@ -195,8 +192,8 @@ public void multisigJoinTestAddMember3() throws Exception { new ResolveOobisArgs(client3, oobiMultisig, nameMultisig) ); - EventResult rotateResult1 = client1.identifiers().rotate(nameMember1); - EventResult rotateResult2 = client2.identifiers().rotate(nameMember2); + var rotateResult1 = client1.identifiers().rotate(nameMember1); + var rotateResult2 = client2.identifiers().rotate(nameMember2); waitOperationAsync( new WaitOperationArgs(client1, rotateResult1.op()), @@ -206,7 +203,7 @@ public void multisigJoinTestAddMember3() throws Exception { aid1 = client1.identifiers().get(nameMember1).get(); aid2 = client2.identifiers().get(nameMember2).get(); - List updates = getKeyStateQuerAsync( + List updates = getKeyStateQuerAsync( new GetKeyStateQueryArgs(client1, aid2.getPrefix(), "1"), new GetKeyStateQueryArgs(client1, aid3.getPrefix(), "0"), new GetKeyStateQueryArgs(client2, aid1.getPrefix(), "1"), @@ -224,19 +221,25 @@ public void multisigJoinTestAddMember3() throws Exception { new WaitOperationArgs(client3, updates.get(4)), new WaitOperationArgs(client3, updates.get(5)) ); - Object aid2States = statesUpdate.get(0); - Object aid1States = statesUpdate.get(2); - Object aid3States = statesUpdate.get(1); - KeyStateRecord aid2State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid2States).getResponse()), KeyStateRecord.class); - KeyStateRecord aid1State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid1States).getResponse()), KeyStateRecord.class); - KeyStateRecord aid3State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid3States).getResponse()), KeyStateRecord.class); + KeyStateRecord aid2State = switch (statesUpdate.get(0)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; + KeyStateRecord aid3State = switch (statesUpdate.get(1)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; + KeyStateRecord aid1State = switch (statesUpdate.get(2)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; List states = Arrays.asList(aid1State, aid2State); List rstates = new ArrayList<>(states); rstates.add(aid3State); - EventResult rotateOperation1 = client1.identifiers().rotate(nameMultisig, RotateIdentifierArgs.builder() + var rotateOperation1 = client1.identifiers().rotate(nameMultisig, RotateIdentifierArgs.builder() .states(states) .rstates(rstates) .build()); @@ -297,9 +300,9 @@ public void multisigJoinTestAddMember3() throws Exception { @Test @Order(3) public void signingKeysAndJoinTest() throws Exception { - EventResult rotateResult1 = client1.identifiers().rotate(nameMember1); - EventResult rotateResult2 = client2.identifiers().rotate(nameMember2); - EventResult rotateResult3 = client3.identifiers().rotate(nameMember3); + var rotateResult1 = client1.identifiers().rotate(nameMember1); + var rotateResult2 = client2.identifiers().rotate(nameMember2); + var rotateResult3 = client3.identifiers().rotate(nameMember3); waitOperationAsync( new WaitOperationArgs(client1, rotateResult1.op()), @@ -311,7 +314,7 @@ public void signingKeysAndJoinTest() throws Exception { aid2 = client2.identifiers().get(nameMember2).get(); aid3 = client3.identifiers().get(nameMember3).get(); - List updates = getKeyStateQuerAsync( + List updates = getKeyStateQuerAsync( new GetKeyStateQueryArgs(client1, aid2.getPrefix(), "2"), new GetKeyStateQueryArgs(client1, aid3.getPrefix(), "1"), new GetKeyStateQueryArgs(client2, aid1.getPrefix(), "2"), @@ -329,17 +332,23 @@ public void signingKeysAndJoinTest() throws Exception { new WaitOperationArgs(client3, updates.get(4)), new WaitOperationArgs(client3, updates.get(5)) ); - Object aid2States = statesUpdate.get(0); - Object aid1States = statesUpdate.get(2); - Object aid3States = statesUpdate.get(1); - KeyStateRecord aid2State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid2States).getResponse()), KeyStateRecord.class); - KeyStateRecord aid1State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid1States).getResponse()), KeyStateRecord.class); - KeyStateRecord aid3State = Utils.fromJson(Utils.jsonStringify(Operation.fromObject(aid3States).getResponse()), KeyStateRecord.class); + KeyStateRecord aid2State = switch (statesUpdate.get(0)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; + KeyStateRecord aid3State = switch (statesUpdate.get(1)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; + KeyStateRecord aid1State = switch (statesUpdate.get(2)) { + case CompletedQueryOperation op -> op.getResponse(); + default -> throw new IllegalStateException("Unexpected operation state"); + }; List states = Arrays.asList(aid1State, aid2State, aid3State); - EventResult rotateOperation1 = client1.identifiers().rotate(nameMultisig, RotateIdentifierArgs.builder() + var rotateOperation1 = client1.identifiers().rotate(nameMultisig, RotateIdentifierArgs.builder() .states(states) .rstates(states) .build()); @@ -392,7 +401,7 @@ public void signingKeysAndJoinTest() throws Exception { Keeping.Keeper keeper3 = client3.getManager().get(aid3); List sig3 = keeper3.sign(serder3.getRaw().getBytes()).signatures(); - Object joinOperation = client3.groups() + GroupOperation joinOperation = Utils.fromJson(Utils.jsonStringify(client3.groups() .join( nameMultisig, serder3, @@ -400,9 +409,8 @@ public void signingKeysAndJoinTest() throws Exception { Utils.toMap(exn3.getA()).get("gid").toString(), smids, rmids - ); - - waitOperation(client3, joinOperation); + )), GroupOperation.class); + waitForCompleted(client3, joinOperation); HabState multiSigAid = client3.identifiers().get(nameMultisig).get(); @@ -419,11 +427,8 @@ public void signingKeysAndJoinTest() throws Exception { GroupMember members = client3.identifiers().members(nameMultisig); String eid = members.getSigning().get(2).getEnds().getAgent().keySet().iterator().next(); - EventResult endRoleOperation = client3.identifiers().addEndRole(nameMultisig, "agent", eid, null); - Object endRoleResult = waitOperation(client3, endRoleOperation.op()); - - assertEquals("true", Utils.toMap(endRoleResult).get("done").toString()); - assertNull(Utils.toMap(endRoleResult).get("error")); + var endRoleOperation = client3.identifiers().addEndRole(nameMultisig, "agent", eid, null); + waitForCompleted(client3, endRoleOperation.op()); } public static HabState createAID(SignifyClient client, String name, List wits) throws Exception { diff --git a/src/test/java/org/cardanofoundation/signify/e2e/MultisigTest.java b/src/test/java/org/cardanofoundation/signify/e2e/MultisigTest.java index 3e66f004..3a16ca7b 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/MultisigTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/MultisigTest.java @@ -2,12 +2,10 @@ import org.cardanofoundation.signify.app.Exchanging; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.IdentifierListResponse; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialData; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialFilter; import org.cardanofoundation.signify.app.credentialing.credentials.IssueCredentialResult; @@ -24,17 +22,29 @@ import org.cardanofoundation.signify.core.Eventing; import org.cardanofoundation.signify.core.Manager; import org.cardanofoundation.signify.generated.keria.model.AidRecord; +import org.cardanofoundation.signify.generated.keria.model.ChallengeOperation; import org.cardanofoundation.signify.generated.keria.model.Credential; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; +import org.cardanofoundation.signify.generated.keria.model.ExchangeOperation; import org.cardanofoundation.signify.generated.keria.model.Exn; import org.cardanofoundation.signify.generated.keria.model.ExchangeResource; import org.cardanofoundation.signify.generated.keria.model.ExnMultisig; import org.cardanofoundation.signify.generated.keria.model.GroupMember; +import org.cardanofoundation.signify.generated.keria.model.GroupOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; +import org.cardanofoundation.signify.generated.keria.model.CompletedChallengeOperation; +import org.cardanofoundation.signify.generated.keria.model.CompletedQueryOperation; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; import org.cardanofoundation.signify.e2e.utils.MultisigUtils; import org.cardanofoundation.signify.e2e.utils.ResolveEnv; import org.cardanofoundation.signify.e2e.utils.TestUtils; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.OOBIOperation; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -100,44 +110,44 @@ public void multisig() throws Exception { String oobis3 = getOobisIndexAt0(oobi3); String oobis4 = getOobisIndexAt0(oobi4); - Object op1 = client1.oobis().resolve(oobis2, "member2"); - op1 = waitOperation(client1, op1); - op1 = client1.oobis().resolve(oobis3, "member3"); - op1 = waitOperation(client1, op1); - op1 = client1.oobis().resolve(SCHEMA_OOBI, "schema"); - op1 = waitOperation(client1, op1); - op1 = client1.oobis().resolve(oobis4, "holder"); - op1 = waitOperation(client1, op1); + OOBIOperation oop = client1.oobis().resolve(oobis2, "member2"); + waitForCompleted(client1, oop); + oop = client1.oobis().resolve(oobis3, "member3"); + waitForCompleted(client1, oop); + oop = client1.oobis().resolve(SCHEMA_OOBI, "schema"); + waitForCompleted(client1, oop); + oop = client1.oobis().resolve(oobis4, "holder"); + waitForCompleted(client1, oop); System.out.println("Member1 resolved 4 OOBIs"); - Object op2 = client2.oobis().resolve(oobis1, "member1"); - op2 = waitOperation(client2, op2); - op2 = client2.oobis().resolve(oobis3, "member3"); - op2 = waitOperation(client2, op2); - op2 = client2.oobis().resolve(SCHEMA_OOBI, "schema"); - op2 = waitOperation(client2, op2); - op2 = client2.oobis().resolve(oobis4, "holder"); - op2 = waitOperation(client2, op2); + oop = client2.oobis().resolve(oobis1, "member1"); + waitForCompleted(client2, oop); + oop = client2.oobis().resolve(oobis3, "member3"); + waitForCompleted(client2, oop); + oop = client2.oobis().resolve(SCHEMA_OOBI, "schema"); + waitForCompleted(client2, oop); + oop = client2.oobis().resolve(oobis4, "holder"); + waitForCompleted(client2, oop); System.out.println("Member2 resolved 4 OOBIs"); - Object op3 = client3.oobis().resolve(oobis1, "member1"); - op3 = waitOperation(client3, op3); - op3 = client3.oobis().resolve(oobis2, "member2"); - op3 = waitOperation(client3, op3); - op3 = client3.oobis().resolve(SCHEMA_OOBI, "schema"); - op3 = waitOperation(client3, op3); - op3 = client3.oobis().resolve(oobis4, "holder"); - op3 = waitOperation(client3, op3); + oop = client3.oobis().resolve(oobis1, "member1"); + waitForCompleted(client3, oop); + oop = client3.oobis().resolve(oobis2, "member2"); + waitForCompleted(client3, oop); + oop = client3.oobis().resolve(SCHEMA_OOBI, "schema"); + waitForCompleted(client3, oop); + oop = client3.oobis().resolve(oobis4, "holder"); + waitForCompleted(client3, oop); System.out.println("Member3 resolved 4 OOBIs"); - Object op4 = client4.oobis().resolve(oobis1, "member1"); - op4 = waitOperation(client4, op4); - op4 = client4.oobis().resolve(oobis2, "member2"); - op4 = waitOperation(client4, op4); - op4 = client4.oobis().resolve(oobis3, "member3"); - op4 = waitOperation(client4, op4); - op4 = client4.oobis().resolve(SCHEMA_OOBI, "schema"); - op4 = waitOperation(client4, op4); + oop = client4.oobis().resolve(oobis1, "member1"); + waitForCompleted(client4, oop); + oop = client4.oobis().resolve(oobis2, "member2"); + waitForCompleted(client4, oop); + oop = client4.oobis().resolve(oobis3, "member3"); + waitForCompleted(client4, oop); + oop = client4.oobis().resolve(SCHEMA_OOBI, "schema"); + waitForCompleted(client4, oop); System.out.println("Holder resolved 4 OOBIs"); @@ -153,20 +163,16 @@ public void multisig() throws Exception { client3.challenges().respond("member3", aid1.getPrefix(), words); System.out.println("Member3 responded challenge with signed words"); - op1 = client1.challenges().verify(aid2.getPrefix(), words); - op1 = waitOperation(client1, op1); + ChallengeOperation chop1 = client1.challenges().verify(aid2.getPrefix(), words); + String exnD = waitForCompleted(client1, chop1, CompletedChallengeOperation.class).getResponse().getExn().getD(); System.out.println("Member1 verified challenge response from member2"); - Map exnValue = (Map) Utils.toMap(Operation.fromObject(op1).getResponse()).get("exn"); - Serder exnwords = new Serder(exnValue); - op1 = client1.challenges().responded(aid2.getPrefix(), exnwords.getKed().get("d").toString()); + client1.challenges().responded(aid2.getPrefix(), exnD); System.out.println("Member1 marked challenge response as accepted"); - op1 = client1.challenges().verify(aid3.getPrefix(), words); - op1 = operationToObject(waitOperation(client1, op1)); + ChallengeOperation chop2 = client1.challenges().verify(aid3.getPrefix(), words); + exnD = waitForCompleted(client1, chop2, CompletedChallengeOperation.class).getResponse().getExn().getD(); System.out.println("Member1 verified challenge response from member3"); - exnValue = (Map) Utils.toMap(Operation.fromObject(op1).getResponse()).get("exn"); - exnwords = new Serder(exnValue); - op1 = client1.challenges().responded(aid3.getPrefix(), exnwords.getKed().get("d").toString()); + client1.challenges().responded(aid3.getPrefix(), exnD); System.out.println("Member1 marked challenge response as accepted"); // First member start the creation of a multisig identifier @@ -185,7 +191,7 @@ public void multisig() throws Exception { .build(); kargsMultisigAID.setMhab(aid1); - op1 = MultisigUtils.createAIDMultisig( + GroupOperation gop1 = MultisigUtils.createAIDMultisig( client1, aid1, List.of(aid2, aid3), @@ -196,7 +202,7 @@ public void multisig() throws Exception { System.out.println("Member1 initiated multisig, waiting for others to join..."); kargsMultisigAID.setMhab(aid2); - op2 = MultisigUtils.createAIDMultisig( + GroupOperation gop2 = MultisigUtils.createAIDMultisig( client2, aid2, List.of(aid1, aid3), @@ -207,7 +213,7 @@ public void multisig() throws Exception { System.out.println("Member2 joins multisig group, waiting for others..."); kargsMultisigAID.setMhab(aid3); - op3 = MultisigUtils.createAIDMultisig( + GroupOperation gop3 = MultisigUtils.createAIDMultisig( client3, aid3, List.of(aid1, aid2), @@ -219,9 +225,9 @@ public void multisig() throws Exception { // Check for completion waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, gop1), + new WaitOperationArgs(client2, gop2), + new WaitOperationArgs(client3, gop3) ); System.out.println("Multisig created!"); @@ -267,12 +273,10 @@ public void multisig() throws Exception { aids3.get(1).getPrefix() ); - String multisig = Utils.toMap(aids3.get(1)).get("prefix").toString(); - HabState multisigAID = client1.identifiers().get("multisig").get(); String timestamp = TestUtils.createTimestamp(); - List opList1 = MultisigUtils.addEndRoleMultisigs( + List opList1 = MultisigUtils.addEndRoleMultisigs( client1, "multisig", aid1, @@ -282,7 +286,7 @@ public void multisig() throws Exception { true ); - List opList2 = MultisigUtils.addEndRoleMultisigs( + List opList2 = MultisigUtils.addEndRoleMultisigs( client2, "multisig", aid2, @@ -291,7 +295,7 @@ public void multisig() throws Exception { timestamp, false ); - List opList3 = MultisigUtils.addEndRoleMultisigs( + List opList3 = MultisigUtils.addEndRoleMultisigs( client3, "multisig", aid3, @@ -314,8 +318,8 @@ public void multisig() throws Exception { // Holder resolve multisig OOBI OOBI oobimultisig = client1.oobis().get("multisig", "agent").get(); - op4 = client4.oobis().resolve(getOobisIndexAt0(oobimultisig), "multisig"); - waitOperation(client4, op4); + oop = client4.oobis().resolve(getOobisIndexAt0(oobimultisig), "multisig"); + waitForCompleted(client4, oop); System.out.println("Holder resolved multisig OOBI"); // MultiSig Interaction @@ -325,7 +329,7 @@ public void multisig() throws Exception { data.put("s", "0"); data.put("d", "EBgew7O4yp8SBle0FU-wwN3GtnaroI0BQfBGAj33QiIG"); - op1 = MultisigUtils.interactMultisig( + KelOperation kop1 = MultisigUtils.interactMultisig( client1, "multisig", aid1, @@ -336,7 +340,7 @@ public void multisig() throws Exception { ); System.out.println("Member1 initiates interaction event, waiting for others to join..."); - op2 = MultisigUtils.interactMultisig( + KelOperation kop2 = MultisigUtils.interactMultisig( client2, "multisig", aid2, @@ -347,7 +351,7 @@ public void multisig() throws Exception { ); System.out.println("Member2 joins interaction event, waiting for others..."); - op3 = MultisigUtils.interactMultisig( + KelOperation kop3 = MultisigUtils.interactMultisig( client3, "multisig", aid3, @@ -360,63 +364,56 @@ public void multisig() throws Exception { // Check for completion waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, kop1), + new WaitOperationArgs(client2, kop2), + new WaitOperationArgs(client3, kop3) ); System.out.println("Multisig interaction completed!"); // Members agree out of band to rotate keys System.out.println("Members agree out of band to rotate keys"); - EventResult icpResult1 = client1.identifiers().rotate("member1"); - op1 = icpResult1.op(); - op1 = waitOperation(client1, op1); + var icpResult1 = client1.identifiers().rotate("member1"); + kop1 = icpResult1.op(); + waitForCompleted(client1, kop1); aid1 = client1.identifiers().get("member1").get(); System.out.println("Member1 rotated keys"); - EventResult icpResult2 = client2.identifiers().rotate("member2"); - op2 = icpResult2.op(); - op2 = waitOperation(client2, op2); + var icpResult2 = client2.identifiers().rotate("member2"); + kop2 = icpResult2.op(); + waitForCompleted(client2, kop2); aid2 = client2.identifiers().get("member2").get(); System.out.println("Member2 rotated keys"); - EventResult icpResult3 = client3.identifiers().rotate("member3"); - op3 = icpResult3.op(); - op3 = waitOperation(client3, op3); + var icpResult3 = client3.identifiers().rotate("member3"); + kop3 = icpResult3.op(); + waitForCompleted(client3, kop3); aid3 = client3.identifiers().get("member3").get(); System.out.println("Member3 rotated keys"); // Update new key states - op1 = client1.keyStates().query(aid2.getPrefix(), "1"); - op1 = waitOperation(client1, op1); - Object aid2State = Operation.fromObject(op1).getResponse(); - op1 = client1.keyStates().query(aid3.getPrefix(), "1"); - op1 = waitOperation(client1, op1); - Object aid3State = Operation.fromObject(op1).getResponse(); - - op2 = client2.keyStates().query(aid3.getPrefix(), "1"); - op2 = waitOperation(client2, op2); - op2 = client2.keyStates().query(aid1.getPrefix(), "1"); - op2 = waitOperation(client2, op2); - Object aid1State = Operation.fromObject(op2).getResponse(); - - op3 = client3.keyStates().query(aid1.getPrefix(), "1"); - op3 = waitOperation(client3, op3); - op3 = client3.keyStates().query(aid2.getPrefix(), "1"); - op3 = waitOperation(client3, op3); - - op4 = client4.keyStates().query(aid1.getPrefix(), "1"); - op4 = waitOperation(client4, op4); - op4 = client4.keyStates().query(aid2.getPrefix(), "1"); - op4 = waitOperation(client4, op4); - op4 = client4.keyStates().query(aid3.getPrefix(), "1"); - op4 = waitOperation(client4, op4); - - List rstateLst = List.of( - Utils.fromJson(Utils.jsonStringify(aid1State), KeyStateRecord.class), - Utils.fromJson(Utils.jsonStringify(aid2State), KeyStateRecord.class), - Utils.fromJson(Utils.jsonStringify(aid3State), KeyStateRecord.class) - ); + QueryOperation qop1 = client1.keyStates().query(aid2.getPrefix(), "1"); + KeyStateRecord aid2State = waitForCompleted(client1, qop1, CompletedQueryOperation.class).getResponse(); + qop1 = client1.keyStates().query(aid3.getPrefix(), "1"); + KeyStateRecord aid3State = waitForCompleted(client1, qop1, CompletedQueryOperation.class).getResponse(); + + QueryOperation qop2 = client2.keyStates().query(aid3.getPrefix(), "1"); + waitForCompleted(client2, qop2); + qop2 = client2.keyStates().query(aid1.getPrefix(), "1"); + KeyStateRecord aid1State = waitForCompleted(client2, qop2, CompletedQueryOperation.class).getResponse(); + + QueryOperation qop3 = client3.keyStates().query(aid1.getPrefix(), "1"); + waitForCompleted(client3, qop3); + qop3 = client3.keyStates().query(aid2.getPrefix(), "1"); + waitForCompleted(client3, qop3); + + QueryOperation qop4 = client4.keyStates().query(aid1.getPrefix(), "1"); + waitForCompleted(client4, qop4); + qop4 = client4.keyStates().query(aid2.getPrefix(), "1"); + waitForCompleted(client4, qop4); + qop4 = client4.keyStates().query(aid3.getPrefix(), "1"); + waitForCompleted(client4, qop4); + + List rstateLst = List.of(aid1State, aid2State, aid3State); List stateLst = rstateLst; // Multisig Rotation @@ -427,7 +424,7 @@ public void multisig() throws Exception { .rstates(rstateLst) .build(); - op1 = MultisigUtils.rotateMultisig( + kop1 = MultisigUtils.rotateMultisig( client1, "multisig", aid1, @@ -439,7 +436,7 @@ public void multisig() throws Exception { System.out.println("Member1 initiates rotation event, waiting for others to join..."); - op2 = MultisigUtils.rotateMultisig( + kop2 = MultisigUtils.rotateMultisig( client2, "multisig", aid2, @@ -450,7 +447,7 @@ public void multisig() throws Exception { ); System.out.println("Member2 joins rotation event, waiting for others..."); - op3 = MultisigUtils.rotateMultisig( + kop3 = MultisigUtils.rotateMultisig( client3, "multisig", aid3, @@ -462,14 +459,11 @@ public void multisig() throws Exception { System.out.println("Member3 joins rotation event, waiting for others..."); waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, kop1), + new WaitOperationArgs(client2, kop2), + new WaitOperationArgs(client3, kop3) ); - HabState hab = client1.identifiers().get("multisig").get(); - String aid = hab.getPrefix(); - // Multisig Registry creation aid1 = client1.identifiers().get("member1").get(); aid2 = client2.identifiers().get("member2").get(); @@ -486,12 +480,12 @@ public void multisig() throws Exception { nonce, true ); - op1 = registryMultisigList.get(0); + RegistryOperation rop1 = (RegistryOperation) registryMultisigList.get(0); String regk = registryMultisigList.get(1).toString(); System.out.println("Member1 initiated registry, waiting for others to join..."); // Member2 check for notifications and join the create registry event - op2 = MultisigUtils.createRegistryMultisig( + RegistryOperation rop2 = MultisigUtils.createRegistryMultisig( client2, aid2, List.of(aid1, aid3), @@ -503,7 +497,7 @@ public void multisig() throws Exception { System.out.println("Member2 joins registry event, waiting for others..."); // Member3 check for notifications and join the create registry event - op3 = MultisigUtils.createRegistryMultisig( + RegistryOperation rop3 = MultisigUtils.createRegistryMultisig( client3, aid3, List.of(aid1, aid2), @@ -515,9 +509,9 @@ public void multisig() throws Exception { ); waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, rop1), + new WaitOperationArgs(client2, rop2), + new WaitOperationArgs(client3, rop3) ); System.out.println("Multisig create registry completed!"); @@ -541,7 +535,7 @@ public void multisig() throws Exception { .build(); IssueCredentialResult credRes = client1.credentials().issue("multisig", credentialData); - op1 = credRes.getOp(); + CredentialOperation cop1 = credRes.getOp(); multisigIssue(client1, "member1", "multisig", credRes); @@ -570,7 +564,7 @@ public void multisig() throws Exception { credentialData2.setA(credentialSubject); IssueCredentialResult credRes2 = client2.credentials().issue("multisig", credentialData2); - op2 = credRes2.getOp(); + CredentialOperation cop2 = credRes2.getOp(); multisigIssue(client2, "member2", "multisig", credRes2); System.out.println("Member2 joins credential create event, waiting for others..."); @@ -593,29 +587,29 @@ public void multisig() throws Exception { credentialData3.setA(credentialSubject); IssueCredentialResult credRes3 = client3.credentials().issue("multisig", credentialData3); - op3 = credRes3.getOp(); + CredentialOperation cop3 = credRes3.getOp(); multisigIssue(client3, "member3", "multisig", credRes3); System.out.println("Member3 joins credential create event, waiting for others..."); // Check completion waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, cop1), + new WaitOperationArgs(client2, cop2), + new WaitOperationArgs(client3, cop3) ); System.out.println("Multisig create credential completed!"); HabState m = client1.identifiers().get("multisig").get(); // Update states - op1 = client1.keyStates().query(m.getPrefix(), "4"); - op1 = waitOperation(client1, op1); - op2 = client2.keyStates().query(m.getPrefix(), "4"); - op2 = waitOperation(client2, op2); - op3 = client3.keyStates().query(m.getPrefix(), "4"); - op3 = waitOperation(client3, op3); - op4 = client4.keyStates().query(m.getPrefix(), "4"); - op4 = waitOperation(client4, op4); + qop1 = client1.keyStates().query(m.getPrefix(), "4"); + waitForCompleted(client1, qop1); + qop2 = client2.keyStates().query(m.getPrefix(), "4"); + waitForCompleted(client2, qop2); + qop3 = client3.keyStates().query(m.getPrefix(), "4"); + waitForCompleted(client3, qop3); + qop4 = client4.keyStates().query(m.getPrefix(), "4"); + waitForCompleted(client4, qop4); // IPEX grant message System.out.println("Starting grant message"); @@ -634,7 +628,7 @@ public void multisig() throws Exception { List gsigs = grantResult.sigs(); String end = grantResult.atc(); - op1 = client1.ipex().submitGrant("multisig", grant, gsigs, end, List.of(holder)); + ExchangeOperation exop1 = client1.ipex().submitGrant("multisig", grant, gsigs, end, List.of(holder)); Map mstate = Utils.toMap(m.getState()); List seal = Arrays.asList( @@ -689,7 +683,7 @@ public void multisig() throws Exception { List gsigs2 = grantResult2.sigs(); String end2 = grantResult2.atc(); - op2 = client2.ipex().submitGrant("multisig", grant2, gsigs2, end2, List.of(holder)); + ExchangeOperation exop2 = client2.ipex().submitGrant("multisig", grant2, gsigs2, end2, List.of(holder)); sigers = gsigs2.stream() .map(Siger::new) @@ -736,7 +730,7 @@ public void multisig() throws Exception { List gsigs3 = grantResult3.sigs(); String end3 = grantResult3.atc(); - op3 = client3.ipex().submitGrant("multisig", grant3, gsigs3, end3, List.of(holder)); + ExchangeOperation exop3 = client3.ipex().submitGrant("multisig", grant3, gsigs3, end3, List.of(holder)); sigers = gsigs3.stream() .map(Siger::new) @@ -779,13 +773,13 @@ public void multisig() throws Exception { List asigs = admitResult.sigs(); String aend = admitResult.atc(); - op4 = client4.ipex().submitAdmit("holder", admit, asigs, aend, List.of(m.getPrefix())); + ExchangeOperation exop4 = client4.ipex().submitAdmit("holder", admit, asigs, aend, List.of(m.getPrefix())); waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3), - new WaitOperationArgs(client4, op4) + new WaitOperationArgs(client1, exop1), + new WaitOperationArgs(client2, exop2), + new WaitOperationArgs(client3, exop3), + new WaitOperationArgs(client4, exop4) ); System.out.println("Holder creates and sends admit message"); @@ -800,7 +794,7 @@ public void multisig() throws Exception { System.out.println("Revoking credential..."); String REVTIME = new Date().toInstant().toString().replace("Z", "000+00:00"); RevokeCredentialResult revokeRes = client1.credentials().revoke("multisig", credentialSaid, REVTIME); - op1 = revokeRes.getOp(); + cop1 = revokeRes.getOp(); multisigRevoke(client1, "member1", "multisig", revokeRes.getRev(), revokeRes.getAnc()); System.out.println("Member1 initiated credential revocation, waiting for others to join..."); @@ -812,7 +806,7 @@ public void multisig() throws Exception { assertEquals(msgSaid, res.getFirst().getExn().getD()); RevokeCredentialResult revokeRes2 = client2.credentials().revoke("multisig", credentialSaid, REVTIME); - op2 = revokeRes2.getOp(); + cop2 = revokeRes2.getOp(); multisigRevoke(client2, "member2", "multisig", revokeRes2.getRev(), revokeRes2.getAnc()); System.out.println("Member2 joins credential revoke event, waiting for others..."); @@ -823,15 +817,15 @@ public void multisig() throws Exception { assertEquals(msgSaid, res.getFirst().getExn().getD()); RevokeCredentialResult revokeRes3 = client3.credentials().revoke("multisig", credentialSaid, REVTIME); - op3 = revokeRes3.getOp(); + cop3 = revokeRes3.getOp(); multisigRevoke(client3, "member3", "multisig", revokeRes3.getRev(), revokeRes3.getAnc()); System.out.println("Member3 joins credential revoke event, waiting for others..."); // Check completion waitOperationAsync( - new WaitOperationArgs(client1, op1), - new WaitOperationArgs(client2, op2), - new WaitOperationArgs(client3, op3) + new WaitOperationArgs(client1, cop1), + new WaitOperationArgs(client2, cop2), + new WaitOperationArgs(client3, cop3) ); System.out.println("Multisig credential revocation completed!"); } @@ -941,12 +935,12 @@ public static List createRegistryMultisig( .nonce(nonce) .build(); RegistryResult vcpResult = client.registries().create(createRegistryArgs); - Object op = vcpResult.op(); + RegistryOperation op = vcpResult.op(); - Serder serder = vcpResult.getRegser(); + Serder serder = vcpResult.regser(); String regk = serder.getPre(); - Serder anc = vcpResult.getSerder(); - List sigs = vcpResult.getSigs(); + Serder anc = vcpResult.serder(); + List sigs = vcpResult.sigs(); List sigers = sigs.stream().map(Siger::new).toList(); String ims = new String(Eventing.messagize(anc, sigers, null, null, null, false)); @@ -974,20 +968,11 @@ public static List createRegistryMultisig( return list; } - public static Operation waitOperations( + public static Operation waitOperations( SignifyClient client, - Object op) throws IOException, InterruptedException, LibsodiumException { - Operation operation = Operation.fromObject(op); - String name = operation.getName(); - operation = client.operations().wait(operation); + Operation op) throws IOException, InterruptedException, LibsodiumException { + Operation operation = client.operations().wait(op); TestUtils.deleteOperations(client, operation); - TestUtils.deleteOperation(client, name); return operation; } - - public void deleteOperations(List clients, List name) throws Exception { - for (int i = 1; i <= clients.size(); i++) { - deleteOperation(clients.get(i - 1), name.get(i - 1)); - } - } } diff --git a/src/test/java/org/cardanofoundation/signify/e2e/MultisigVleiIssuanaceTest.java b/src/test/java/org/cardanofoundation/signify/e2e/MultisigVleiIssuanaceTest.java index 512f4dfc..277bc8e8 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/MultisigVleiIssuanaceTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/MultisigVleiIssuanaceTest.java @@ -3,7 +3,6 @@ import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialData; import org.cardanofoundation.signify.cesr.Saider; import org.cardanofoundation.signify.cesr.Salter; @@ -13,9 +12,15 @@ import org.cardanofoundation.signify.e2e.utils.TestUtils; import org.cardanofoundation.signify.generated.keria.model.Credential; import org.cardanofoundation.signify.generated.keria.model.CredentialSad; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; +import org.cardanofoundation.signify.generated.keria.model.DelegatorOperation; +import org.cardanofoundation.signify.generated.keria.model.GroupOperation; import org.cardanofoundation.signify.generated.keria.model.OOBI; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.cardanofoundation.signify.generated.keria.model.Registry; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -226,7 +231,7 @@ void testMultisigVleiIssuance() throws Exception { .build(); kargsMultisigAID.setMhab(aidGAR1); - Object multisigAIDOp1 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp1 = MultisigUtils.createAIDMultisig( clientGAR1, aidGAR1, List.of(aidGAR2), @@ -236,7 +241,7 @@ void testMultisigVleiIssuance() throws Exception { ); kargsMultisigAID.setMhab(aidGAR2); - Object multisigAIDOp2 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp2 = MultisigUtils.createAIDMultisig( clientGAR2, aidGAR2, List.of(aidGAR1), @@ -267,7 +272,7 @@ void testMultisigVleiIssuance() throws Exception { if (oobiGEDAbyGAR1.getOobis().size() == 0 || oobiGEDAbyGAR2.getOobis().size() == 0) { String timestamp = TestUtils.createTimestamp(); - List opList1 = MultisigUtils.addEndRoleMultisig( + List opList1 = MultisigUtils.addEndRoleMultisig( clientGAR1, aidGEDA.getName(), aidGAR1, @@ -277,7 +282,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - List opList2 = MultisigUtils.addEndRoleMultisig( + List opList2 = MultisigUtils.addEndRoleMultisig( clientGAR2, aidGEDA.getName(), aidGAR2, @@ -337,7 +342,7 @@ void testMultisigVleiIssuance() throws Exception { .build(); kargsMultisigAID.setMhab(aidQAR1); - Object multisigAIDOp1 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp1 = MultisigUtils.createAIDMultisig( clientQAR1, aidQAR1, List.of(aidQAR2, aidQAR3), @@ -347,7 +352,7 @@ void testMultisigVleiIssuance() throws Exception { ); kargsMultisigAID.setMhab(aidQAR2); - Object multisigAIDOp2 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp2 = MultisigUtils.createAIDMultisig( clientQAR2, aidQAR2, List.of(aidQAR1, aidQAR3), @@ -357,7 +362,7 @@ void testMultisigVleiIssuance() throws Exception { ); kargsMultisigAID.setMhab(aidQAR3); - Object multisigAIDOp3 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp3 = MultisigUtils.createAIDMultisig( clientQAR3, aidQAR3, List.of(aidQAR1, aidQAR2), @@ -366,9 +371,9 @@ void testMultisigVleiIssuance() throws Exception { false ); - String aidQVIPrefix = Operation.fromObject(multisigAIDOp1).getName().split("\\.")[1]; - assertEquals(aidQVIPrefix, Operation.fromObject(multisigAIDOp2).getName().split("\\.")[1]); - assertEquals(aidQVIPrefix, Operation.fromObject(multisigAIDOp3).getName().split("\\.")[1]); + String aidQVIPrefix = multisigAIDOp1.getName().split("\\.")[1]; + assertEquals(aidQVIPrefix, multisigAIDOp2.getName().split("\\.")[1]); + assertEquals(aidQVIPrefix, multisigAIDOp3.getName().split("\\.")[1]); // GEDA anchors delegation with an interaction event. Map anchor = new LinkedHashMap<>() {{ @@ -376,7 +381,7 @@ void testMultisigVleiIssuance() throws Exception { put("s", "0"); put("d", aidQVIPrefix); }}; - Object ixnOp1 = MultisigUtils.delegateMultisig( + DelegatorOperation ixnOp1 = MultisigUtils.delegateMultisig( clientGAR1, aidGAR1, List.of(aidGAR2), @@ -385,7 +390,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object ixnOp2 = MultisigUtils.delegateMultisig( + DelegatorOperation ixnOp2 = MultisigUtils.delegateMultisig( clientGAR2, aidGAR2, List.of(aidGAR1), @@ -402,9 +407,9 @@ void testMultisigVleiIssuance() throws Exception { TestUtils.waitAndMarkNotification(clientGAR1, "/multisig/ixn"); // QARs query the GEDA's key state - Object queryOp1 = clientQAR1.keyStates().query(aidGEDA.getPrefix(), "1"); - Object queryOp2 = clientQAR2.keyStates().query(aidGEDA.getPrefix(), "1"); - Object queryOp3 = clientQAR3.keyStates().query(aidGEDA.getPrefix(), "1"); + QueryOperation queryOp1 = clientQAR1.keyStates().query(aidGEDA.getPrefix(), "1"); + QueryOperation queryOp2 = clientQAR2.keyStates().query(aidGEDA.getPrefix(), "1"); + QueryOperation queryOp3 = clientQAR3.keyStates().query(aidGEDA.getPrefix(), "1"); waitOperationAsync( new WaitOperationArgs(clientQAR1, multisigAIDOp1), @@ -443,7 +448,7 @@ void testMultisigVleiIssuance() throws Exception { || oobiQVIbyQAR2.getOobis().size() == 0 || oobiQVIbyQAR3.getOobis().size() == 0) { String timestamp = TestUtils.createTimestamp(); - List opList1 = MultisigUtils.addEndRoleMultisig( + List opList1 = MultisigUtils.addEndRoleMultisig( clientQAR1, aidQVI.getName(), aidQAR1, @@ -452,7 +457,7 @@ void testMultisigVleiIssuance() throws Exception { timestamp, true ); - List opList2 = MultisigUtils.addEndRoleMultisig( + List opList2 = MultisigUtils.addEndRoleMultisig( clientQAR2, aidQVI.getName(), aidQAR2, @@ -462,7 +467,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - List opList3 = MultisigUtils.addEndRoleMultisig( + List opList3 = MultisigUtils.addEndRoleMultisig( clientQAR3, aidQVI.getName(), aidQAR3, @@ -516,7 +521,7 @@ void testMultisigVleiIssuance() throws Exception { if (gedaRegistrybyGAR1.size() == 0 && gedaRegistrybyGAR2.size() == 0) { String nonce = Coring.randomNonce(); - Object registryOp1 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp1 = MultisigUtils.createRegistryMultisig( clientGAR1, aidGAR1, List.of(aidGAR2), @@ -526,7 +531,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object registryOp2 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp2 = MultisigUtils.createRegistryMultisig( clientGAR2, aidGAR2, List.of(aidGAR1), @@ -579,7 +584,7 @@ void testMultisigVleiIssuance() throws Exception { .a(kargsSub) .build(); - Object IssOp1 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp1 = MultisigUtils.issueCredentialMultisig( clientGAR1, aidGAR1, List.of(aidGAR2), @@ -588,7 +593,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object IssOp2 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp2 = MultisigUtils.issueCredentialMultisig( clientGAR2, aidGAR2, List.of(aidGAR1), @@ -737,7 +742,7 @@ void testMultisigVleiIssuance() throws Exception { .build(); kargsMultisigAID.setMhab(aidLAR1); - Object multisigAIDOp1 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp1 = MultisigUtils.createAIDMultisig( clientLAR1, aidLAR1, List.of(aidLAR2, aidLAR3), @@ -747,7 +752,7 @@ void testMultisigVleiIssuance() throws Exception { ); kargsMultisigAID.setMhab(aidLAR2); - Object multisigAIDOp2 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp2 = MultisigUtils.createAIDMultisig( clientLAR2, aidLAR2, List.of(aidLAR1, aidLAR3), @@ -757,7 +762,7 @@ void testMultisigVleiIssuance() throws Exception { ); kargsMultisigAID.setMhab(aidLAR3); - Object multisigAIDOp3 = MultisigUtils.createAIDMultisig( + GroupOperation multisigAIDOp3 = MultisigUtils.createAIDMultisig( clientLAR3, aidLAR3, List.of(aidLAR1, aidLAR2), @@ -791,15 +796,15 @@ void testMultisigVleiIssuance() throws Exception { new GetOobisArgs(clientLAR2, aidLE.getName(), "agent"), new GetOobisArgs(clientLAR3, aidLE.getName(), "agent") ); - OOBI oobiLEbyLAR1 = (OOBI) oobiLst.get(0); - OOBI oobiLEbyLAR2 = (OOBI) oobiLst.get(1); - OOBI oobiLEbyLAR3 = (OOBI) oobiLst.get(2); + OOBI oobiLEbyLAR1 = oobiLst.get(0); + OOBI oobiLEbyLAR2 = oobiLst.get(1); + OOBI oobiLEbyLAR3 = oobiLst.get(2); if (oobiLEbyLAR1.getOobis().size() == 0 || oobiLEbyLAR2.getOobis().size() == 0 || oobiLEbyLAR3.getOobis().size() == 0) { String timestamp = TestUtils.createTimestamp(); - List opList1 = MultisigUtils.addEndRoleMultisig( + List opList1 = MultisigUtils.addEndRoleMultisig( clientLAR1, aidLE.getName(), aidLAR1, @@ -809,7 +814,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - List opList2 = MultisigUtils.addEndRoleMultisig( + List opList2 = MultisigUtils.addEndRoleMultisig( clientLAR2, aidLE.getName(), aidLAR2, @@ -819,7 +824,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - List opList3 = MultisigUtils.addEndRoleMultisig( + List opList3 = MultisigUtils.addEndRoleMultisig( clientLAR3, aidLE.getName(), aidLAR3, @@ -847,9 +852,9 @@ void testMultisigVleiIssuance() throws Exception { new GetOobisArgs(clientLAR2, aidLE.getName(), "agent"), new GetOobisArgs(clientLAR3, aidLE.getName(), "agent") ); - oobiLEbyLAR1 = (OOBI) oobiLst.get(0); - oobiLEbyLAR2 = (OOBI) oobiLst.get(1); - oobiLEbyLAR3 = (OOBI) oobiLst.get(2); + oobiLEbyLAR1 = oobiLst.get(0); + oobiLEbyLAR2 = oobiLst.get(1); + oobiLEbyLAR3 = oobiLst.get(2); } assertEquals(oobiLEbyLAR1.getRole(), oobiLEbyLAR2.getRole()); assertEquals(oobiLEbyLAR1.getRole(), oobiLEbyLAR3.getRole()); @@ -872,7 +877,7 @@ void testMultisigVleiIssuance() throws Exception { List qviRegistrybyQAR3 = clientQAR3.registries().list(aidQVI.getName()); if (qviRegistrybyQAR1.size() == 0 || qviRegistrybyQAR2.size() == 0 || qviRegistrybyQAR3.size() == 0) { String nonce = Coring.randomNonce(); - Object registryOp1 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp1 = MultisigUtils.createRegistryMultisig( clientQAR1, aidQAR1, List.of(aidQAR2, aidQAR3), @@ -882,7 +887,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object registryOp2 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp2 = MultisigUtils.createRegistryMultisig( clientQAR2, aidQAR2, List.of(aidQAR1, aidQAR3), @@ -892,7 +897,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - Object registryOp3 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp3 = MultisigUtils.createRegistryMultisig( clientQAR3, aidQAR3, List.of(aidQAR1, aidQAR2), @@ -969,7 +974,7 @@ void testMultisigVleiIssuance() throws Exception { .r(LE_RULES) .build(); - Object IssOp1 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp1 = MultisigUtils.issueCredentialMultisig( clientQAR1, aidQAR1, List.of(aidQAR2, aidQAR3), @@ -978,7 +983,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object IssOp2 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp2 = MultisigUtils.issueCredentialMultisig( clientQAR2, aidQAR2, List.of(aidQAR1, aidQAR3), @@ -987,7 +992,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - Object IssOp3 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp3 = MultisigUtils.issueCredentialMultisig( clientQAR3, aidQAR3, List.of(aidQAR1, aidQAR2), @@ -1137,7 +1142,7 @@ void testMultisigVleiIssuance() throws Exception { if (leRegistrybyLAR1.isEmpty() && leRegistrybyLAR2.isEmpty() && leRegistrybyLAR3.isEmpty()) { String nonce = Coring.randomNonce(); - Object registryOp1 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp1 = MultisigUtils.createRegistryMultisig( clientLAR1, aidLAR1, List.of(aidLAR2, aidLAR3), @@ -1147,7 +1152,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object registryOp2 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp2 = MultisigUtils.createRegistryMultisig( clientLAR2, aidLAR2, List.of(aidLAR1, aidLAR3), @@ -1157,7 +1162,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - Object registryOp3 = MultisigUtils.createRegistryMultisig( + RegistryOperation registryOp3 = MultisigUtils.createRegistryMultisig( clientLAR3, aidLAR3, List.of(aidLAR1, aidLAR2), @@ -1233,7 +1238,7 @@ void testMultisigVleiIssuance() throws Exception { .r(ECR_RULES) .build(); - Object IssOp1 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp1 = MultisigUtils.issueCredentialMultisig( clientLAR1, aidLAR1, List.of(aidLAR2, aidLAR3), @@ -1242,7 +1247,7 @@ void testMultisigVleiIssuance() throws Exception { true ); - Object IssOp2 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp2 = MultisigUtils.issueCredentialMultisig( clientLAR2, aidLAR2, List.of(aidLAR1, aidLAR3), @@ -1251,7 +1256,7 @@ void testMultisigVleiIssuance() throws Exception { false ); - Object IssOp3 = MultisigUtils.issueCredentialMultisig( + CredentialOperation IssOp3 = MultisigUtils.issueCredentialMultisig( clientLAR3, aidLAR3, List.of(aidLAR1, aidLAR2), diff --git a/src/test/java/org/cardanofoundation/signify/e2e/RandyTest.java b/src/test/java/org/cardanofoundation/signify/e2e/RandyTest.java index 97273025..0763bd12 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/RandyTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/RandyTest.java @@ -2,11 +2,9 @@ import lombok.extern.slf4j.Slf4j; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.IdentifierListResponse; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.*; import org.cardanofoundation.signify.cesr.args.RawArgs; import org.cardanofoundation.signify.generated.keria.model.HabState; @@ -16,7 +14,6 @@ import org.junit.jupiter.api.Test; import java.util.Collections; -import java.util.HashMap; import java.util.List; import static org.cardanofoundation.signify.e2e.utils.TestUtils.*; @@ -28,8 +25,7 @@ public class RandyTest { private final String url = "http://127.0.0.1:3901"; private final String bootUrl = "http://127.0.0.1:3903"; private SignifyClient client1; - private String opResponseDone, opResponseName, opResponsePrefix; - private HashMap opResponse; + private String opResponseName, opResponsePrefix; @Test void randyTest() throws Exception { @@ -47,16 +43,10 @@ void randyTest() throws Exception { CreateIdentifierArgs kargs = new CreateIdentifierArgs(); kargs.setAlgo(Manager.Algos.randy); - EventResult icpResult = client1.identifiers().create("aid1", kargs); - Operation op = Operation.fromObject(waitOperation(client1, icpResult.op())); + var icpResult = client1.identifiers().create("aid1", kargs); + waitForCompleted(client1, icpResult.op()); - opResponse = (HashMap) op.getResponse(); - opResponseDone = op.isDone() ? "true" : "false"; - - assertEquals("true", opResponseDone); - - HashMap aid = opResponse; - Serder icp = new Serder(aid); + Serder icp = icpResult.serder(); assertEquals(1, icp.getVerfers().size()); assertEquals(1, icp.getDigers().size()); assertEquals("1", icp.getKed().get("kt")); @@ -73,11 +63,9 @@ void randyTest() throws Exception { assertEquals("aid1", opResponseName); assertEquals(icp.getPre(), opResponsePrefix); - icpResult = client1.identifiers().interact("aid1", icp.getPre()); - op = Operation.fromObject(waitOperation(client1, icpResult.op())); - opResponse = (HashMap) op.getResponse(); - HashMap ked = opResponse; - Serder ixn = new Serder(ked); + var ixnResult = client1.identifiers().interact("aid1", icp.getPre()); + waitForCompleted(client1, ixnResult.op()); + Serder ixn = ixnResult.serder(); assertEquals("1", ixn.getKed().get("s")); assertEquals(List.of(icp.getPre()), ixn.getKed().get("a")); @@ -93,12 +81,10 @@ void randyTest() throws Exception { List logList = events.get(opResponsePrefix); assertEquals(2, logList.size()); - icpResult = client1.identifiers().rotate("aid1"); - op = Operation.fromObject((waitOperation(client1, icpResult.op()))); - opResponse = (HashMap) op.getResponse(); + var rotResult = client1.identifiers().rotate("aid1"); + waitForCompleted(client1, rotResult.op()); - ked = opResponse; - Serder rot = new Serder(ked); + Serder rot = rotResult.serder(); assertEquals("2", rot.getKed().get("s")); assertEquals(1, rot.getVerfers().size()); assertEquals(1, rot.getDigers().size()); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SaltyTests.java b/src/test/java/org/cardanofoundation/signify/e2e/SaltyTests.java index f81029f3..d8370591 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SaltyTests.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SaltyTests.java @@ -1,12 +1,10 @@ package org.cardanofoundation.signify.e2e; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.IdentifierInfo; import org.cardanofoundation.signify.app.aiding.IdentifierListResponse; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.coring.Coring; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.Serder; import org.cardanofoundation.signify.core.Manager; import org.cardanofoundation.signify.generated.keria.model.HabState; @@ -26,8 +24,6 @@ class SaltyTests { private final String url = "http://127.0.0.1:3901"; private final String bootUrl = "http://127.0.0.1:3903"; - private String opResponseDone, opResponsePrefix; - private HashMap opResponse; @Test void saltyTest() throws Exception { @@ -45,16 +41,10 @@ void saltyTest() throws Exception { CreateIdentifierArgs bran = new CreateIdentifierArgs(); bran.setBran("0123456789abcdefghijk"); - EventResult icpResult = client.identifiers().create("aid1", bran); - Operation op = Operation.fromObject(waitOperation(client, icpResult.op())); + var icpResult = client.identifiers().create("aid1", bran); + waitForCompleted(client, icpResult.op()); - opResponse = (HashMap) op.getResponse(); - opResponseDone = op.isDone() ? "true" : "false"; - - assertEquals("true", opResponseDone); - - HashMap aid = opResponse; - Serder icp = new Serder(aid); + Serder icp = icpResult.serder(); assertEquals("ELUvZ8aJEHAQE-0nsevyYTP98rBbGJUrTj5an-pCmwrK", icp.getPre()); assertEquals(1, icp.getVerfers().size()); @@ -85,12 +75,9 @@ void saltyTest() throws Exception { params.setNsith("2"); params.setBran("0123456789lmnopqrstuv"); - EventResult icpResult1 = client.identifiers().create("aid2", params); - Operation op_1 = Operation.fromObject(waitOperation(client, icpResult1.op())); - opResponse = (HashMap) op_1.getResponse(); - opResponseDone = op_1.isDone() ? "true" : "false"; - HashMap aid2 = opResponse; - Serder icp2 = new Serder(aid2); + var icpResult1 = client.identifiers().create("aid2", params); + waitForCompleted(client, icpResult1.op()); + Serder icp2 = icpResult1.serder(); assertEquals("EP10ooRj0DJF0HWZePEYMLPl-arMV-MAoTKK-o3DXbgX", icp2.getPre()); assertEquals(3, icp2.getVerfers().size()); @@ -119,8 +106,8 @@ void saltyTest() throws Exception { CreateIdentifierArgs kargs = new CreateIdentifierArgs(); kargs.setAlgo(Manager.Algos.salty); - EventResult icpResult2 = client.identifiers().create("aid3", kargs); - waitOperation(client, icpResult2.op()); + var icpResult2 = client.identifiers().create("aid3", kargs); + waitForCompleted(client, icpResult2.op()); IdentifierListResponse aidsJson2 = client.identifiers().list(0, 24); List aids2 = aidsJson2.aids(); @@ -144,10 +131,9 @@ void saltyTest() throws Exception { Assertions.assertEquals("aid3", aid6.getName()); // Rotate - EventResult icpResultRotate = client.identifiers().rotate("aid1"); - Operation opRotate = waitOperation(client, icpResultRotate.op()); - Object ked = opRotate.getResponse(); - Serder rotRotate = new Serder((Map) ked); + var icpResultRotate = client.identifiers().rotate("aid1"); + waitForCompleted(client, icpResultRotate.op()); + Serder rotRotate = icpResultRotate.serder(); Assertions.assertEquals("EBQABdRgaxJONrSLcgrdtbASflkvLxJkiDO0H-XmuhGg", rotRotate.getKed().get("d")); Assertions.assertEquals("1", rotRotate.getKed().get("s")); @@ -157,10 +143,9 @@ void saltyTest() throws Exception { Assertions.assertEquals("EJMovBlrBuD6BVeUsGSxLjczbLEbZU9YnTSud9K4nVzk", rotRotate.getDigers().getFirst().getQb64()); // Interact - EventResult icpResultInteract = client.identifiers().interact("aid1", List.of(icp.getPre())); - Operation opInteract = waitOperation(client, icpResultInteract.op()); - Map kedInteract = (Map) opInteract.getResponse(); - Serder ixn = new Serder(kedInteract); + var icpResultInteract = client.identifiers().interact("aid1", List.of(icp.getPre())); + waitForCompleted(client, icpResultInteract.op()); + Serder ixn = icpResultInteract.serder(); Assertions.assertEquals("ENsmRAg_oM7Hl1S-GTRMA7s4y760lQMjzl0aqOQ2iTce", ixn.getKed().get("d")); Assertions.assertEquals("2", ixn.getKed().get("s")); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDIPTest.java b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDIPTest.java index 1ad9ffdc..015c2264 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDIPTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDIPTest.java @@ -2,17 +2,18 @@ import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.e2e.utils.ResolveEnv; import org.cardanofoundation.signify.e2e.utils.TestUtils; +import org.cardanofoundation.signify.generated.keria.model.CompletedDelegationOperation; +import org.cardanofoundation.signify.generated.keria.model.DelegationOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; -import org.junit.jupiter.api.BeforeEach; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.*; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -21,7 +22,6 @@ class SinglesigDIPTest extends BaseIntegrationTest { private static SignifyClient client1, client2; - private static String contact1_id; private static String name1_id, name1_oobi; @BeforeAll @@ -40,7 +40,7 @@ public void getIdentifier() throws Exception { @BeforeEach public void getContact() throws IOException, InterruptedException, LibsodiumException { - contact1_id = TestUtils.getOrCreateContact(client2, "contact1", name1_oobi); + TestUtils.getOrCreateContact(client2, "contact1", name1_oobi); } @Test @@ -49,8 +49,8 @@ public void singlesig_dip() throws Exception { CreateIdentifierArgs kargs = new CreateIdentifierArgs(); kargs.setDelpre(name1_id); - EventResult result = client2.identifiers().create("delegate1", kargs); - Operation op = Operation.fromObject(result.op()); + var result = client2.identifiers().create("delegate1", kargs); + KelOperation op = result.op(); HabState delegate1 = client2.identifiers().get("delegate1").get(); opResponseName = op.getName(); Assertions.assertEquals(opResponseName, "delegation." + delegate1.getPrefix()); @@ -61,21 +61,20 @@ public void singlesig_dip() throws Exception { seal.put("s", "0"); seal.put("d", delegate1.getPrefix()); - result = client1.identifiers().interact("name1", seal); - Object op1 = result.op(); + var interactResult1 = client1.identifiers().interact("name1", seal); + KelOperation op1 = interactResult1.op(); // Refresh keystate to sn=1 - Object op2 = client2.keyStates().query(name1_id, "1", null); + QueryOperation op2 = client2.keyStates().query(name1_id, "1", null); List opList = waitOperationAsync( new WaitOperationArgs(client2, op), new WaitOperationArgs(client1, op1), new WaitOperationArgs(client2, op2) ); - op = opList.getFirst(); + op = (DelegationOperation) opList.getFirst(); - HashMap responseMap = (HashMap) op.getResponse(); - opResponseI = responseMap.get("i").toString(); + opResponseI = ((CompletedDelegationOperation) op).getResponse().getI(); delegate1 = client2.identifiers().get("delegate1").get(); Assertions.assertEquals(delegate1.getPrefix(), opResponseI); @@ -85,8 +84,8 @@ public void singlesig_dip() throws Exception { kargs.setDelpre(name1_id); kargs.setToad(env.witnessIds().size()); kargs.setWits(env.witnessIds()); - result = client2.identifiers().create("delegate2", kargs); - op = Operation.fromObject(result.op()); + var result2 = client2.identifiers().create("delegate2", kargs); + op = result2.op(); opResponseName = op.getName(); HabState delegate2 = client2.identifiers().get("delegate2").get(); @@ -98,8 +97,8 @@ public void singlesig_dip() throws Exception { seal.put("s", "0"); seal.put("d", delegate2.getPrefix()); - result = client1.identifiers().interact("name1", seal); - op1 = result.op(); + var interactResult2 = client1.identifiers().interact("name1", seal); + op1 = interactResult2.op(); // refresh keystate to seal event op2 = client2.keyStates().query(name1_id, null, seal); @@ -109,17 +108,16 @@ public void singlesig_dip() throws Exception { new WaitOperationArgs(client1, op1), new WaitOperationArgs(client2, op2) ); - op = opList.getFirst(); + op = (DelegationOperation) opList.getFirst(); - responseMap = (HashMap) op.getResponse(); - opResponseI = responseMap.get("i").toString(); + opResponseI = ((CompletedDelegationOperation) op).getResponse().getI(); // Delegate waits for completion delegate2 = client2.identifiers().get("delegate2").get(); Assertions.assertEquals(delegate2.getPrefix(), opResponseI); // Make sure query with seal is idempotent - op = Operation.fromObject(client2.keyStates().query(name1_id, null, seal)); - waitOperation(client2, op); + QueryOperation queryOp = client2.keyStates().query(name1_id, null, seal); + waitForCompleted(client2, queryOp); } } diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDRTTest.java b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDRTTest.java index 70d74643..eb9f2a0d 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDRTTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigDRTTest.java @@ -2,19 +2,22 @@ import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.e2e.utils.TestUtils; +import org.cardanofoundation.signify.generated.keria.model.CompletedDelegationOperation; +import org.cardanofoundation.signify.generated.keria.model.CompletedDelegationOperationResponse; +import org.cardanofoundation.signify.generated.keria.model.DelegationOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; +import org.cardanofoundation.signify.generated.keria.model.Operation; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -24,7 +27,6 @@ public class SinglesigDRTTest extends BaseIntegrationTest { private static SignifyClient delegator, delegate; private static String name1_id, name1_oobi; - private static String contact1_id; private String opResponseName, opResponseT, opResponseS; @BeforeAll @@ -43,7 +45,7 @@ public void getIdentifier() throws Exception { @BeforeEach public void getContact() throws IOException, InterruptedException, LibsodiumException { - contact1_id = TestUtils.getOrCreateContact(delegate, "contact1", name1_oobi); + TestUtils.getOrCreateContact(delegate, "contact1", name1_oobi); } @Test @@ -52,8 +54,8 @@ public void singlesig_drt() throws Exception { CreateIdentifierArgs kargs = new CreateIdentifierArgs(); kargs.setDelpre(name1_id); - EventResult result = delegate.identifiers().create("delegate1", kargs); - Operation op = Operation.fromObject(result.op()); + var result = delegate.identifiers().create("delegate1", kargs); + KelOperation op = result.op(); HabState delegate1 = delegate.identifiers().get("delegate1").get(); opResponseName = op.getName(); @@ -65,9 +67,9 @@ public void singlesig_drt() throws Exception { seal.put("s", "0"); seal.put("d", delegate1.getPrefix()); - result = delegator.identifiers().interact("name1", seal); - Object op1 = result.op(); - Object op2 = delegate.keyStates().query(name1_id, "1", null); + var interactResult1 = delegator.identifiers().interact("name1", seal); + KelOperation op1 = interactResult1.op(); + QueryOperation op2 = delegate.keyStates().query(name1_id, "1", null); waitOperationAsync( new WaitOperationArgs(delegate, op), @@ -76,11 +78,11 @@ public void singlesig_drt() throws Exception { ); RotateIdentifierArgs karg = RotateIdentifierArgs.builder().build(); - result = delegate.identifiers().rotate("delegate1", karg); - op = Operation.fromObject(result.op()); + var rotResult = delegate.identifiers().rotate("delegate1", karg); + op = rotResult.op(); opResponseName = op.getName(); - Assertions.assertEquals(opResponseName, "delegation." + result.serder().getKed().get("d")); + Assertions.assertEquals(opResponseName, "delegation." + rotResult.serder().getKed().get("d")); // delegator approves delegate delegate1 = delegate.identifiers().get("delegate1").get(); @@ -89,8 +91,8 @@ public void singlesig_drt() throws Exception { seal.put("s", "1"); seal.put("d", delegate1.getState().getD()); - result = delegator.identifiers().interact("name1", seal); - op1 = result.op(); + var interactResult2 = delegator.identifiers().interact("name1", seal); + op1 = interactResult2.op(); op2 = delegate.keyStates().query(name1_id, "2", null); List operationList = waitOperationAsync( @@ -99,10 +101,10 @@ public void singlesig_drt() throws Exception { new WaitOperationArgs(delegate, op2) ); - op = operationList.getFirst(); - HashMap opResponse = (HashMap) op.getResponse(); - opResponseT = opResponse.get("t"); - opResponseS = opResponse.get("s"); + DelegationOperation dop = (DelegationOperation) operationList.getFirst(); + CompletedDelegationOperationResponse opResponse = ((CompletedDelegationOperation) dop).getResponse(); + opResponseT = opResponse.getT(); + opResponseS = opResponse.getS(); Assertions.assertEquals("drt", opResponseT); Assertions.assertEquals("1", opResponseS); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigIXNTest.java b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigIXNTest.java index 61300c9f..d9a68bc5 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigIXNTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigIXNTest.java @@ -1,17 +1,16 @@ package org.cardanofoundation.signify.e2e; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.aiding.EventResult; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; import org.cardanofoundation.signify.e2e.utils.TestUtils; +import org.cardanofoundation.signify.generated.keria.model.CompletedQueryOperation; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.HashMap; import java.util.List; import static org.cardanofoundation.signify.e2e.utils.TestUtils.*; @@ -21,7 +20,6 @@ public class SinglesigIXNTest extends BaseIntegrationTest { static SignifyClient client1, client2; static String name1_id, name1_oobi; static String contact1_id; - private HashMap response; @BeforeAll public static void getClients() { @@ -66,8 +64,8 @@ public void singlesig_ixn_ixn1() throws Exception { assertNotNull(keyStateRecord0); // ixn - EventResult result = client1.identifiers().interact("name1", null); - waitOperation(client1, result.op()); + var result = client1.identifiers().interact("name1", null); + waitForCompleted(client1, result.op()); // local keystate after rot KeyStateRecord keyStateRecord1 = client1.keyStates().get(name1_id).get(); @@ -88,14 +86,13 @@ public void singlesig_ixn_ixn1() throws Exception { // refresh remote keystate String sn = keyStateRecord1.getS(); - Object op = client2.keyStates().query(contact1_id, sn, null); - op = waitOperation(client2, op); + QueryOperation op = client2.keyStates().query(contact1_id, sn, null); + CompletedQueryOperation completedOp = waitForCompleted(client2, op, CompletedQueryOperation.class); - response = (HashMap) Operation.fromObject(op).getResponse(); - HashMap keyState3 = response; + KeyStateRecord keyState3 = completedOp.getResponse(); // local and remote keystate match - assertEquals(keyState3.get("s"), + assertEquals(keyState3.getS(), keyStateRecord1.getS()); } } diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigROTTest.java b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigROTTest.java index 05f5923e..ca02b067 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigROTTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigROTTest.java @@ -1,19 +1,17 @@ package org.cardanofoundation.signify.e2e; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.cesr.exceptions.LibsodiumException; +import org.cardanofoundation.signify.generated.keria.model.CompletedQueryOperation; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.QueryOperation; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.*; import java.util.List; -import java.util.Map; import java.util.concurrent.ExecutionException; import static org.junit.jupiter.api.Assertions.*; @@ -23,7 +21,6 @@ public class SinglesigROTTest extends BaseIntegrationTest { static SignifyClient client1, client2; static String contact1_id; static String name1_id, name1_oobi; - private HashMap response; @BeforeAll public static void getClients() throws Exception { @@ -77,8 +74,8 @@ public void singlesig_rot_rot1() throws Exception { // rot RotateIdentifierArgs args = RotateIdentifierArgs.builder().build(); - EventResult result = client1.identifiers().rotate("name1", args); - waitOperation(client1, result.op()); + var result = client1.identifiers().rotate("name1", args); + waitForCompleted(client1, result.op()); // local keystate after rot KeyStateRecord keyStateRecord1 = client1.keyStates().get(name1_id).get(); @@ -102,14 +99,13 @@ public void singlesig_rot_rot1() throws Exception { // refresh remote keystate String sn = keyStateRecord1.getS(); - Operation op = Operation.fromObject(client2.keyStates().query(contact1_id, sn, null)); - op = waitOperation(client2, op); - response = (HashMap) op.getResponse(); + QueryOperation queryOp = client2.keyStates().query(contact1_id, sn, null); + CompletedQueryOperation completedOp = waitForCompleted(client2, queryOp, CompletedQueryOperation.class); + KeyStateRecord keyState3 = completedOp.getResponse(); - HashMap keyState3 = response; // local and remote keystate match - assertEquals(keyState3.get("s"), keyStateRecord1.getS()); - assertEquals(keyState3.get("k"), keyStateRecord1.getK()); - assertEquals(keyState3.get("n"), keyStateRecord1.getN()); + assertEquals(keyState3.getS(), keyStateRecord1.getS()); + assertEquals(keyState3.getK(), keyStateRecord1.getK()); + assertEquals(keyState3.getN(), keyStateRecord1.getN()); } } diff --git a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigVleiIssuanceTest.java b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigVleiIssuanceTest.java index 2a76fb72..d7e098d4 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/SinglesigVleiIssuanceTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/SinglesigVleiIssuanceTest.java @@ -550,7 +550,7 @@ public IssuerRegistry getOrCreateRegistry(SignifyClient client, Aid aid, String registryArgs.setRegistryName(registryName); RegistryResult regResult = client.registries().create(registryArgs); - waitOperation(client, regResult.op()); + waitForCompleted(client, regResult.op()); registriesList = client.registries().list(aid.name); Registry registryBody = registriesList.get(0); @@ -571,14 +571,14 @@ public void sendGrantMessage(SignifyClient senderClient, Aid senderAid, Aid reci .build(); Exchanging.ExchangeMessageResult result = senderClient.ipex().grant(grantArgs); - Object op = senderClient.ipex().submitGrant( + ExchangeOperation op = senderClient.ipex().submitGrant( senderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(recipientAid.prefix) ); - waitOperation(senderClient, op); + waitForCompleted(senderClient, op); } public void sendAdmitMessage(SignifyClient senderClient, Aid senderAid, Aid recipientAid) throws Exception { @@ -596,14 +596,14 @@ public void sendAdmitMessage(SignifyClient senderClient, Aid senderAid, Aid reci .build(); Exchanging.ExchangeMessageResult result = senderClient.ipex().admit(admitArgs); - Object op = senderClient.ipex().submitAdmit( + ExchangeOperation op = senderClient.ipex().submitAdmit( senderAid.name, result.exn(), result.sigs(), result.atc(), Collections.singletonList(recipientAid.prefix) ); - waitOperation(senderClient, op); + waitForCompleted(senderClient, op); markAndRemoveNotification(senderClient, grantNotification); } diff --git a/src/test/java/org/cardanofoundation/signify/e2e/WitnessTest.java b/src/test/java/org/cardanofoundation/signify/e2e/WitnessTest.java index 10c0ad72..5cd72ae3 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/WitnessTest.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/WitnessTest.java @@ -3,9 +3,7 @@ import org.cardanofoundation.signify.app.coring.Coring; import org.cardanofoundation.signify.app.clienting.SignifyClient; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; -import org.cardanofoundation.signify.cesr.Salter; import org.cardanofoundation.signify.generated.keria.model.HabState; import org.cardanofoundation.signify.generated.keria.model.Tier; import org.junit.jupiter.api.Test; @@ -15,7 +13,7 @@ import java.util.Collections; import static org.cardanofoundation.signify.e2e.utils.TestUtils.resolveOobi; -import static org.cardanofoundation.signify.e2e.utils.TestUtils.waitOperation; +import static org.cardanofoundation.signify.e2e.utils.TestUtils.waitForCompleted; import static org.junit.jupiter.api.Assertions.assertEquals; public class WitnessTest { @@ -53,15 +51,15 @@ public void testWitness() throws Exception { kargs.setToad(1); kargs.setWits(Collections.singletonList(WITNESS_AID)); - EventResult icpResult1 = client1.identifiers().create("aid1", kargs); - waitOperation(client1, icpResult1.op()); + var icpResult1 = client1.identifiers().create("aid1", kargs); + waitForCompleted(client1, icpResult1.op()); HabState aid1 = client1.identifiers().get("aid1").get(); System.out.println("AID1: " + aid1.getPrefix()); assertEquals(1, aid1.getState().getB().size()); assertEquals(WITNESS_AID, aid1.getState().getB().getFirst()); - icpResult1 = client1.identifiers().rotate("aid1"); - waitOperation(client1, icpResult1.op()); + var rotResult1 = client1.identifiers().rotate("aid1"); + waitForCompleted(client1, rotResult1.op()); aid1 = client1.identifiers().get("aid1").get(); assertEquals(1, aid1.getState().getB().size()); assertEquals(WITNESS_AID, aid1.getState().getB().getFirst()); @@ -70,16 +68,16 @@ public void testWitness() throws Exception { RotateIdentifierArgs args = RotateIdentifierArgs.builder().build(); args.setCuts(Collections.singletonList(WITNESS_AID)); - icpResult1 = client1.identifiers().rotate("aid1", args); - waitOperation(client1, icpResult1.op()); + var rotResult2 = client1.identifiers().rotate("aid1", args); + waitForCompleted(client1, rotResult2.op()); aid1 = client1.identifiers().get("aid1").get(); assertEquals(0, aid1.getState().getB().size()); // Add witness again args.setCuts(null); args.setAdds(Collections.singletonList(WITNESS_AID)); - icpResult1 = client1.identifiers().rotate("aid1", args); - waitOperation(client1, icpResult1.op()); + var rotResult3 = client1.identifiers().rotate("aid1", args); + waitForCompleted(client1, rotResult3.op()); aid1 = client1.identifiers().get("aid1").get(); assertEquals(1, aid1.getState().getB().size()); assertEquals(WITNESS_AID, aid1.getState().getB().getFirst()); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/utils/MultisigUtils.java b/src/test/java/org/cardanofoundation/signify/e2e/utils/MultisigUtils.java index d6f2a416..aa60e933 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/utils/MultisigUtils.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/utils/MultisigUtils.java @@ -6,10 +6,8 @@ import lombok.Setter; import org.cardanofoundation.signify.app.Exchanging; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.RotateIdentifierArgs; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialData; import org.cardanofoundation.signify.app.credentialing.credentials.IssueCredentialResult; import org.cardanofoundation.signify.app.credentialing.ipex.IpexAdmitArgs; @@ -32,16 +30,22 @@ import org.cardanofoundation.signify.generated.keria.model.AidRecord; import org.cardanofoundation.signify.generated.keria.model.Credential; +import org.cardanofoundation.signify.generated.keria.model.CredentialOperation; +import org.cardanofoundation.signify.generated.keria.model.DelegatorOperation; +import org.cardanofoundation.signify.generated.keria.model.EndRoleOperation; import org.cardanofoundation.signify.generated.keria.model.Exn; import org.cardanofoundation.signify.generated.keria.model.ExnMultisig; import org.cardanofoundation.signify.generated.keria.model.GroupMember; +import org.cardanofoundation.signify.generated.keria.model.GroupOperation; import org.cardanofoundation.signify.generated.keria.model.HabState; +import org.cardanofoundation.signify.generated.keria.model.KelOperation; import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; +import org.cardanofoundation.signify.generated.keria.model.RegistryOperation; @SuppressWarnings("unchecked") public class MultisigUtils { - public static Object acceptMultisigIncept(SignifyClient client2, AcceptMultisigInceptArgs args) throws IOException, InterruptedException, DigestException, LibsodiumException, ExecutionException { + public static KelOperation acceptMultisigIncept(SignifyClient client2, AcceptMultisigInceptArgs args) throws IOException, InterruptedException, DigestException, LibsodiumException, ExecutionException { final HabState memberHab = client2.identifiers().get(args.getLocalMemberName()) .orElseThrow(() -> new IllegalArgumentException("Identifier not found: " + args.getLocalMemberName())); @@ -72,8 +76,8 @@ public static Object acceptMultisigIncept(SignifyClient client2, AcceptMultisigI createIdentifierArgs.setRstates(rstates); createIdentifierArgs.setDelpre(icp.get("di") != null ? icp.get("di").toString() : null); - EventResult icpResult2 = client2.identifiers().create(args.getGroupName(), createIdentifierArgs); - Object op2 = icpResult2.op(); + var icpResult2 = client2.identifiers().create(args.getGroupName(), createIdentifierArgs); + KelOperation op2 = icpResult2.op(); Serder serder = icpResult2.serder(); List sigs = icpResult2.sigs(); List sigers = sigs.stream().map(Siger::new).toList(); @@ -97,7 +101,7 @@ public static Object acceptMultisigIncept(SignifyClient client2, AcceptMultisigI return op2; } - public static Object interactMultisig(SignifyClient client, String groupName, HabState aid, + public static KelOperation interactMultisig(SignifyClient client, String groupName, HabState aid, List otherMemberAIDs, Object data, List states, @@ -106,7 +110,7 @@ public static Object interactMultisig(SignifyClient client, String groupName, Ha TestUtils.waitAndMarkNotification(client, "/multisig/ixn"); } - EventResult interactResult = client + var interactResult = client .identifiers() .interact(groupName, data); @@ -142,7 +146,7 @@ public static Object interactMultisig(SignifyClient client, String groupName, Ha return interactResult.op(); } - public static Object rotateMultisig(SignifyClient client, String groupName, HabState aid, + public static KelOperation rotateMultisig(SignifyClient client, String groupName, HabState aid, List otherMemberAIDs, RotateIdentifierArgs kargs, String route, @@ -151,7 +155,7 @@ public static Object rotateMultisig(SignifyClient client, String groupName, HabS TestUtils.waitAndMarkNotification(client, "/multisig/rot"); } - EventResult interactResult = client + var interactResult = client .identifiers() .rotate(groupName, kargs); @@ -194,7 +198,7 @@ public static Object rotateMultisig(SignifyClient client, String groupName, HabS return interactResult.op(); } - public static List addEndRoleMultisig(SignifyClient client, String groupName, HabState aid, + public static List addEndRoleMultisig(SignifyClient client, String groupName, HabState aid, List otherMemberAIDs, HabState multisigAID, String timestamp, boolean isInitiator) throws Exception { @@ -202,12 +206,12 @@ public static List addEndRoleMultisig(SignifyClient client, String group TestUtils.waitAndMarkNotification(client, "/multisig/rpy"); } - List opList = new ArrayList<>(); + List opList = new ArrayList<>(); GroupMember members = client.identifiers().members(groupName); for (AidRecord signing : members.getSigning()) { String eid = signing.getEnds().getAgent().keySet().iterator().next(); - EventResult endRoleResult = client + var endRoleResult = client .identifiers() .addEndRole(multisigAID.getName(), "agent", eid, timestamp); @@ -248,7 +252,7 @@ public static List addEndRoleMultisig(SignifyClient client, String group return opList; } - public static List addEndRoleMultisigs(SignifyClient client, String groupName, HabState aid, + public static List addEndRoleMultisigs(SignifyClient client, String groupName, HabState aid, List otherMemberAIDs, HabState multisigAID, String timestamp, boolean isInitiator) throws Exception { @@ -256,11 +260,11 @@ public static List addEndRoleMultisigs(SignifyClient client, String grou TestUtils.waitAndMarkNotification(client, "/multisig/rpy"); } - List opList = new ArrayList<>(); + List opList = new ArrayList<>(); GroupMember members = client.identifiers().members(groupName); String eid = members.getSigning().getFirst().getEnds().getAgent().keySet().iterator().next(); - EventResult endRoleResult = client + var endRoleResult = client .identifiers() .addEndRole(multisigAID.getName(), "agent", eid, timestamp); @@ -361,7 +365,7 @@ public static void admitMultisig( ); } - public static Object createAIDMultisig( + public static GroupOperation createAIDMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -373,8 +377,8 @@ public static Object createAIDMultisig( TestUtils.waitAndMarkNotification(client, "/multisig/icp"); } - EventResult icpResult = client.identifiers().create(groupName, kargs); - Object op = icpResult.op(); + var icpResult = client.identifiers().create(groupName, kargs); + GroupOperation op = (GroupOperation) icpResult.op(); Serder serder = icpResult.serder(); List sigs = icpResult.sigs(); @@ -413,7 +417,7 @@ public static Object createAIDMultisig( return op; } - public static Object createRegistryMultisig( + public static RegistryOperation createRegistryMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -434,11 +438,11 @@ public static Object createRegistryMultisig( .nonce(nonce) .build(); RegistryResult vcpResult = client.registries().create(createRegistryArgs); - Object op = vcpResult.op(); + RegistryOperation op = vcpResult.op(); - Serder serder = vcpResult.getRegser(); - Serder anc = vcpResult.getSerder(); - List sigs = vcpResult.getSigs(); + Serder serder = vcpResult.regser(); + Serder anc = vcpResult.serder(); + List sigs = vcpResult.sigs(); List sigers = sigs.stream().map(Siger::new).toList(); String ims = new String(Eventing.messagize(anc, sigers, null, null, null, false)); @@ -466,7 +470,7 @@ public static Object createRegistryMultisig( return op; } - public static Object createRegistryMultisig( + public static RegistryOperation createRegistryMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -478,7 +482,7 @@ public static Object createRegistryMultisig( return createRegistryMultisig(client, aid, otherMembersAIDs, multisigAID, registryName, nonce, "registry", isInitiator); } - public static Object createMultisig( + public static RegistryOperation createMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -498,11 +502,11 @@ public static Object createMultisig( .nonce(nonce) .build(); RegistryResult vcpResult = client.registries().create(createRegistryArgs); - Object op = vcpResult.op(); + RegistryOperation op = vcpResult.op(); - Serder serder = vcpResult.getRegser(); - Serder anc = vcpResult.getSerder(); - List sigs = vcpResult.getSigs(); + Serder serder = vcpResult.regser(); + Serder anc = vcpResult.serder(); + List sigs = vcpResult.sigs(); List sigers = sigs.stream().map(Siger::new).toList(); String ims = new String(Eventing.messagize(anc, sigers, null, null, null, false)); @@ -531,7 +535,7 @@ public static Object createMultisig( - public static Object delegateMultisig( + public static DelegatorOperation delegateMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -548,8 +552,8 @@ public static Object delegateMultisig( anchor = (Map) ((List) ixn.get("a")).get(0); } - EventResult delResult = client.delegations().approve(multisigAID.getName(), anchor); - Object appOp = delResult.op(); + var delResult = client.delegations().approve(multisigAID.getName(), anchor); + DelegatorOperation appOp = delResult.op(); System.out.println("Delegator " + aid.getName() + "(" + aid.getPrefix() + ") approved delegation for " + multisigAID.getName() + " with anchor " + anchor); @@ -656,7 +660,7 @@ public static void grantMultisig( ); } - public static Object issueCredentialMultisig( + public static CredentialOperation issueCredentialMultisig( SignifyClient client, HabState aid, List otherMembersAIDs, @@ -669,7 +673,7 @@ public static Object issueCredentialMultisig( } IssueCredentialResult credResult = client.credentials().issue(multisigAIDName, kargsIss); - Operation op = credResult.getOp(); + CredentialOperation op = credResult.getOp(); HabState multisigAID = client.identifiers().get(multisigAIDName) .orElseThrow(() -> new IllegalArgumentException("Identifier not found: " + multisigAIDName)); @@ -703,7 +707,7 @@ public static Object issueCredentialMultisig( return op; } - public static Object startMultisigIncept( + public static KelOperation startMultisigIncept( SignifyClient client, StartMultisigInceptArgs args ) throws IOException, InterruptedException, DigestException, LibsodiumException, ExecutionException { @@ -727,8 +731,8 @@ public static Object startMultisigIncept( createIdentifierArgs.setStates(participantStates); createIdentifierArgs.setRstates(participantStates); - EventResult icpResult1 = client.identifiers().create(args.getGroupName(), createIdentifierArgs); - Object op1 = icpResult1.op(); + var icpResult1 = client.identifiers().create(args.getGroupName(), createIdentifierArgs); + KelOperation op1 = icpResult1.op(); Serder serder = icpResult1.serder(); List sigs = icpResult1.sigs(); diff --git a/src/test/java/org/cardanofoundation/signify/e2e/utils/TestUtils.java b/src/test/java/org/cardanofoundation/signify/e2e/utils/TestUtils.java index ee992876..45df1439 100644 --- a/src/test/java/org/cardanofoundation/signify/e2e/utils/TestUtils.java +++ b/src/test/java/org/cardanofoundation/signify/e2e/utils/TestUtils.java @@ -1,6 +1,5 @@ package org.cardanofoundation.signify.e2e.utils; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.AllArgsConstructor; @@ -8,13 +7,11 @@ import lombok.NoArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.cardanofoundation.signify.generated.keria.model.Contact; + import org.cardanofoundation.signify.app.Notifying; import org.cardanofoundation.signify.app.aiding.CreateIdentifierArgs; -import org.cardanofoundation.signify.app.aiding.EventResult; import org.cardanofoundation.signify.app.aiding.IdentifierListResponse; import org.cardanofoundation.signify.app.clienting.SignifyClient; -import org.cardanofoundation.signify.app.coring.Operation; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialData; import org.cardanofoundation.signify.app.credentialing.credentials.CredentialFilter; import org.cardanofoundation.signify.app.credentialing.credentials.IssueCredentialResult; @@ -31,17 +28,12 @@ import java.util.function.Supplier; import java.util.stream.Collectors; -import org.cardanofoundation.signify.generated.keria.model.KeyStateRecord; -import org.cardanofoundation.signify.generated.keria.model.OOBI; -import org.cardanofoundation.signify.generated.keria.model.Tier; - import static org.cardanofoundation.signify.app.coring.Coring.randomPasscode; import static org.cardanofoundation.signify.e2e.utils.Retry.retry; import static org.junit.jupiter.api.Assertions.*; @Slf4j public class TestUtils { - private static final ObjectMapper objectMapper = new ObjectMapper(); private static List filteredNotes; public static class Aid { @@ -91,7 +83,7 @@ public static void admitSinglesig(SignifyClient client, String aidName, HabState public static void assertOperations(List clients) throws IOException, InterruptedException, LibsodiumException { for (SignifyClient client : clients) { - List> operations = client.operations().list(null); + List operations = client.operations().list(); assertEquals(0, operations.size()); } } @@ -162,19 +154,19 @@ public static HabState getOrCreateAID(SignifyClient client, String name, CreateI if (existingAID.isPresent()) { return existingAID.get(); } else { - EventResult result = client.identifiers().create(name, kargs); - waitOperation(client, result.op()); + var result = client.identifiers().create(name, kargs); + waitForCompleted(client, result.op()); HabState aid = client.identifiers().get(name) .orElseThrow(() -> new IllegalArgumentException("Failed to create identifier: " + name)); - + if (client.getAgent() == null || client.getAgent().getPre() == null) { throw new IllegalArgumentException("Client, agent, or pre cannot be null"); } String pre = client.getAgent().getPre(); - EventResult op = client.identifiers().addEndRole(name, "agent", pre, null); - waitOperation(client, op.op()); + var op = client.identifiers().addEndRole(name, "agent", pre, null); + waitForCompleted(client, op.op()); System.out.println(name + "AID:" + aid.getPrefix()); return aid; @@ -241,7 +233,6 @@ public static SignifyClient getOrCreateClient(String bran) throws Exception { public static String[] getOrCreateIdentifier(SignifyClient client, String name, CreateIdentifierArgs kargs) throws Exception { Object id = null; String eid; - Object op, ops; Optional optionalIdentifier = client.identifiers().get(name); if (optionalIdentifier.isPresent()) { @@ -254,30 +245,22 @@ public static String[] getOrCreateIdentifier(SignifyClient client, String name, kargs.setToad(env.witnessIds().size()); kargs.setWits(env.witnessIds()); } - EventResult result = client.identifiers().create(name, kargs); - op = result.op(); - op = operationToObject(waitOperation(client, op)); - if (op instanceof String) { - try { - HashMap map = objectMapper.readValue( - (String) op, - new TypeReference>() {} - ); - Map idMap = castObjectToLinkedHashMap(map.get("response")); - id = idMap.get("i"); - } catch (Exception ex) { - ex.printStackTrace(); - } - } + var result = client.identifiers().create(name, kargs); + Operation opResult = waitForCompleted(client, result.op()); + id = switch (opResult) { + case CompletedWitnessOperation completed -> completed.getResponse().getI(); + case CompletedDelegationOperation completed -> completed.getResponse().getI(); + case CompletedDoneOperation completed -> completed.getResponse().getI(); + default -> id; + }; if (client.getAgent() != null && client.getAgent().getPre() != null) { eid = client.getAgent().getPre(); } else { throw new IllegalStateException("Agent or pre is null"); } if (!hasEndRole(client, name, "agent", eid)) { - EventResult results = client.identifiers().addEndRole(name, "agent", eid, null); - ops = results.op(); - ops = operationToObject(waitOperation(client, ops)); + var results = client.identifiers().addEndRole(name, "agent", eid, null); + waitForCompleted(client, results.op()); } } @@ -297,17 +280,14 @@ public static String getOrCreateContact(SignifyClient client, String name, Strin return contact.getId(); } } - Object op = client.oobis().resolve(oobi, name); + OOBIOperation op = client.oobis().resolve(oobi, name); - Operation opBody = waitOperation(client, op); - LinkedHashMap response = castObjectToLinkedHashMap(opBody.getResponse()); - - if (response.get("i") != null) { - return response.get("i").toString(); - } else if (response.get("i") == null) { - return getOrCreateContact(client, name, oobi); + CompletedOOBIOperation opBody = waitForCompleted(client, op, CompletedOOBIOperation.class); + String i = opBody.getResponse().getI(); + if (i != null) { + return i; } - return null; + return getOrCreateContact(client, name, oobi); } public static Credential getOrIssueCredential( @@ -365,7 +345,7 @@ public static Credential getOrIssueCredential( cData.setE(source); IssueCredentialResult issResult = issuerClient.credentials().issue(issuerAid.name, cData); - waitOperation(issuerClient, issResult.getOp()); + waitForCompleted(issuerClient, issResult.getOp()); return issuerClient.credentials().get(issResult.getAcdc().getKed().get("d").toString()).get(); } @@ -405,12 +385,27 @@ public static void warnNotifications(List clients) throws Excepti } public static void deleteOperations(SignifyClient client, Operation op) throws IOException, InterruptedException, LibsodiumException { - if (op.getMetadata() != null && op.getMetadata().getDepends() != null) { - deleteOperations(client, op.getMetadata().getDepends()); + String dep = findDependsName(op); + + if (dep != null) { + client.operations().delete(dep); } + client.operations().delete(op.getName()); } + private static String findDependsName(Operation op) { + return switch (op) { + case DelegatorOperation d when d.getMetadata() != null && d.getMetadata().getDepends() != null -> + d.getMetadata().getDepends().getName(); + case RegistryOperation r when r.getMetadata() != null && r.getMetadata().getDepends() != null -> + r.getMetadata().getDepends().getName(); + case CredentialOperation c when c.getMetadata() != null && c.getMetadata().getDepends() != null -> + c.getMetadata().getDepends().getName(); + default -> null; + }; + } + public static void deleteOperation(SignifyClient client, String name) throws IOException, InterruptedException, LibsodiumException { client.operations().delete(name); } @@ -439,8 +434,8 @@ public static void markNotification(SignifyClient client, Notification note) thr } public static void resolveOobi(SignifyClient client, String oobi, String alias) throws IOException, InterruptedException, LibsodiumException { - Object op = client.oobis().resolve(oobi, alias); - waitOperation(client, op); + OOBIOperation op = client.oobis().resolve(oobi, alias); + waitForCompleted(client, op); } public static Credential waitForCredential(SignifyClient client, String credSAID) throws Exception { @@ -511,25 +506,59 @@ public static List waitForNotifications(SignifyClient client, Stri }, retryOptions); } - public static Operation waitOperation( + public static Operation waitOperation( SignifyClient client, - Object op + Operation op ) throws IOException, InterruptedException, LibsodiumException { - Operation operation = Operation.fromObject(op); - operation = client.operations().wait(operation); - deleteOperations(client, operation); - return operation; + Operation result = client.operations().wait(op); + deleteOperations(client, op); + return result; + } + + public static T waitOperation( + SignifyClient client, + Operation op, + Class type + ) throws IOException, InterruptedException, LibsodiumException { + T result = client.operations().wait(op, type); + deleteOperations(client, op); + return result; } - public static Object operationToObject(Operation operation) throws JsonProcessingException { - Map opMap = new LinkedHashMap<>(); - opMap.put("name", operation.getName()); - opMap.put("metadata", operation.getMetadata() != null ? operation.getMetadata().getProperties() : null); - opMap.put("done", operation.isDone()); - opMap.put("error", operation.getError()); - opMap.put("response", operation.getResponse()); + public static Operation waitForCompleted(SignifyClient client, Operation op) + throws IOException, InterruptedException, LibsodiumException { + Operation result = waitOperation(client, op, Operation.class); + String failureMessage = switch (result) { + case FailedChallengeOperation f -> f.getError().getMessage(); + case FailedCredentialOperation f -> f.getError().getMessage(); + case FailedDelegationOperation f -> f.getError().getMessage(); + case FailedDelegatorOperation f -> f.getError().getMessage(); + case FailedDoneOperation f -> f.getError().getMessage(); + case FailedEndRoleOperation f -> f.getError().getMessage(); + case FailedExchangeOperation f -> f.getError().getMessage(); + case FailedGroupOperation f -> f.getError().getMessage(); + case FailedLocSchemeOperation f -> f.getError().getMessage(); + case FailedOOBIOperation f -> f.getError().getMessage(); + case FailedQueryOperation f -> f.getError().getMessage(); + case FailedRegistryOperation f -> f.getError().getMessage(); + case FailedSubmitOperation f -> f.getError().getMessage(); + case FailedWitnessOperation f -> f.getError().getMessage(); + default -> null; + }; + if (failureMessage != null) { + throw new AssertionError("Operation failed: " + failureMessage); + } + return result; + } - return objectMapper.writeValueAsString(opMap); + @SuppressWarnings("unchecked") + public static T waitForCompleted(SignifyClient client, Operation op, Class expectedType) + throws IOException, InterruptedException, LibsodiumException { + Operation result = waitForCompleted(client, op); + if (!expectedType.isInstance(result)) { + throw new AssertionError("Expected " + expectedType.getSimpleName() + " but got " + result.getClass().getSimpleName()); + } + return (T) result; } public static Integer parseInteger(String s) {