aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
new file mode 100644
index 00000000000..99293cb611b
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/federation/FederationSearcherModel.java
@@ -0,0 +1,51 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.searchchain.model.federation;
+
+import java.util.List;
+
+import com.google.common.collect.ImmutableList;
+import com.yahoo.container.bundle.BundleInstantiationSpecification;
+import net.jcip.annotations.Immutable;
+
+import com.yahoo.component.ComponentSpecification;
+import com.yahoo.component.chain.dependencies.Dependencies;
+import com.yahoo.component.chain.model.ChainedComponentModel;
+import com.yahoo.search.federation.FederationSearcher;
+
+/**
+ * Specifies how a federation searcher is to be set up.
+ *
+ * @author tonytv
+ */
+@Immutable
+public class FederationSearcherModel extends ChainedComponentModel {
+
+ /**
+ * Specifies one or more search chains that can be addressed
+ * as a single source.
+ */
+ public static class TargetSpec {
+ public final ComponentSpecification sourceSpec;
+ public final FederationOptions federationOptions;
+
+ public TargetSpec(ComponentSpecification sourceSpec, FederationOptions federationOptions) {
+ this.sourceSpec = sourceSpec;
+ this.federationOptions = federationOptions;
+ }
+ }
+
+ private static ComponentSpecification federationSearcherComponentSpecification =
+ new ComponentSpecification(FederationSearcher.class.getName());
+
+ public final List<TargetSpec> targets;
+ public final boolean inheritDefaultSources;
+
+ public FederationSearcherModel(ComponentSpecification componentId, Dependencies dependencies,
+ List<TargetSpec> targets, boolean inheritDefaultSources) {
+ super(BundleInstantiationSpecification.getInternalSearcherSpecification(componentId, federationSearcherComponentSpecification),
+ dependencies);
+ this.inheritDefaultSources = inheritDefaultSources;
+ this.targets = ImmutableList.copyOf(targets);
+ }
+
+}