Skip to content

Commit

Permalink
Make ModifyToCreatePolicyTransformer and ModifyToCreateTingTransformer
Browse files Browse the repository at this point in the history
a SignalTransformer

* Keep them in the persistence service instead of the edge services in order
  to save a roundtrip. The existence checker would not need network
  communication to check if the thing/policy exists because it lives
  on the same service instance

Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
  • Loading branch information
Yannic92 committed Jul 19, 2022
1 parent 87c1cf7 commit e71b838
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import java.util.concurrent.CompletionStage;

import org.eclipse.ditto.base.model.signals.Signal;
import org.eclipse.ditto.policies.enforcement.pre.PreEnforcer;
import org.eclipse.ditto.base.service.signaltransformer.SignalTransformer;
import org.eclipse.ditto.policies.model.signals.commands.modify.CreatePolicy;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifyPolicy;

Expand All @@ -27,7 +27,7 @@
/**
* Transforms a ModifyPolicy into a CreatePolicy if the thing does not exist already.
*/
public final class ModifyToCreatePolicyTransformer implements PreEnforcer {
public final class ModifyToCreatePolicyTransformer implements SignalTransformer {

private final PolicyExistenceChecker existenceChecker;

Expand Down
4 changes: 3 additions & 1 deletion policies/service/src/main/resources/policies.conf
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@ ditto {
extension-class = org.eclipse.ditto.policies.enforcement.pre.PreEnforcerProvider
extension-config = {
pre-enforcers = [
"org.eclipse.ditto.policies.service.enforcement.pre.ModifyToCreatePolicyTransformer" // always keep this as first pre-enforcer in order to guarantee that all following pre-enforcers know. That the command is creating a policy instead of modifying it
"org.eclipse.ditto.policies.enforcement.pre.BlockedNamespacePreEnforcer",
"org.eclipse.ditto.policies.enforcement.pre.CommandWithOptionalEntityPreEnforcer",
"org.eclipse.ditto.policies.enforcement.pre.CreationRestrictionPreEnforcer"
]
}
},
signal-transformers-provider.extension-config.signal-transformers = [
"org.eclipse.ditto.policies.service.enforcement.pre.ModifyToCreatePolicyTransformer" // always keep this as first transformer in order to guarantee that all following transformers know that the command is creating a policy instead of modifying it
]
snapshot-adapter = {
extension-class = "org.eclipse.ditto.policies.service.persistence.serializer.PolicyMongoSnapshotAdapter"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@
import java.util.concurrent.CompletionStage;

import org.eclipse.ditto.base.model.signals.Signal;
import org.eclipse.ditto.base.service.signaltransformer.SignalTransformer;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.policies.enforcement.pre.PreEnforcer;
import org.eclipse.ditto.things.model.signals.commands.modify.CreateThing;
import org.eclipse.ditto.things.model.signals.commands.modify.ModifyThing;

Expand All @@ -28,7 +28,7 @@
/**
* Transforms a ModifyThing into a CreateThing if the thing does not exist already.
*/
public final class ModifyToCreateThingTransformer implements PreEnforcer {
public final class ModifyToCreateThingTransformer implements SignalTransformer {

private final ThingExistenceChecker existenceChecker;

Expand Down
4 changes: 3 additions & 1 deletion things/service/src/main/resources/things.conf
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@ ditto {
extension-class = org.eclipse.ditto.policies.enforcement.pre.PreEnforcerProvider
extension-config = {
pre-enforcers = [
"org.eclipse.ditto.things.service.enforcement.pre.ModifyToCreateThingTransformer", // always keep this as first pre-enforcer in order to guarantee that all following pre-enforcers know. That the command is creating a thing instead of modifying it
"org.eclipse.ditto.policies.enforcement.pre.BlockedNamespacePreEnforcer",
"org.eclipse.ditto.policies.enforcement.pre.CommandWithOptionalEntityPreEnforcer",
"org.eclipse.ditto.policies.enforcement.pre.CreationRestrictionPreEnforcer"
]
}
}
signal-transformers-provider.extension-config.signal-transformers = [
"org.eclipse.ditto.things.service.enforcement.pre.ModifyToCreateThingTransformer" // always keep this as first transformer in order to guarantee that all following transformers know that the command is creating a policy instead of modifying it
]
snapshot-adapter = {
extension-class = "org.eclipse.ditto.things.service.persistence.serializer.ThingMongoSnapshotAdapter"
}
Expand Down

0 comments on commit e71b838

Please sign in to comment.