summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2020-08-17 16:59:14 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2020-08-17 17:04:19 +0200
commitefd4542b717f01798aac9dab6dc84d3f6862b9cb (patch)
tree47a59757eb97897460e072178e456ccda7804dd0 /config-model
parent94f7cec36cb97af2a4be9bdbe087ebe857b53db8 (diff)
Model user-generated and non user-generated bindings as separate sub-classes
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java10
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java8
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java9
-rwxr-xr-xconfig-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java67
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java26
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java26
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java6
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java10
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java36
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java11
23 files changed, 153 insertions, 127 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
index a3c5ad53889..9ae9a158631 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogserverContainerCluster.java
@@ -6,8 +6,8 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.handler.ThreadpoolConfig;
import com.yahoo.search.config.QrStartConfig;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
/**
* @author hmusum
@@ -40,7 +40,7 @@ public class LogserverContainerCluster extends ContainerCluster<LogserverContain
private void addLogHandler() {
Handler<?> logHandler = Handler.fromClassName(ContainerCluster.LOG_HANDLER_CLASS);
- logHandler.addServerBindings(BindingPattern.createModelGeneratedFromHttpPath("/logs"));
+ logHandler.addServerBindings(SystemBindingPattern.fromHttpPath("/logs"));
addComponent(logHandler);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
index bb2e85b40e0..5b3e4e1479e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/clustercontroller/ClusterControllerContainer.java
@@ -12,9 +12,9 @@ import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.model.application.validation.RestartConfigs;
import com.yahoo.vespa.model.container.Container;
import com.yahoo.vespa.model.container.component.AccessLogComponent;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Component;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.xml.PlatformBundles;
import java.util.Set;
@@ -79,7 +79,7 @@ public class ClusterControllerContainer extends Container implements
}
private void addHandler(Handler h, String path) {
- h.addServerBindings(BindingPattern.createModelGeneratedFromHttpPath(path));
+ h.addServerBindings(SystemBindingPattern.fromHttpPath(path));
super.addHandler(h);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
index 04a009762ce..b5936887b50 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerCluster.java
@@ -7,12 +7,12 @@ import ai.vespa.metricsproxy.core.MetricsConsumers;
import ai.vespa.metricsproxy.core.MetricsManager;
import ai.vespa.metricsproxy.core.MonitoringConfig;
import ai.vespa.metricsproxy.core.VespaMetrics;
-import ai.vespa.metricsproxy.http.metrics.MetricsV1Handler;
import ai.vespa.metricsproxy.http.application.ApplicationMetricsHandler;
import ai.vespa.metricsproxy.http.application.ApplicationMetricsRetriever;
import ai.vespa.metricsproxy.http.application.MetricsNodesConfig;
-import ai.vespa.metricsproxy.http.yamas.YamasHandler;
+import ai.vespa.metricsproxy.http.metrics.MetricsV1Handler;
import ai.vespa.metricsproxy.http.prometheus.PrometheusHandler;
+import ai.vespa.metricsproxy.http.yamas.YamasHandler;
import ai.vespa.metricsproxy.metric.ExternalMetrics;
import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensions;
import ai.vespa.metricsproxy.metric.dimensions.ApplicationDimensionsConfig;
@@ -37,8 +37,8 @@ import com.yahoo.vespa.model.admin.monitoring.MetricSet;
import com.yahoo.vespa.model.admin.monitoring.MetricsConsumer;
import com.yahoo.vespa.model.admin.monitoring.Monitoring;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.xml.PlatformBundles;
import java.nio.file.Path;
@@ -131,8 +131,8 @@ public class MetricsProxyContainerCluster extends ContainerCluster<MetricsProxyC
Handler<AbstractConfigProducer<?>> metricsHandler = new Handler<>(
new ComponentModel(clazz.getName(), null, METRICS_PROXY_BUNDLE_NAME, null));
metricsHandler.addServerBindings(
- BindingPattern.createModelGeneratedFromHttpPath(bindingPath),
- BindingPattern.createModelGeneratedFromHttpPath(bindingPath + "/*"));
+ SystemBindingPattern.fromHttpPath(bindingPath),
+ SystemBindingPattern.fromHttpPath(bindingPath + "/*"));
return metricsHandler;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
index a9fc300f85a..249827b11d9 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/application/validation/UriBindingsValidator.java
@@ -6,6 +6,7 @@ import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.http.FilterBinding;
import com.yahoo.vespa.model.container.http.Http;
@@ -55,7 +56,7 @@ class UriBindingsValidator extends Validator {
private static void validateHostedApplicationUserBinding(BindingPattern binding) {
// only perform these validation for used-generated bindings
// bindings produced by the hosted config model amender will violate some of the rules below
- if (!binding.isUserGenerated()) return;
+ if (binding instanceof SystemBindingPattern) return;
if (binding.port().isPresent()) {
throw new IllegalArgumentException(createErrorMessage(binding, "binding with port is not allowed"));
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
index 30ea8c41f06..0fdd1af56f3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomClientProviderBuilder.java
@@ -2,12 +2,12 @@
package com.yahoo.vespa.model.builder.xml.dom;
import com.yahoo.config.model.deploy.DeployState;
-import com.yahoo.text.XML;
import com.yahoo.config.model.producer.AbstractConfigProducer;
+import com.yahoo.text.XML;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Component;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import org.w3c.dom.Element;
/**
@@ -25,10 +25,10 @@ public class DomClientProviderBuilder extends DomHandlerBuilder {
Handler<? super Component<?, ?>> client = createHandler(clientElement);
for (Element binding : XML.getChildren(clientElement, "binding"))
- client.addClientBindings(BindingPattern.createUserGeneratedFromPattern(XML.getValue(binding)));
+ client.addClientBindings(UserBindingPattern.fromPattern(XML.getValue(binding)));
for (Element serverBinding : XML.getChildren(clientElement, "serverBinding"))
- client.addServerBindings(BindingPattern.createUserGeneratedFromPattern(XML.getValue(serverBinding)));
+ client.addServerBindings(UserBindingPattern.fromPattern(XML.getValue(serverBinding)));
DomComponentBuilder.addChildren(deployState, parent, clientElement, client);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
index 50396cb4aa5..145535fe06f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomHandlerBuilder.java
@@ -11,6 +11,7 @@ import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Component;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import com.yahoo.vespa.model.container.xml.BundleInstantiationSpecificationBuilder;
import org.w3c.dom.Element;
@@ -47,10 +48,10 @@ public class DomHandlerBuilder extends VespaDomBuilder.DomConfigProducerBuilder<
Handler<? super Component<?, ?>> handler = createHandler(handlerElement);
for (Element binding : XML.getChildren(handlerElement, "binding"))
- addServerBinding(handler, BindingPattern.createUserGeneratedFromPattern(XML.getValue(binding)), deployState.getDeployLogger());
+ addServerBinding(handler, UserBindingPattern.fromPattern(XML.getValue(binding)), deployState.getDeployLogger());
for (Element clientBinding : XML.getChildren(handlerElement, "clientBinding"))
- handler.addClientBindings(BindingPattern.createUserGeneratedFromPattern(XML.getValue(clientBinding)));
+ handler.addClientBindings(UserBindingPattern.fromPattern(XML.getValue(clientBinding)));
DomComponentBuilder.addChildren(deployState, parent, handlerElement, handler);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
index d4d7178f0f3..159a87be27d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/clients/ContainerDocumentApi.java
@@ -5,8 +5,9 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.bundle.BundleInstantiationSpecification;
import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import java.util.Collection;
import java.util.Collections;
@@ -35,14 +36,14 @@ public class ContainerDocumentApi {
if (options.bindings.isEmpty()) {
handler.addServerBindings(
- BindingPattern.createModelGeneratedFromHttpPath(bindingSuffix),
- BindingPattern.createModelGeneratedFromHttpPath(bindingSuffix + '/'));
+ SystemBindingPattern.fromHttpPath(bindingSuffix),
+ SystemBindingPattern.fromHttpPath(bindingSuffix + '/'));
} else {
for (String rootBinding : options.bindings) {
String pathWithoutLeadingSlash = bindingSuffix.substring(1);
handler.addServerBindings(
- BindingPattern.createUserGeneratedFromPattern(rootBinding + pathWithoutLeadingSlash),
- BindingPattern.createUserGeneratedFromPattern(rootBinding + pathWithoutLeadingSlash + '/'));
+ UserBindingPattern.fromPattern(rootBinding + pathWithoutLeadingSlash),
+ UserBindingPattern.fromPattern(rootBinding + pathWithoutLeadingSlash + '/'));
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index b1ece8a2a22..1427fa492dc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -27,6 +27,7 @@ import com.yahoo.vespa.model.container.component.Component;
import com.yahoo.vespa.model.container.component.ConfigProducerGroup;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.Servlet;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.jersey.Jersey2Servlet;
import com.yahoo.vespa.model.container.jersey.RestApi;
import com.yahoo.vespa.model.container.xml.PlatformBundles;
@@ -56,12 +57,12 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
MetricsProxyApiConfig.Producer {
public static final String METRICS_V2_HANDLER_CLASS = MetricsV2Handler.class.getName();
- public static final BindingPattern METRICS_V2_HANDLER_BINDING_1 = BindingPattern.createModelGeneratedFromHttpPath(MetricsV2Handler.V2_PATH);
- public static final BindingPattern METRICS_V2_HANDLER_BINDING_2 = BindingPattern.createModelGeneratedFromHttpPath(MetricsV2Handler.V2_PATH + "/*");
+ public static final BindingPattern METRICS_V2_HANDLER_BINDING_1 = SystemBindingPattern.fromHttpPath(MetricsV2Handler.V2_PATH);
+ public static final BindingPattern METRICS_V2_HANDLER_BINDING_2 = SystemBindingPattern.fromHttpPath(MetricsV2Handler.V2_PATH + "/*");
public static final String PROMETHEUS_V1_HANDLER_CLASS = PrometheusV1Handler.class.getName();
- private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_1 = BindingPattern.createModelGeneratedFromHttpPath(PrometheusV1Handler.V1_PATH);
- private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_2 = BindingPattern.createModelGeneratedFromHttpPath(PrometheusV1Handler.V1_PATH + "/*");
+ private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_1 = SystemBindingPattern.fromHttpPath(PrometheusV1Handler.V1_PATH);
+ private static final BindingPattern PROMETHEUS_V1_HANDLER_BINDING_2 = SystemBindingPattern.fromHttpPath(PrometheusV1Handler.V1_PATH + "/*");
public static final int heapSizePercentageOfTotalNodeMemory = 60;
public static final int heapSizePercentageOfTotalNodeMemoryWhenCombinedCluster = 17;
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
index d373b1557fc..8bb456ab7e7 100755
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java
@@ -48,6 +48,7 @@ import com.yahoo.vespa.model.container.component.FileStatusHandlerComponent;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.SimpleComponent;
import com.yahoo.vespa.model.container.component.StatisticsComponent;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.chain.ProcessingHandler;
import com.yahoo.vespa.model.container.docproc.ContainerDocproc;
import com.yahoo.vespa.model.container.docproc.DocprocChains;
@@ -118,13 +119,13 @@ public abstract class ContainerCluster<CONTAINER extends Container>
public static final String G1GC = "-XX:+UseG1GC -XX:MaxTenuringThreshold=15";
public static final String STATE_HANDLER_CLASS = "com.yahoo.container.jdisc.state.StateHandler";
- public static final BindingPattern STATE_HANDLER_BINDING_1 = BindingPattern.createModelGeneratedFromHttpPath(StateHandler.STATE_API_ROOT);
- public static final BindingPattern STATE_HANDLER_BINDING_2 = BindingPattern.createModelGeneratedFromHttpPath(StateHandler.STATE_API_ROOT + "/*");
+ public static final BindingPattern STATE_HANDLER_BINDING_1 = SystemBindingPattern.fromHttpPath(StateHandler.STATE_API_ROOT);
+ public static final BindingPattern STATE_HANDLER_BINDING_2 = SystemBindingPattern.fromHttpPath(StateHandler.STATE_API_ROOT + "/*");
public static final String ROOT_HANDLER_PATH = "/";
- public static final BindingPattern ROOT_HANDLER_BINDING = BindingPattern.createModelGeneratedFromHttpPath(ROOT_HANDLER_PATH);
+ public static final BindingPattern ROOT_HANDLER_BINDING = SystemBindingPattern.fromHttpPath(ROOT_HANDLER_PATH);
- public static final BindingPattern VIP_HANDLER_BINDING = BindingPattern.createModelGeneratedFromHttpPath("/status.html");
+ public static final BindingPattern VIP_HANDLER_BINDING = SystemBindingPattern.fromHttpPath("/status.html");
private final String name;
@@ -235,7 +236,7 @@ public abstract class ContainerCluster<CONTAINER extends Container>
Handler<AbstractConfigProducer<?>> statusHandler = new Handler<>(
new ComponentModel(BundleInstantiationSpecification.getInternalHandlerSpecificationFromStrings(
APPLICATION_STATUS_HANDLER_CLASS, null), null));
- statusHandler.addServerBindings(BindingPattern.createModelGeneratedFromHttpPath("/ApplicationStatus"));
+ statusHandler.addServerBindings(SystemBindingPattern.fromHttpPath("/ApplicationStatus"));
addComponent(statusHandler);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
index 3b034c2bd0f..72f1921e6a2 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModelEvaluation.java
@@ -6,8 +6,8 @@ import com.yahoo.osgi.provider.model.ComponentModel;
import com.yahoo.searchdefinition.derived.RankProfileList;
import com.yahoo.vespa.config.search.RankProfilesConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import java.util.List;
import java.util.Objects;
@@ -50,8 +50,8 @@ public class ContainerModelEvaluation implements RankProfilesConfig.Producer, Ra
public static Handler<?> getHandler() {
Handler<?> handler = new Handler<>(new ComponentModel(REST_HANDLER_NAME, null, BUNDLE_NAME));
handler.addServerBindings(
- BindingPattern.createModelGeneratedFromHttpPath(REST_BINDING_PATH),
- BindingPattern.createModelGeneratedFromHttpPath(REST_BINDING_PATH + "/*"));
+ SystemBindingPattern.fromHttpPath(REST_BINDING_PATH),
+ SystemBindingPattern.fromHttpPath(REST_BINDING_PATH + "/*"));
return handler;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
index ae524d0f06e..0fd7f577461 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/BindingPattern.java
@@ -10,13 +10,9 @@ import java.util.regex.Pattern;
/**
* URI binding pattern used by filter and handler bindings.
*
- * There are two types of binding; user generated and model generated bindings.
- * - User generated bindings are bindings which are constructed from directly from 'binding' elements from services.xml
- * - Model generated bindings are binding which are implicitly constructed by the model, e.g built-in handlers.
- *
* @author bjorncs
*/
-public class BindingPattern implements Comparable<BindingPattern> {
+public abstract class BindingPattern implements Comparable<BindingPattern> {
private static final Pattern BINDING_PATTERN =
Pattern.compile("([^:]+)://([^:/]+)(:((\\*)|([0-9]+)))?(/.*)", Pattern.UNICODE_CASE | Pattern.CANON_EQ);
@@ -27,19 +23,25 @@ public class BindingPattern implements Comparable<BindingPattern> {
private final String host;
private final String port;
private final String path;
- private final boolean isUserGenerated;
- private BindingPattern(
+ protected BindingPattern(
String scheme,
String host,
String port,
- String path,
- boolean isUserGenerated) {
+ String path) {
this.scheme = Objects.requireNonNull(scheme, "Scheme in binding must be specified");
this.host = Objects.requireNonNull(host, "Host must be specified");
this.port = port;
this.path = validatePath(path);
- this.isUserGenerated = isUserGenerated;
+ }
+
+ protected BindingPattern(String binding) {
+ Matcher matcher = BINDING_PATTERN.matcher(binding);
+ if (!matcher.matches()) throw new IllegalArgumentException("Invalid binding: " + binding);
+ this.scheme = matcher.group(1);
+ this.host = matcher.group(2);
+ this.port = matcher.group(4);
+ this.path = matcher.group(7);
}
private static String validatePath(String path) {
@@ -48,37 +50,10 @@ public class BindingPattern implements Comparable<BindingPattern> {
return path;
}
- public static BindingPattern createUserGeneratedFromPattern(String pattern) {
- return createFromBindingString(pattern, true);
- }
-
- public static BindingPattern createUserGeneratedFromHttpPath(String path) {
- return new BindingPattern("http", "*", null, path, true);
- }
-
- public static BindingPattern createModelGeneratedFromPattern(String pattern) {
- return createFromBindingString(pattern, false);
- }
-
- public static BindingPattern createModelGeneratedFromHttpPath(String path) {
- return new BindingPattern("http", "*", null, path, false);
- }
-
- private static BindingPattern createFromBindingString(String binding, boolean isUserGenerated) {
- Matcher matcher = BINDING_PATTERN.matcher(binding);
- if (!matcher.matches()) throw new IllegalArgumentException("Invalid binding: " + binding);
- String scheme = matcher.group(1);
- String host = matcher.group(2);
- String port = matcher.group(4);
- String path = matcher.group(7);
- return new BindingPattern(scheme, host, port, path, isUserGenerated);
- }
-
public String scheme() { return scheme; }
public String host() { return host; }
public Optional<String> port() { return Optional.ofNullable(port); }
public String path() { return path; }
- public boolean isUserGenerated() { return isUserGenerated; }
public String patternString() {
StringBuilder builder = new StringBuilder(scheme).append("://").append(host);
@@ -92,30 +67,17 @@ public class BindingPattern implements Comparable<BindingPattern> {
public boolean hasSamePattern(BindingPattern other) { return this.patternString().equals(other.patternString()); }
@Override
- public String toString() {
- return "BindingPattern{" +
- "scheme='" + scheme + '\'' +
- ", host='" + host + '\'' +
- ", port='" + port + '\'' +
- ", path='" + path + '\'' +
- ", isUserGenerated=" + isUserGenerated +
- '}';
- }
-
- @Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BindingPattern that = (BindingPattern) o;
- return isUserGenerated == that.isUserGenerated &&
- Objects.equals(scheme, that.scheme) &&
+ return Objects.equals(scheme, that.scheme) &&
Objects.equals(host, that.host) &&
Objects.equals(port, that.port) &&
Objects.equals(path, that.path);
}
- @Override public int hashCode() { return Objects.hash(scheme, host, port, path, isUserGenerated); }
-
+ @Override public int hashCode() { return Objects.hash(scheme, host, port, path); }
@Override
public int compareTo(BindingPattern o) {
@@ -123,7 +85,6 @@ public class BindingPattern implements Comparable<BindingPattern> {
.thenComparing(BindingPattern::host)
.thenComparing(pattern -> pattern.port().orElse(null))
.thenComparing(BindingPattern::path)
- .thenComparing(BindingPattern::isUserGenerated)
.compare(this, o);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java
new file mode 100644
index 00000000000..559651b3b4f
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/SystemBindingPattern.java
@@ -0,0 +1,26 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.container.component;
+
+/**
+ * A {@link BindingPattern} which is implicitly constructed by the model, e.g for built-in handlers and filter chains.
+ *
+ * @author bjorncs
+ */
+public class SystemBindingPattern extends BindingPattern {
+
+ private SystemBindingPattern(String scheme, String host, String port, String path) { super(scheme, host, port, path); }
+ private SystemBindingPattern(String binding) { super(binding); }
+
+ public static SystemBindingPattern fromHttpPath(String path) { return new SystemBindingPattern("http", "*", null, path);}
+ public static SystemBindingPattern fromPattern(String binding) { return new SystemBindingPattern(binding);}
+
+ @Override
+ public String toString() {
+ return "SystemBindingPattern{" +
+ "scheme='" + scheme() + '\'' +
+ ", host='" + host() + '\'' +
+ ", port='" + port().orElse(null) + '\'' +
+ ", path='" + path() + '\'' +
+ '}';
+ }
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java
new file mode 100644
index 00000000000..43f57fa0343
--- /dev/null
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/UserBindingPattern.java
@@ -0,0 +1,26 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.model.container.component;
+
+/**
+ * A {@link BindingPattern} which is constructed directly from a user provided 'binding' element from services.xml.
+ *
+ * @author bjorncs
+ */
+public class UserBindingPattern extends BindingPattern {
+
+ private UserBindingPattern(String scheme, String host, String port, String path) { super(scheme, host, port, path); }
+ private UserBindingPattern(String binding) { super(binding); }
+
+ public static UserBindingPattern fromHttpPath(String path) { return new UserBindingPattern("http", "*", null, path); }
+ public static UserBindingPattern fromPattern(String binding) { return new UserBindingPattern(binding); }
+
+ @Override
+ public String toString() {
+ return "UserBindingPattern{" +
+ "scheme='" + scheme() + '\'' +
+ ", host='" + host() + '\'' +
+ ", port='" + port().orElse(null) + '\'' +
+ ", path='" + path() + '\'' +
+ '}';
+ }
+}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
index b7dfe6c42f0..82061a0425f 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/ContainerDocproc.java
@@ -8,8 +8,8 @@ import com.yahoo.container.jdisc.ContainerMbusConfig;
import com.yahoo.container.jdisc.config.SessionConfig;
import com.yahoo.docproc.jdisc.messagebus.MbusRequestContext;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.ContainerSubsystem;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import java.util.HashMap;
import java.util.Map;
@@ -45,7 +45,7 @@ public class ContainerDocproc extends ContainerSubsystem<DocprocChains>
private void addSource(
final ContainerCluster cluster, final String name, final SessionConfig.Type.Enum type) {
final MbusClient mbusClient = new MbusClient(name, type);
- mbusClient.addClientBindings(BindingPattern.createModelGeneratedFromPattern("mbus://*/" + mbusClient.getSessionName()));
+ mbusClient.addClientBindings(SystemBindingPattern.fromPattern("mbus://*/" + mbusClient.getSessionName()));
cluster.addComponent(mbusClient);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
index 3c2e8c9bde1..68dc2518c23 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/docproc/DocprocChains.java
@@ -6,8 +6,8 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.container.jdisc.config.SessionConfig;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Component;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.chain.Chains;
import com.yahoo.vespa.model.container.component.chain.ProcessingHandler;
@@ -39,12 +39,12 @@ public class DocprocChains extends Chains<DocprocChain> {
}
private void addServerAndClientForChain(ApplicationContainerCluster cluster, DocprocChain docprocChain) {
- docprocHandler.addServerBindings(BindingPattern.createModelGeneratedFromPattern("mbus://*/" + docprocChain.getSessionName()));
+ docprocHandler.addServerBindings(SystemBindingPattern.fromPattern("mbus://*/" + docprocChain.getSessionName()));
cluster.addMbusServer(ComponentId.fromString(docprocChain.getSessionName()));
MbusClient client = new MbusClient(docprocChain.getSessionName(), SessionConfig.Type.INTERMEDIATE);
- client.addClientBindings(BindingPattern.createModelGeneratedFromPattern("mbus://*/" + client.getSessionName()));
+ client.addClientBindings(SystemBindingPattern.fromPattern("mbus://*/" + client.getSessionName()));
addComponent(client);
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
index 9054549ba22..87c6d41c80d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/AccessControl.java
@@ -9,6 +9,7 @@ import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.FileStatusHandlerComponent;
import com.yahoo.vespa.model.container.component.Handler;
import com.yahoo.vespa.model.container.component.Servlet;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import java.util.ArrayList;
import java.util.Collection;
@@ -140,7 +141,7 @@ public final class AccessControl {
}
private static Stream<BindingPattern> servletBindings(Servlet servlet) {
- return Stream.of(BindingPattern.createModelGeneratedFromHttpPath("/" + servlet.bindingPath));
+ return Stream.of(SystemBindingPattern.fromHttpPath("/" + servlet.bindingPath));
}
private static boolean handlerNeedsProtection(Handler<?> handler) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
index d6007ae190f..9d5fead7dfb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java
@@ -13,7 +13,7 @@ import com.yahoo.vespa.model.builder.xml.dom.ModelElement;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
import com.yahoo.vespa.model.container.ApplicationContainerCluster;
import com.yahoo.vespa.model.container.Container;
-import com.yahoo.vespa.model.container.component.BindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import com.yahoo.vespa.model.container.component.chain.Chain;
import com.yahoo.vespa.model.container.http.AccessControl;
import com.yahoo.vespa.model.container.http.FilterBinding;
@@ -76,7 +76,7 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
Element excludeElem = XML.getChild(accessControlElem, "exclude");
if (excludeElem != null) {
XML.getChildren(excludeElem, "binding").stream()
- .map(xml -> BindingPattern.createUserGeneratedFromPattern(XML.getValue(xml)))
+ .map(xml -> UserBindingPattern.fromPattern(XML.getValue(xml)))
.forEach(builder::excludeBinding);
}
return builder.build();
@@ -124,7 +124,7 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http>
for (Element bindingSpec: XML.getChildren(child, "binding")) {
String binding = XML.getValue(bindingSpec);
- result.add(FilterBinding.create(chainId, BindingPattern.createUserGeneratedFromPattern(binding)));
+ result.add(FilterBinding.create(chainId, UserBindingPattern.fromPattern(binding)));
}
}
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
index 1cbd6ecfbbc..f6b24bf9635 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/processing/ProcessingChains.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.model.container.processing;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.container.component.BindingPattern;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
import com.yahoo.vespa.model.container.component.chain.Chains;
/**
@@ -12,7 +13,7 @@ import com.yahoo.vespa.model.container.component.chain.Chains;
*/
public class ProcessingChains extends Chains<ProcessingChain> {
- public static final BindingPattern[] defaultBindings = new BindingPattern[]{BindingPattern.createModelGeneratedFromHttpPath("/processing/*")};
+ public static final BindingPattern[] defaultBindings = new BindingPattern[]{SystemBindingPattern.fromHttpPath("/processing/*")};
public ProcessingChains(AbstractConfigProducer parent, String subId) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
index c6be67f74bb..d11e0f9a891 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java
@@ -59,6 +59,8 @@ import com.yahoo.vespa.model.container.SecretStore;
import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.FileStatusHandlerComponent;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import com.yahoo.vespa.model.container.component.chain.Chain;
import com.yahoo.vespa.model.container.component.chain.ProcessingHandler;
import com.yahoo.vespa.model.container.docproc.ContainerDocproc;
@@ -112,7 +114,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
private static final String ENVIRONMENT_VARIABLES_ELEMENT = "environment-variables";
static final String SEARCH_HANDLER_CLASS = com.yahoo.search.handler.SearchHandler.class.getName();
- static final BindingPattern SEARCH_HANDLER_BINDING = BindingPattern.createModelGeneratedFromHttpPath("/search/*");
+ static final BindingPattern SEARCH_HANDLER_BINDING = SystemBindingPattern.fromHttpPath("/search/*");
public enum Networking { disable, enable }
@@ -280,7 +282,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
new FileStatusHandlerComponent(
name + "-status-handler",
statusFile.orElse(HOSTED_VESPA_STATUS_FILE),
- BindingPattern.createModelGeneratedFromHttpPath("/" + name)));
+ SystemBindingPattern.fromHttpPath("/" + name)));
} else {
cluster.addVipHandler();
}
@@ -806,7 +808,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
private void addGUIHandler(ApplicationContainerCluster cluster) {
Handler<?> guiHandler = new GUIHandler();
- guiHandler.addServerBindings(BindingPattern.createModelGeneratedFromHttpPath(GUIHandler.BINDING_PATH));
+ guiHandler.addServerBindings(SystemBindingPattern.fromHttpPath(GUIHandler.BINDING_PATH));
cluster.addComponent(guiHandler);
}
@@ -825,7 +827,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
for (Element element: bindingElements) {
String text = element.getTextContent().trim();
if (!text.isEmpty())
- result.add(BindingPattern.createUserGeneratedFromPattern(text));
+ result.add(UserBindingPattern.fromPattern(text));
}
return result.toArray(BindingPattern[]::new);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
index 069ef156913..91a2b65c0e0 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/component/BindingPatternTest.java
@@ -27,14 +27,14 @@ public class BindingPatternTest {
@Test
public void getters_returns_correct_components() {
{
- BindingPattern pattern = BindingPattern.createModelGeneratedFromPattern("http://host:1234/path/*");
+ BindingPattern pattern = SystemBindingPattern.fromPattern("http://host:1234/path/*");
assertEquals("http", pattern.scheme());
assertEquals("host", pattern.host());
assertEquals("1234", pattern.port().get());
assertEquals("/path/*", pattern.path());
}
{
- BindingPattern pattern = BindingPattern.createModelGeneratedFromPattern("https://*/path/v1/");
+ BindingPattern pattern = SystemBindingPattern.fromPattern("https://*/path/v1/");
assertEquals("https", pattern.scheme());
assertEquals("*", pattern.host());
assertFalse(pattern.port().isPresent());
@@ -43,7 +43,7 @@ public class BindingPatternTest {
}
private static void assertBindingParses(String binding) {
- BindingPattern pattern = BindingPattern.createModelGeneratedFromPattern(binding);
+ BindingPattern pattern = SystemBindingPattern.fromPattern(binding);
String stringRepresentation = pattern.patternString();
assertEquals(
"Expected string representation of parsed binding to match original binding string",
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
index 07789697709..4ca7590673d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/http/FilterBindingsTest.java
@@ -1,11 +1,12 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.container.http;
-import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
+import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.jdisc.http.ServerConfig;
import com.yahoo.vespa.model.container.ContainerModel;
import com.yahoo.vespa.model.container.component.BindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import com.yahoo.vespa.model.container.component.chain.Chain;
import com.yahoo.vespa.model.container.http.xml.HttpBuilder;
import com.yahoo.vespa.model.container.xml.ContainerModelBuilder;
@@ -22,7 +23,7 @@ import static org.junit.Assert.assertNotNull;
*/
public class FilterBindingsTest extends DomBuilderTest {
- private static final BindingPattern MY_CHAIN_BINDING = BindingPattern.createUserGeneratedFromHttpPath("/my-chain-binding");
+ private static final BindingPattern MY_CHAIN_BINDING = UserBindingPattern.fromHttpPath("/my-chain-binding");
private Http buildHttp(Element xml) {
Http http = new HttpBuilder().build(root.getDeployState(), root, xml);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
index 9a9f7f34ab9..e054698d40b 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessControlTest.java
@@ -9,6 +9,8 @@ import com.yahoo.config.provision.AthenzDomain;
import com.yahoo.vespa.model.container.ApplicationContainer;
import com.yahoo.vespa.model.container.ContainerCluster;
import com.yahoo.vespa.model.container.component.BindingPattern;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import com.yahoo.vespa.model.container.http.AccessControl;
import com.yahoo.vespa.model.container.http.FilterBinding;
import com.yahoo.vespa.model.container.http.Http;
@@ -41,18 +43,18 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
private static final Set<BindingPattern> REQUIRED_HANDLER_BINDINGS =
Set.of(
- BindingPattern.createUserGeneratedFromHttpPath("/custom-handler/*"),
- BindingPattern.createModelGeneratedFromHttpPath("/search/*"),
- BindingPattern.createModelGeneratedFromHttpPath("/document/v1/*"),
- BindingPattern.createModelGeneratedFromHttpPath("/reserved-for-internal-use/feedapi"));
+ UserBindingPattern.fromHttpPath("/custom-handler/*"),
+ SystemBindingPattern.fromHttpPath("/search/*"),
+ SystemBindingPattern.fromHttpPath("/document/v1/*"),
+ SystemBindingPattern.fromHttpPath("/reserved-for-internal-use/feedapi"));
private static final Set<BindingPattern> FORBIDDEN_HANDLER_BINDINGS =
Set.of(
- BindingPattern.createModelGeneratedFromHttpPath("/ApplicationStatus"),
- BindingPattern.createModelGeneratedFromHttpPath("/status.html"),
- BindingPattern.createModelGeneratedFromHttpPath("/statistics/"),
- BindingPattern.createModelGeneratedFromHttpPath("/state/v1"),
- BindingPattern.createModelGeneratedFromHttpPath("/"));
+ SystemBindingPattern.fromHttpPath("/ApplicationStatus"),
+ SystemBindingPattern.fromHttpPath("/status.html"),
+ SystemBindingPattern.fromHttpPath("/statistics/"),
+ SystemBindingPattern.fromHttpPath("/state/v1"),
+ SystemBindingPattern.fromHttpPath("/"));
@Test
public void access_control_filter_chain_is_set_up() {
@@ -151,8 +153,8 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
@Test
public void handler_can_be_excluded_by_excluding_one_of_its_bindings() {
- BindingPattern notExcludedBinding = BindingPattern.createUserGeneratedFromHttpPath("/custom-handler/*");
- BindingPattern excludedBinding = BindingPattern.createModelGeneratedFromHttpPath("/excluded/*");
+ BindingPattern notExcludedBinding = UserBindingPattern.fromHttpPath("/custom-handler/*");
+ BindingPattern excludedBinding = SystemBindingPattern.fromHttpPath("/excluded/*");
Element clusterElem = DomBuilderTest.parse(
"<container version='1.0'>",
httpWithExcludedBinding(excludedBinding),
@@ -190,8 +192,8 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
Http http = getHttp(clusterElem);
Set<BindingPattern> requiredBindings = Set.of(
- BindingPattern.createModelGeneratedFromHttpPath("/" + servletPath),
- BindingPattern.createModelGeneratedFromHttpPath("/" + restApiPath + "/*"));
+ SystemBindingPattern.fromHttpPath("/" + servletPath),
+ SystemBindingPattern.fromHttpPath("/" + restApiPath + "/*"));
Set<BindingPattern> missingRequiredBindings = requiredBindings.stream()
.filter(requiredBinding -> ! containsBinding(http.getBindings(), requiredBinding))
.collect(Collectors.toSet());
@@ -203,8 +205,8 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
@Test
public void servlet_can_be_excluded_by_excluding_one_of_its_bindings() {
String servletPath = "servlet/path";
- BindingPattern notExcludedBinding = BindingPattern.createModelGeneratedFromPattern("http://*:8081/" + servletPath);
- BindingPattern excludedBinding = BindingPattern.createModelGeneratedFromPattern("http://*:8080/" + servletPath);
+ BindingPattern notExcludedBinding = SystemBindingPattern.fromPattern("http://*:8081/" + servletPath);
+ BindingPattern excludedBinding = SystemBindingPattern.fromPattern("http://*:8080/" + servletPath);
Element clusterElem = DomBuilderTest.parse(
"<container version='1.0'>",
httpWithExcludedBinding(excludedBinding),
@@ -224,8 +226,8 @@ public class AccessControlTest extends ContainerModelBuilderTestBase {
@Test
public void rest_api_can_be_excluded_by_excluding_one_of_its_bindings() {
String restApiPath = "api/v0";
- BindingPattern notExcludedBinding = BindingPattern.createModelGeneratedFromPattern("http://*:8081/" + restApiPath + Jersey2Servlet.BINDING_SUFFIX);
- BindingPattern excludedBinding = BindingPattern.createModelGeneratedFromPattern("http://*:8080/" + restApiPath + Jersey2Servlet.BINDING_SUFFIX);;
+ BindingPattern notExcludedBinding = SystemBindingPattern.fromPattern("http://*:8081/" + restApiPath + Jersey2Servlet.BINDING_SUFFIX);
+ BindingPattern excludedBinding = SystemBindingPattern.fromPattern("http://*:8080/" + restApiPath + Jersey2Servlet.BINDING_SUFFIX);;
Element clusterElem = DomBuilderTest.parse(
"<container version='1.0'>",
httpWithExcludedBinding(excludedBinding),
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
index a9282b124f4..73a68429b6d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/ContainerDocumentApiBuilderTest.java
@@ -3,8 +3,9 @@ package com.yahoo.vespa.model.container.xml;
import com.yahoo.config.model.builder.xml.test.DomBuilderTest;
import com.yahoo.vespa.model.container.ContainerCluster;
-import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Handler;
+import com.yahoo.vespa.model.container.component.SystemBindingPattern;
+import com.yahoo.vespa.model.container.component.UserBindingPattern;
import org.junit.Test;
import org.w3c.dom.Element;
@@ -52,8 +53,8 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa
private void verifyCustomBindings(String id) {
Handler<?> handler = getHandlers("cluster1").get(id);
- assertThat(handler.getServerBindings(), hasItem(BindingPattern.createUserGeneratedFromHttpPath("/document-api/reserved-for-internal-use/feedapi")));
- assertThat(handler.getServerBindings(), hasItem(BindingPattern.createUserGeneratedFromHttpPath("/document-api/reserved-for-internal-use/feedapi/")));
+ assertThat(handler.getServerBindings(), hasItem(UserBindingPattern.fromHttpPath("/document-api/reserved-for-internal-use/feedapi")));
+ assertThat(handler.getServerBindings(), hasItem(UserBindingPattern.fromHttpPath("/document-api/reserved-for-internal-use/feedapi/")));
assertThat(handler.getServerBindings().size(), is(2));
}
@@ -75,10 +76,10 @@ public class ContainerDocumentApiBuilderTest extends ContainerModelBuilderTestBa
assertThat(handlerMap.get("com.yahoo.vespa.http.server.FeedHandler"), not(nullValue()));
assertThat(handlerMap.get("com.yahoo.vespa.http.server.FeedHandler").getServerBindings()
- .contains(BindingPattern.createModelGeneratedFromHttpPath("/reserved-for-internal-use/feedapi")),
+ .contains(SystemBindingPattern.fromHttpPath("/reserved-for-internal-use/feedapi")),
is(true));
assertThat(handlerMap.get("com.yahoo.vespa.http.server.FeedHandler").getServerBindings()
- .contains(BindingPattern.createModelGeneratedFromHttpPath("/reserved-for-internal-use/feedapi")),
+ .contains(SystemBindingPattern.fromHttpPath("/reserved-for-internal-use/feedapi")),
is(true));
assertThat(handlerMap.get("com.yahoo.vespa.http.server.FeedHandler").getServerBindings().size(), equalTo(2));
}