diff --git a/signals/commands/policies/pom.xml b/signals/commands/policies/pom.xml index 9c0274c24e..0e13b40089 100755 --- a/signals/commands/policies/pom.xml +++ b/signals/commands/policies/pom.xml @@ -73,13 +73,6 @@ - - org.eclipse.ditto.signals.commands.policies.modify.ModifySubjectResponse#modified(org.eclipse.ditto.model.policies.PolicyId,org.eclipse.ditto.model.policies.Label,org.eclipse.ditto.model.base.headers.DittoHeaders) - org.eclipse.ditto.signals.commands.policies.modify.ModifyPolicyEntryResponse#modified(org.eclipse.ditto.model.policies.PolicyId,org.eclipse.ditto.model.base.headers.DittoHeaders) - org.eclipse.ditto.signals.commands.policies.modify.ModifyResourceResponse#modified(org.eclipse.ditto.model.policies.PolicyId,org.eclipse.ditto.model.policies.Label,org.eclipse.ditto.model.base.headers.DittoHeaders) - org.eclipse.ditto.signals.commands.policies.modify.ModifyPolicyEntryResponse#modified(java.lang.String,org.eclipse.ditto.model.base.headers.DittoHeaders) - org.eclipse.ditto.signals.commands.policies.modify.ModifyResourceResponse#modified(java.lang.String,org.eclipse.ditto.model.policies.Label,org.eclipse.ditto.model.base.headers.DittoHeaders) - org.eclipse.ditto.signals.commands.policies.modify.ModifySubjectResponse#modified(java.lang.String,org.eclipse.ditto.model.policies.Label,org.eclipse.ditto.model.base.headers.DittoHeaders) diff --git a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyPolicyEntryResponse.java b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyPolicyEntryResponse.java index 522d72fd30..2a79e30717 100755 --- a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyPolicyEntryResponse.java +++ b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyPolicyEntryResponse.java @@ -39,6 +39,7 @@ import org.eclipse.ditto.model.policies.PolicyId; import org.eclipse.ditto.signals.commands.base.AbstractCommandResponse; import org.eclipse.ditto.signals.commands.base.CommandResponseJsonDeserializer; +import org.eclipse.ditto.signals.commands.policies.PolicyCommandResponse; /** * Response to a {@link ModifyPolicyEntry} command. @@ -60,20 +61,19 @@ public final class ModifyPolicyEntryResponse extends AbstractCommandResponse(TYPE, jsonObject) - .deserialize((statusCode) -> { + .deserialize(statusCode -> { final String extractedPolicyId = - jsonObject.getValueOrThrow(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID); + jsonObject.getValueOrThrow(PolicyCommandResponse.JsonFields.JSON_POLICY_ID); final PolicyId policyId = PolicyId.of(extractedPolicyId); - final Label readLabel = Label.of(jsonObject.getValueOrThrow(JSON_LABEL)); + final Optional readLabel = jsonObject.getValue(JSON_LABEL); final PolicyEntry extractedPolicyEntryCreated = jsonObject.getValue(JSON_POLICY_ENTRY) .filter(JsonValue::isObject) .map(JsonValue::asObject) - .map(obj -> PoliciesModelFactory.newPolicyEntry(readLabel, obj)) + .flatMap(obj -> readLabel.map(label -> PoliciesModelFactory.newPolicyEntry(label, obj))) .orElse(null); - return new ModifyPolicyEntryResponse(policyId, statusCode, extractedPolicyEntryCreated, readLabel, + return new ModifyPolicyEntryResponse(policyId, statusCode, extractedPolicyEntryCreated, + readLabel.map(Label::of).orElse(null), dittoHeaders); }); } @@ -208,14 +241,9 @@ public Optional getEntity(final JsonSchemaVersion schemaVersion) { @Override public JsonPointer getResourcePath() { - - final Label label; - if (policyEntryCreated == null) { - label = this.label; - } else { - label = policyEntryCreated.getLabel(); + if (null == label) { + return JsonPointer.empty(); } - final String path = "/entries/" + label; return JsonPointer.of(path); } @@ -225,9 +253,11 @@ protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final Js final Predicate thePredicate) { final Predicate predicate = schemaVersion.and(thePredicate); - jsonObjectBuilder.set(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), + jsonObjectBuilder.set(PolicyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), predicate); - jsonObjectBuilder.set(JSON_LABEL, label.toString(), predicate); + if (null != label) { + jsonObjectBuilder.set(JSON_LABEL, label.toString(), predicate); + } if (null != policyEntryCreated) { jsonObjectBuilder.set(JSON_POLICY_ENTRY, policyEntryCreated.toJson(schemaVersion, thePredicate), predicate); } diff --git a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyResourceResponse.java b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyResourceResponse.java index 74719a60d1..1fabc1eb01 100755 --- a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyResourceResponse.java +++ b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifyResourceResponse.java @@ -40,6 +40,7 @@ import org.eclipse.ditto.model.policies.ResourceKey; import org.eclipse.ditto.signals.commands.base.AbstractCommandResponse; import org.eclipse.ditto.signals.commands.base.CommandResponseJsonDeserializer; +import org.eclipse.ditto.signals.commands.policies.PolicyCommandResponse; /** * Response to a {@link ModifyResource} command. @@ -65,12 +66,12 @@ public final class ModifyResourceResponse extends AbstractCommandResponse(TYPE, jsonObject).deserialize(statusCode -> { final String extractedPolicyId = - jsonObject.getValueOrThrow(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID); + jsonObject.getValueOrThrow(PolicyCommandResponse.JsonFields.JSON_POLICY_ID); final PolicyId policyId = PolicyId.of(extractedPolicyId); final String stringLabel = jsonObject.getValueOrThrow(JSON_LABEL); final Label label = PoliciesModelFactory.newLabel(stringLabel); - final ResourceKey extractedResourceKey = - ResourceKey.newInstance(jsonObject.getValueOrThrow(JSON_RESOURCE_KEY)); + final Optional extractedResourceKey = jsonObject.getValue(JSON_RESOURCE_KEY) + .map(ResourceKey::newInstance); final Resource extractedResourceCreated = jsonObject.getValue(JSON_RESOURCE) .map(JsonValue::asObject) - .map(obj -> PoliciesModelFactory.newResource(extractedResourceKey, obj)) + .flatMap(obj -> extractedResourceKey.map(resourceKey -> PoliciesModelFactory.newResource(resourceKey, obj))) .orElse(null); - return new ModifyResourceResponse(policyId, label, extractedResourceKey, extractedResourceCreated, + return new ModifyResourceResponse(policyId, label, + extractedResourceKey.map(ResourceKey::newInstance).orElse(null), extractedResourceCreated, statusCode, dittoHeaders); }); } @@ -247,10 +281,12 @@ protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final Js final Predicate thePredicate) { final Predicate predicate = schemaVersion.and(thePredicate); - jsonObjectBuilder.set(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), + jsonObjectBuilder.set(PolicyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), predicate); jsonObjectBuilder.set(JSON_LABEL, label.toString(), predicate); - jsonObjectBuilder.set(JSON_RESOURCE_KEY, resourceKey.toString(), predicate); + if (null != resourceKey) { + jsonObjectBuilder.set(JSON_RESOURCE_KEY, resourceKey.toString(), predicate); + } if (null != resourceCreated) { jsonObjectBuilder.set(JSON_RESOURCE, resourceCreated.toJson(schemaVersion, thePredicate), predicate); } diff --git a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifySubjectResponse.java b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifySubjectResponse.java index 99ff362fcc..3289a2bdd5 100755 --- a/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifySubjectResponse.java +++ b/signals/commands/policies/src/main/java/org/eclipse/ditto/signals/commands/policies/modify/ModifySubjectResponse.java @@ -40,6 +40,7 @@ import org.eclipse.ditto.model.policies.SubjectId; import org.eclipse.ditto.signals.commands.base.AbstractCommandResponse; import org.eclipse.ditto.signals.commands.base.CommandResponseJsonDeserializer; +import org.eclipse.ditto.signals.commands.policies.PolicyCommandResponse; /** * Response to a {@link ModifySubject} command. @@ -66,19 +67,19 @@ public final class ModifySubjectResponse extends AbstractCommandResponse(TYPE, jsonObject).deserialize(statusCode -> { final String extractedPolicyId = - jsonObject.getValueOrThrow(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID); + jsonObject.getValueOrThrow(PolicyCommandResponse.JsonFields.JSON_POLICY_ID); final PolicyId policyId = PolicyId.of(extractedPolicyId); final Label label = PoliciesModelFactory.newLabel(jsonObject.getValueOrThrow(JSON_LABEL)); - final SubjectId extractedSubjectId = SubjectId.newInstance(jsonObject.getValueOrThrow(JSON_SUBJECT_ID)); + final Optional extractedSubjectId = jsonObject.getValue(JSON_SUBJECT_ID); final Subject extractedSubjectCreated = jsonObject.getValue(JSON_SUBJECT) .map(JsonValue::asObject) - .map(obj -> PoliciesModelFactory.newSubject(extractedSubjectId, obj)) + .flatMap(obj -> extractedSubjectId.map(subjectId -> PoliciesModelFactory.newSubject(subjectId, obj))) .orElse(null); - return new ModifySubjectResponse(policyId, label, extractedSubjectId, extractedSubjectCreated, statusCode, + return new ModifySubjectResponse(policyId, label, + extractedSubjectId.map(SubjectId::newInstance).orElse(null), + extractedSubjectCreated, statusCode, dittoHeaders); }); } @@ -231,6 +267,9 @@ public Optional getEntity(final JsonSchemaVersion schemaVersion) { @Override public JsonPointer getResourcePath() { + if (null == subjectId) { + return JsonPointer.empty(); + } final String path = "/entries/" + label + "/subjects/" + subjectId; return JsonPointer.of(path); } @@ -240,10 +279,12 @@ protected void appendPayload(final JsonObjectBuilder jsonObjectBuilder, final Js final Predicate thePredicate) { final Predicate predicate = schemaVersion.and(thePredicate); - jsonObjectBuilder.set(PolicyModifyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), + jsonObjectBuilder.set(PolicyCommandResponse.JsonFields.JSON_POLICY_ID, String.valueOf(policyId), predicate); jsonObjectBuilder.set(JSON_LABEL, label.toString(), predicate); - jsonObjectBuilder.set(JSON_SUBJECT_ID, subjectId.toString(), predicate); + if (null != subjectId) { + jsonObjectBuilder.set(JSON_SUBJECT_ID, subjectId.toString(), predicate); + } if (null != subjectCreated) { jsonObjectBuilder.set(JSON_SUBJECT, subjectCreated.toJson(schemaVersion, thePredicate), predicate); }