diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java |
Publish
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java new file mode 100644 index 00000000000..0bbbec655bd --- /dev/null +++ b/container-search/src/main/java/com/yahoo/search/pagetemplates/engine/resolvers/ResolverRegistry.java @@ -0,0 +1,59 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.search.pagetemplates.engine.resolvers; + +import com.google.inject.Inject; +import com.yahoo.component.AbstractComponent; +import com.yahoo.component.ComponentId; +import com.yahoo.component.provider.ComponentRegistry; +import com.yahoo.search.pagetemplates.engine.Resolver; + +import java.util.List; +import java.util.logging.Logger; + +/** + * A registry of available resolver components + * + * @author bratseth + */ +public class ResolverRegistry extends ComponentRegistry<Resolver> { + + private final Resolver defaultResolver; + + public ResolverRegistry(List<Resolver> resolvers) { + addBuiltInResolvers(); + for (Resolver component : resolvers) + registerResolver(component); + defaultResolver = decideDefaultResolver(); + freeze(); + } + + private void addBuiltInResolvers() { + registerResolver(createNativeDeterministicResolver()); + registerResolver(createNativeRandomResolver()); + } + + private Resolver decideDefaultResolver() { + Resolver defaultResolver = getComponent("default"); + if (defaultResolver != null) return defaultResolver; + return getComponent("native.random"); + } + + private Resolver createNativeRandomResolver() { + RandomResolver resolver = new RandomResolver(); + resolver.initId(ComponentId.fromString(RandomResolver.nativeId)); + return resolver; + } + + private DeterministicResolver createNativeDeterministicResolver() { + DeterministicResolver resolver = new DeterministicResolver(); + resolver.initId(ComponentId.fromString(DeterministicResolver.nativeId)); + return resolver; + } + + private void registerResolver(Resolver resolver) { + super.register(resolver.getId(), resolver); + } + + public Resolver defaultResolver() { return defaultResolver; } + +} |