aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
Publish
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java68
1 files changed, 68 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java b/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
new file mode 100644
index 00000000000..676292d6a3a
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/federation/selection/FederationTarget.java
@@ -0,0 +1,68 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.search.federation.selection;
+
+import java.util.Optional;
+import com.yahoo.component.chain.Chain;
+import com.yahoo.search.Searcher;
+import com.yahoo.search.searchchain.model.federation.FederationOptions;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Represents a search chain that the federation searcher should send a query to,
+ * along with a timeout and
+ * custom data reserved for use by the TargetSelector.
+ *
+ * @author tonytv
+ */
+public final class FederationTarget<T> {
+ private final Chain<Searcher> chain;
+ private final FederationOptions federationOptions;
+ private final T customData;
+
+ public FederationTarget(Chain<Searcher> chain, FederationOptions federationOptions, T customData) {
+ checkNotNull(chain);
+ checkNotNull(federationOptions);
+
+ this.chain = chain;
+ this.federationOptions = federationOptions;
+ this.customData = customData;
+ }
+
+ public Chain<Searcher> getChain() {
+ return chain;
+ }
+
+ public FederationOptions getFederationOptions() {
+ return federationOptions;
+ }
+
+ /**
+ * Any data that the TargetSelector wants to associate with this target.
+ * Owned exclusively by the TargetSelector that created this instance.
+ */
+ public T getCustomData() {
+ return customData;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ FederationTarget that = (FederationTarget) o;
+
+ if (!chain.equals(that.chain)) return false;
+ if (customData != null ? !customData.equals(that.customData) : that.customData != null) return false;
+ if (!federationOptions.equals(that.federationOptions)) return false;
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = chain.hashCode();
+ result = 31 * result + federationOptions.hashCode();
+ return result;
+ }
+}