aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java')
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java73
1 files changed, 34 insertions, 39 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
index 7b44a1a4f0d..c313422ab1b 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutingPolicyFactories.java
@@ -1,54 +1,72 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.documentapi.messagebus.protocol;
+import com.yahoo.documentapi.messagebus.protocol.DocumentProtocolPoliciesConfig;
+import com.yahoo.vespa.config.content.DistributionConfig;
+
/**
* @author Simon Thoresen Hult
+ * @author jonmv
*/
-public abstract class RoutingPolicyFactories {
+class RoutingPolicyFactories {
+
+ private RoutingPolicyFactories() { }
static class AndPolicyFactory implements RoutingPolicyFactory {
public DocumentProtocolRoutingPolicy createPolicy(String param) {
return new ANDPolicy(param);
}
-
-
- public void destroy() {
- }
}
static class ContentPolicyFactory implements RoutingPolicyFactory {
+ private final DistributionConfig distributionConfig;
+ public ContentPolicyFactory(DistributionConfig config) { this.distributionConfig = config; }
public DocumentProtocolRoutingPolicy createPolicy(String param) {
- return new ContentPolicy(param);
- }
-
- public void destroy() {
+ return new ContentPolicy(param, distributionConfig);
}
}
static class MessageTypePolicyFactory implements RoutingPolicyFactory {
+
private final String configId;
+ private final DocumentProtocolPoliciesConfig config;
- public MessageTypePolicyFactory(String configId) {
+ public MessageTypePolicyFactory(String configId, DocumentProtocolPoliciesConfig config) {
this.configId = configId;
+ this.config = config;
}
+
public DocumentProtocolRoutingPolicy createPolicy(String param) {
- return new MessageTypePolicy((param == null || param.isEmpty()) ? configId : param);
- }
+ if (config != null) {
+ if (config.cluster(param) == null)
+ return new ErrorPolicy("No message type config for cluster '" + param + "'");
- public void destroy() {
+ return new MessageTypePolicy(config.cluster(param));
+ }
+ return new MessageTypePolicy(param == null || param.isEmpty() ? configId : param);
}
}
static class DocumentRouteSelectorPolicyFactory implements RoutingPolicyFactory {
private final String configId;
+ private final DocumentProtocolPoliciesConfig config;
- public DocumentRouteSelectorPolicyFactory(String configId) {
+ public DocumentRouteSelectorPolicyFactory(String configId, DocumentProtocolPoliciesConfig config) {
this.configId = configId;
+ this.config = config;
}
public DocumentProtocolRoutingPolicy createPolicy(String param) {
- DocumentRouteSelectorPolicy ret = new DocumentRouteSelectorPolicy((param == null || param.isEmpty()) ?
+ if (config != null) {
+ try {
+ return new DocumentRouteSelectorPolicy(config);
+ }
+ catch (IllegalArgumentException e) {
+ return new ErrorPolicy(e.getMessage());
+ }
+ }
+ DocumentRouteSelectorPolicy ret = new DocumentRouteSelectorPolicy(param == null || param.isEmpty() ?
configId : param);
String error = ret.getError();
if (error != null) {
@@ -56,10 +74,6 @@ public abstract class RoutingPolicyFactories {
}
return ret;
}
-
-
- public void destroy() {
- }
}
static class ExternPolicyFactory implements RoutingPolicyFactory {
@@ -71,49 +85,30 @@ public abstract class RoutingPolicyFactories {
}
return ret;
}
-
-
- public void destroy() {
- }
}
static class LocalServicePolicyFactory implements RoutingPolicyFactory {
public DocumentProtocolRoutingPolicy createPolicy(String param) {
return new LocalServicePolicy(param);
}
-
-
- public void destroy() {
- }
}
static class RoundRobinPolicyFactory implements RoutingPolicyFactory {
public DocumentProtocolRoutingPolicy createPolicy(String param) {
return new RoundRobinPolicy();
}
-
-
- public void destroy() {
- }
}
static class LoadBalancerPolicyFactory implements RoutingPolicyFactory {
public DocumentProtocolRoutingPolicy createPolicy(String param) {
return new LoadBalancerPolicy(param);
}
-
-
- public void destroy() {
- }
}
static class SubsetServicePolicyFactory implements RoutingPolicyFactory {
public DocumentProtocolRoutingPolicy createPolicy(String param) {
return new SubsetServicePolicy(param);
}
-
-
- public void destroy() {
- }
}
+
}