Skip to content

Commit

Permalink
Allow custom configuration for the SearchUpdateObserver extension
Browse files Browse the repository at this point in the history
Signed-off-by: Yannic Klem <yannic.klem@bosch.io>
  • Loading branch information
Yannic92 committed Jul 11, 2022
1 parent d4f215d commit 8d9dbcb
Show file tree
Hide file tree
Showing 9 changed files with 30 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import static org.eclipse.ditto.base.model.common.ConditionChecker.checkNotNull;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import akka.actor.ActorSystem;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import static org.eclipse.ditto.base.model.common.ConditionChecker.checkNotNull;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import akka.actor.ActorContext;
import akka.actor.ActorSystem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.eclipse.ditto.jwt.model.JsonWebToken;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import akka.actor.ActorSystem;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import org.eclipse.ditto.jwt.model.JsonWebToken;

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

import akka.actor.ActorSystem;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import org.eclipse.ditto.internal.utils.cacheloaders.EnforcementCacheKey;
import org.eclipse.ditto.internal.utils.cacheloaders.config.AskWithRetryConfig;
import org.eclipse.ditto.internal.utils.config.DefaultScopedConfig;
import org.eclipse.ditto.internal.utils.config.ScopedConfig;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.json.JsonRuntimeException;
import org.eclipse.ditto.policies.enforcement.PolicyCacheLoader;
Expand Down Expand Up @@ -93,7 +94,8 @@ private EnforcementFlow(final ActorSystem actorSystem,
thingsFacade = createThingsFacade(actorSystem, thingsShardRegion, askWithRetryConfig.getAskTimeout(),
thingCacheConfig, thingCacheDispatcher);
this.policyEnforcerCache = policyEnforcerCache;
searchUpdateObserver = SearchUpdateObserver.get(actorSystem);
searchUpdateObserver =
SearchUpdateObserver.get(actorSystem, ScopedConfig.dittoExtension(actorSystem.settings().config()));
cacheRetryDelay = thingCacheConfig.getRetryDelay();
final SearchConfig searchConfig =
DittoSearchConfig.of(DefaultScopedConfig.dittoScoped(actorSystem.settings().config()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@

import javax.annotation.Nullable;

import org.eclipse.ditto.base.service.DittoExtensionIds;
import org.eclipse.ditto.base.service.DittoExtensionPoint;
import org.eclipse.ditto.json.JsonObject;
import org.eclipse.ditto.thingsearch.service.persistence.write.model.Metadata;

import com.typesafe.config.Config;

import akka.actor.ActorSystem;

/**
Expand Down Expand Up @@ -47,18 +50,26 @@ public interface SearchUpdateObserver extends DittoExtensionPoint {
* @return the {@code SearchUpdateObserver} implementation.
* @throws NullPointerException if {@code actorSystem} is {@code null}.
*/
static SearchUpdateObserver get(final ActorSystem actorSystem) {
static SearchUpdateObserver get(final ActorSystem actorSystem, final Config config) {
checkNotNull(actorSystem, "actorSystem");
return ExtensionId.INSTANCE.get(actorSystem);
checkNotNull(config, "config");
final var extensionIdConfig = ExtensionId.computeConfig(config);
return DittoExtensionIds.get(actorSystem)
.computeIfAbsent(extensionIdConfig, ExtensionId::new)
.get(actorSystem);
}

final class ExtensionId extends DittoExtensionPoint.ExtensionId<SearchUpdateObserver> {

private static final String CONFIG_PATH = "ditto.search.search-update-observer.implementation";
private static final ExtensionId INSTANCE = new ExtensionId(SearchUpdateObserver.class);
private static final String CONFIG_KEY = "search-update-observer";
private static final String CONFIG_PATH = "ditto.extensions." + CONFIG_KEY;

private ExtensionId(final ExtensionIdConfig<SearchUpdateObserver> extensionIdConfig) {
super(extensionIdConfig);
}

private ExtensionId(final Class<SearchUpdateObserver> parentClass) {
super(parentClass);
static ExtensionIdConfig<SearchUpdateObserver> computeConfig(final Config config) {
return ExtensionIdConfig.of(SearchUpdateObserver.class, config, CONFIG_KEY);
}

@Override
Expand Down
7 changes: 4 additions & 3 deletions thingsearch/service/src/main/resources/search.conf
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ ditto {
persistence.operations.delay-after-persistence-actor-shutdown = 5s
persistence.operations.delay-after-persistence-actor-shutdown = ${?DELAY_AFTER_PERSISTENCE_ACTOR_SHUTDOWN}

extensions {
search-update-observer = org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver
}

mongodb {

database = "search"
Expand Down Expand Up @@ -59,9 +63,6 @@ ditto {
search-update-mapper.implementation = org.eclipse.ditto.thingsearch.service.persistence.write.streaming.DefaultSearchUpdateMapper
search-update-mapper.implementation = ${?SEARCH_UPDATE_MAPPER_IMPLEMENTATION}

search-update-observer.implementation = org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver
search-update-observer.implementation = ${?SEARCH_UPDATE_OBSERVER_IMPLEMENTATION}

mongo-hints-by-namespace = ${?MONGO_HINTS_BY_NAMESPACE}

index-initialization {
Expand Down
4 changes: 3 additions & 1 deletion thingsearch/service/src/test/resources/actors-test.conf
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
ditto {
extensions {
search-update-observer = "org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver"
}
signal-enrichment.caching-signal-enrichment-facade.provider = org.eclipse.ditto.internal.models.signalenrichment.DittoCachingSignalEnrichmentFacadeProvider
mapping-strategy.implementation = "org.eclipse.ditto.thingsearch.api.ThingSearchMappingStrategies"

Expand Down Expand Up @@ -47,7 +50,6 @@ ditto {
search {
query-criteria-validator.implementation = "org.eclipse.ditto.thingsearch.service.persistence.query.validation.DefaultQueryCriteriaValidator"
search-update-mapper.implementation = "org.eclipse.ditto.thingsearch.service.persistence.write.streaming.DefaultSearchUpdateMapper"
search-update-observer.implementation = "org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver"
mongo-hints-by-namespace = ${?MONGO_HINTS_BY_NAMESPACE}

index-initialization {
Expand Down
4 changes: 3 additions & 1 deletion thingsearch/service/src/test/resources/test.conf
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
ditto {
signal-enrichment.caching-signal-enrichment-facade.provider = org.eclipse.ditto.internal.models.signalenrichment.DittoCachingSignalEnrichmentFacadeProvider
mapping-strategy.implementation = "org.eclipse.ditto.thingsearch.api.ThingSearchMappingStrategies"
extensions {
search-update-observer = "org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver"
}
mongodb {
uri = "mongodb://localhost:27017/test"
pool {
Expand All @@ -24,7 +27,6 @@ ditto {
}
query-criteria-validator = "org.eclipse.ditto.thingsearch.service.persistence.query.validation.DefaultQueryCriteriaValidator"
search-update-mapper.implementation = "org.eclipse.ditto.thingsearch.service.persistence.write.streaming.DefaultSearchUpdateMapper"
search-update-observer.implementation = "org.eclipse.ditto.thingsearch.service.updater.actors.DefaultSearchUpdateObserver"
}
}

Expand Down

0 comments on commit 8d9dbcb

Please sign in to comment.