diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-09-02 10:39:23 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2020-09-02 10:39:23 +0200 |
commit | 0a6143ec80c40bcdd75b237656e430b3a299e7a4 (patch) | |
tree | 1ef762d893c7ae46a7b5009f51b8d87f304283ca | |
parent | 0c96e5a85ffa61c5c922beeb18f84ddd1ae6599e (diff) |
Make tag name to binding type logic more resillient
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/HttpBuilder.java | 17 |
1 files changed, 14 insertions, 3 deletions
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 4d41bfed0ca..5b360b478fa 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 @@ -31,6 +31,10 @@ import java.util.logging.Level; */ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> { + static final String REQUEST_CHAIN_TAG_NAME = "request-chain"; + static final String RESPONSE_CHAIN_TAG_NAME = "response-chain"; + static final List<String> VALID_FILTER_CHAIN_TAG_NAMES = List.of(REQUEST_CHAIN_TAG_NAME, RESPONSE_CHAIN_TAG_NAME); + @Override protected Http doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element spec) { FilterChains filterChains; @@ -116,19 +120,26 @@ public class HttpBuilder extends VespaDomBuilder.DomConfigProducerBuilder<Http> for (Element child: XML.getChildren(filteringSpec)) { String tagName = child.getTagName(); - if ((tagName.equals("request-chain") || tagName.equals("response-chain"))) { + if (VALID_FILTER_CHAIN_TAG_NAMES.contains(tagName)) { ComponentSpecification chainId = XmlHelper.getIdRef(child); for (Element bindingSpec: XML.getChildren(child, "binding")) { String binding = XML.getValue(bindingSpec); - FilterBinding.Type type = tagName.equals("request-chain") ? FilterBinding.Type.REQUEST : FilterBinding.Type.RESPONSE; - result.add(FilterBinding.create(type, chainId, UserBindingPattern.fromPattern(binding))); + result.add(FilterBinding.create(toFilterBindingType(tagName), chainId, UserBindingPattern.fromPattern(binding))); } } } return result; } + private static FilterBinding.Type toFilterBindingType(String chainTag) { + switch (chainTag) { + case REQUEST_CHAIN_TAG_NAME: return FilterBinding.Type.REQUEST; + case RESPONSE_CHAIN_TAG_NAME: return FilterBinding.Type.RESPONSE; + default: throw new IllegalArgumentException("Unknown filter chain tag: " + chainTag); + } + } + static int readPort(ModelElement spec, boolean isHosted, DeployLogger logger) { Integer port = spec.integerAttribute("port"); if (port == null) |