Skip to content

Commit

Permalink
Move placeholder substitution back into persistence services
Browse files Browse the repository at this point in the history
* reason is for example the ModifyToCreate transformer because
  some strategies are only applicable to a create command and I want to
  avoid unnecessary code, therefore I didn't create a new strategy for it.

Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
  • Loading branch information
Yannic92 committed Jul 19, 2022
1 parent 2144cc2 commit 860273c
Show file tree
Hide file tree
Showing 33 changed files with 72 additions and 66 deletions.
8 changes: 8 additions & 0 deletions base/service/pom.xml
Expand Up @@ -115,6 +115,14 @@
<groupId>io.kamon</groupId>
<artifactId>kamon-opentelemetry_${scala.version}</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-placeholders</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.ditto</groupId>
<artifactId>ditto-policies-model</artifactId>
</dependency>

<!-- test scope -->
<dependency>
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

Expand All @@ -26,9 +26,9 @@

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.base.model.headers.WithDittoHeaders;
import org.eclipse.ditto.placeholders.PlaceholderNotResolvableException;
import org.eclipse.ditto.placeholders.ExpressionResolver;
import org.eclipse.ditto.placeholders.PipelineElement;
import org.eclipse.ditto.placeholders.PlaceholderNotResolvableException;

/**
* An algorithm for placeholder substitution based on {@link DittoHeaders}.
Expand Down Expand Up @@ -96,8 +96,7 @@ private Function<String, PipelineElement> createReplacerFunction(final DittoHead
final String placeholder = placeholderWithSpaces.trim();
final Function<DittoHeaders, String> placeholderResolver = replacementDefinitions.get(placeholder);
if (placeholderResolver == null) {
throw PlaceholderNotResolvableException.newUnknownPlaceholderBuilder(placeholder,
knownPlaceHolders)
throw PlaceholderNotResolvableException.newUnknownPlaceholderBuilder(placeholder, knownPlaceHolders)
.dittoHeaders(dittoHeaders)
.build();
}
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

Expand Down
Expand Up @@ -10,10 +10,9 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import org.eclipse.ditto.base.model.signals.Signal;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;

/**
* Defines the (placeholder) substitution strategy for a certain command (which is of type {@link Signal}.
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import java.util.List;
import java.util.Optional;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
Expand All @@ -22,16 +22,16 @@
import java.util.Map;
import java.util.function.Function;

import org.assertj.core.api.Assertions;
import org.assertj.core.api.ThrowableAssert;
import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.base.model.headers.WithDittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.placeholders.PlaceholderNotResolvableException;
import org.junit.Before;
import org.junit.Test;

/**
* Tests {@link org.eclipse.ditto.policies.enforcement.placeholders.HeaderBasedPlaceholderSubstitutionAlgorithm}.
* Tests {@link HeaderBasedPlaceholderSubstitutionAlgorithm}.
*/
public class HeaderBasedPlaceholderSubstitutionAlgorithmTest {

Expand Down Expand Up @@ -161,8 +161,8 @@ private void assertGatewayPlaceholderNotResolvableExceptionIsThrown(final String
.isThrownBy(throwingCallable)
.satisfies(e -> {
assertThat(e.getMessage()).isEqualTo(expectedMessage);
assertThat(e.getDescription()).contains(expectedDescription);
assertThat(e.getDittoHeaders()).isEqualTo(DITTO_HEADERS);
Assertions.assertThat(e.getDescription()).contains(expectedDescription);
Assertions.assertThat(e.getDittoHeaders()).isEqualTo(DITTO_HEADERS);
});
}

Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution;
package org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
Expand All @@ -19,7 +19,7 @@
import org.eclipse.ditto.base.model.auth.AuthorizationSubject;
import org.eclipse.ditto.base.model.auth.DittoAuthorizationContextType;
import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.SubjectIdReplacementDefinition;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.SubjectIdReplacementDefinition;
import org.junit.Before;
import org.junit.Test;

Expand Down
4 changes: 1 addition & 3 deletions edge/service/src/main/resources/ditto-edge-service.conf
Expand Up @@ -13,9 +13,7 @@ ditto {
default-namespace = ${?DITTO_DEFAULT_NAMESPACE}
}
},
"org.eclipse.ditto.edge.service.dispatching.signaltransformer.OriginatorSetterSignalTransformer",
"org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies.PoliciesPlaceholderSubstitution",
"org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.things.ThingsPlaceholderSubstitution"
"org.eclipse.ditto.edge.service.dispatching.signaltransformer.OriginatorSetterSignalTransformer"
]
}
}
Expand Down
Expand Up @@ -10,13 +10,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.Policy;
import org.eclipse.ditto.policies.model.signals.commands.modify.CreatePolicy;

Expand Down
Expand Up @@ -10,13 +10,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.PolicyEntry;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifyPolicyEntries;

Expand Down
Expand Up @@ -10,13 +10,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.PolicyEntry;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifyPolicyEntry;

Expand Down
Expand Up @@ -10,13 +10,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.Policy;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifyPolicy;

Expand Down
Expand Up @@ -10,12 +10,12 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.Subject;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifySubject;

Expand Down
Expand Up @@ -10,13 +10,13 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static java.util.Objects.requireNonNull;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractTypedSubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.HeaderBasedPlaceholderSubstitutionAlgorithm;
import org.eclipse.ditto.policies.model.Subjects;
import org.eclipse.ditto.policies.model.signals.commands.modify.ModifySubjects;

Expand Down
Expand Up @@ -10,10 +10,10 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.AbstractPlaceholderSubstitution;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.AbstractPlaceholderSubstitution;

import com.typesafe.config.Config;

Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import java.util.LinkedList;
import java.util.List;
Expand All @@ -19,8 +19,8 @@
import javax.annotation.concurrent.Immutable;

import org.eclipse.ditto.base.model.signals.Signal;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.SubstitutionStrategy;
import org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.SubstitutionStrategyRegistry;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.SubstitutionStrategy;
import org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.SubstitutionStrategyRegistry;

/**
* Registry containing all of policy specific instances of {@link SubstitutionStrategy}.
Expand Down
3 changes: 2 additions & 1 deletion policies/service/src/main/resources/policies.conf
Expand Up @@ -8,7 +8,8 @@ ditto {
"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
"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
"org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution.PoliciesPlaceholderSubstitution"
]
snapshot-adapter = {
extension-class = "org.eclipse.ditto.policies.service.persistence.serializer.PolicyMongoSnapshotAdapter"
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import java.util.Collections;
import java.util.concurrent.CompletionStage;
Expand All @@ -34,7 +34,7 @@

/**
* Abstract base class for test of concrete implementations of
* {@link org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.SubstitutionStrategy} via
* {@link org.eclipse.ditto.base.service.signaltransformer.placeholdersubstitution.SubstitutionStrategy} via
* {@link PoliciesPlaceholderSubstitution}.
*/
abstract class AbstractPolicySubstitutionStrategyTestBase {
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mutabilitydetector.unittesting.MutabilityAssert.assertInstancesOf;
Expand Down
Expand Up @@ -10,7 +10,7 @@
*
* SPDX-License-Identifier: EPL-2.0
*/
package org.eclipse.ditto.edge.service.dispatching.signaltransformer.placeholdersubstitution.policies;
package org.eclipse.ditto.policies.service.signaltransformation.placeholdersubstitution;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down

0 comments on commit 860273c

Please sign in to comment.