aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2022-06-08 19:17:47 +0200
committergjoranv <gv@verizonmedia.com>2022-06-08 19:17:47 +0200
commit33d629ae957d828fd9c14a7ea8ee633c38b10573 (patch)
tree524ff72b2a86a623bd4cb7a8b0fcebfa12bb47df /config-model
parent26c06870f4d39e5a74bc32c17f2c88a14d23ca50 (diff)
Clean up 'searchchain' and 'searchchains' syntax in services.xml
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java14
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java22
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java5
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java2
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java2
-rw-r--r--config-model/src/main/resources/schema/federation.rnc2
-rw-r--r--config-model/src/main/resources/schema/searchchains-standalone.rnc4
-rw-r--r--config-model/src/main/resources/schema/searchchains.rnc31
-rwxr-xr-xconfig-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java4
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSchemaChainsBuilderTest.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java22
14 files changed, 28 insertions, 111 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
index 2bc7e8f2658..b40ee7f3136 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/DomChainsBuilder.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains;
-import com.yahoo.config.application.Xml;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.VespaDomBuilder;
@@ -26,16 +25,10 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai
extends VespaDomBuilder.DomConfigProducerBuilder<CHAINS> {
private final Collection<ComponentType<COMPONENT>> allowedComponentTypes;
- private final String appPkgChainsDir;
- private final Element outerChainsElem;
- protected DomChainsBuilder(Element outerChainsElem,
- Collection<ComponentType<COMPONENT>> allowedComponentTypes,
- String appPkgChainsDir) {
+ protected DomChainsBuilder(Collection<ComponentType<COMPONENT>> allowedComponentTypes) {
- this.outerChainsElem = outerChainsElem;
this.allowedComponentTypes = new ArrayList<>(allowedComponentTypes);
- this.appPkgChainsDir = appPkgChainsDir;
}
protected abstract CHAINS newChainsInstance(AbstractConfigProducer<?> parent);
@@ -58,13 +51,8 @@ class DomChainsBuilder<COMPONENT extends ChainedComponent<?>, CHAIN extends Chai
private List<Element> allChainElements(DeployState deployState, Element chainsElement) {
List<Element> chainsElements = new ArrayList<>();
- if (outerChainsElem != null)
- chainsElements.add(outerChainsElem);
chainsElements.add(chainsElement);
- if (appPkgChainsDir != null)
- chainsElements.addAll(Xml.allElemsFromPath(deployState.getApplicationPackage(), appPkgChainsDir));
-
return chainsElements;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
index 1d32c644f97..fb11ba32a1e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/InheritanceBuilder.java
@@ -18,38 +18,22 @@ public class InheritanceBuilder {
public InheritanceBuilder(Element spec) {
inheritance = new ChainSpecification.Inheritance(
- // XXX: for this to work, the tagname in the spec must match the tagname inside the 'inherits' elem, e.g. 'searchchain->inherits->searchchain'
- read(spec, "inherits", spec.getTagName()),
- read(spec, "excludes", "exclude"));
+ read(spec, "inherits"),
+ read(spec, "excludes"));
}
public ChainSpecification.Inheritance build() {
return inheritance;
}
- private Set<ComponentSpecification> read(Element spec, String attributeName, String elementName) {
+ private Set<ComponentSpecification> read(Element spec, String attributeName) {
Set<ComponentSpecification> componentSpecifications = new LinkedHashSet<>();
componentSpecifications.addAll(spaceSeparatedComponentSpecificationsFromAttribute(spec, attributeName));
- // TODO: the 'inherits' element is undocumented, and can be removed in an upcoming version of Vespa
- componentSpecifications.addAll(idRefFromElements(XML.getChild(spec, "inherits"), elementName));
-
-
return componentSpecifications;
}
- private Collection<ComponentSpecification> idRefFromElements(Element spec, String elementName) {
- Collection<ComponentSpecification> result = new ArrayList<>();
- if (spec == null)
- return result;
-
- for (Element element : XML.getChildren(spec, elementName)) {
- result.add(XmlHelper.getIdRef(element));
- }
- return result;
- }
-
private Collection<ComponentSpecification> spaceSeparatedComponentSpecificationsFromAttribute(Element spec, String attributeName) {
return toComponentSpecifications(XmlHelper.spaceSeparatedSymbolsFromAttribute(spec, attributeName));
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
index ae22a6971bb..85f9d305afc 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/docproc/DomDocprocChainsBuilder.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.docproc;
-import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType;
@@ -20,8 +19,8 @@ import java.util.Map;
*/
public class DomDocprocChainsBuilder extends DomChainsBuilder<DocumentProcessor, DocprocChain, DocprocChains> {
public DomDocprocChainsBuilder(Element outerChainsElem, boolean supportDocprocChainsDir) {
- super(outerChainsElem, List.of(ComponentType.documentprocessor),
- supportDocprocChainsDir ? ApplicationPackage.DOCPROCCHAINS_DIR: null);
+ super(List.of(ComponentType.documentprocessor)
+ );
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
index d29643c78e2..bd7b6dd4716 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/processing/DomProcessingBuilder.java
@@ -1,7 +1,6 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.model.builder.xml.dom.chains.processing;
-import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder;
@@ -21,7 +20,7 @@ import java.util.Map;
public class DomProcessingBuilder extends DomChainsBuilder<Processor, ProcessingChain, ProcessingChains> {
public DomProcessingBuilder(Element outerChainsElem) {
- super(outerChainsElem, List.of(ComponentsBuilder.ComponentType.processor), ApplicationPackage.PROCESSORCHAINS_DIR);
+ super(List.of(ComponentsBuilder.ComponentType.processor));
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
index d4bd93f67c7..798986273d0 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSearchChainsBuilder.java
@@ -3,7 +3,6 @@ package com.yahoo.vespa.model.builder.xml.dom.chains.search;
import com.yahoo.config.model.deploy.DeployState;
import com.yahoo.config.model.producer.AbstractConfigProducer;
-import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.vespa.model.builder.xml.dom.chains.ComponentsBuilder.ComponentType;
import com.yahoo.vespa.model.builder.xml.dom.chains.DomChainsBuilder;
import com.yahoo.vespa.model.container.search.searchchain.SearchChain;
@@ -22,14 +21,8 @@ import java.util.Map;
*/
public class DomSearchChainsBuilder extends DomChainsBuilder<Searcher<?>, SearchChain, SearchChains> {
- public DomSearchChainsBuilder(Element outerChainsElem, boolean supportSearchChainsDir) {
- super(outerChainsElem, Arrays.asList(ComponentType.searcher, ComponentType.federation),
- supportSearchChainsDir ? ApplicationPackage.SEARCHCHAINS_DIR: null);
- }
-
- // For unit testing without outer chains
public DomSearchChainsBuilder() {
- this(null, false);
+ super(Arrays.asList(ComponentType.searcher, ComponentType.federation));
}
@Override
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
index e13e741dd5d..65fc585c7af 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/SearchChainsBuilder.java
@@ -25,9 +25,8 @@ public class SearchChainsBuilder extends ChainsBuilder<Searcher<?>, SearchChain>
private static final Map<String, Class<? extends DomChainBuilderBase<? extends Searcher<?>, ? extends SearchChain>>>
chainType2builderClass = Collections.unmodifiableMap(
- new LinkedHashMap<String, Class<? extends DomChainBuilderBase<? extends Searcher<?>, ? extends SearchChain>>>() {{
+ new LinkedHashMap<>() {{
put("chain", DomSearchChainBuilder.class);
- put("searchchain", DomSearchChainBuilder.class);
put("provider", DomProviderBuilder.class);
}});
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
index c75d8225843..35a91fc95ab 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/http/xml/FilterChainsBuilder.java
@@ -31,7 +31,7 @@ public class FilterChainsBuilder extends DomChainsBuilder<Filter, Chain<Filter>,
HttpBuilder.RESPONSE_CHAIN_TAG_NAME, FilterChainBuilder.class);
public FilterChainsBuilder() {
- super(null, allowedComponentTypes, null);
+ super(allowedComponentTypes);
}
@Override
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 fb62ffb6ad1..f971aa97e6a 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
@@ -602,7 +602,7 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> {
}
private ContainerSearch buildSearch(DeployState deployState, ApplicationContainerCluster containerCluster, Element producerSpec) {
- SearchChains searchChains = new DomSearchChainsBuilder(null, false)
+ SearchChains searchChains = new DomSearchChainsBuilder()
.build(deployState, containerCluster, producerSpec);
ContainerSearch containerSearch = new ContainerSearch(containerCluster, searchChains, new ContainerSearch.Options());
diff --git a/config-model/src/main/resources/schema/federation.rnc b/config-model/src/main/resources/schema/federation.rnc
index 40ab24bde48..4a0d34149ea 100644
--- a/config-model/src/main/resources/schema/federation.rnc
+++ b/config-model/src/main/resources/schema/federation.rnc
@@ -2,7 +2,7 @@
# Schema for federation configuration inside the searchchains section.
GenericSource =
- GenericSearchChainInQrservers &
+ SearchChainInFederation &
FederationOptions?
Source =
diff --git a/config-model/src/main/resources/schema/searchchains-standalone.rnc b/config-model/src/main/resources/schema/searchchains-standalone.rnc
deleted file mode 100644
index 6725627143d..00000000000
--- a/config-model/src/main/resources/schema/searchchains-standalone.rnc
+++ /dev/null
@@ -1,4 +0,0 @@
-# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-include "common.rnc"
-include "searchchains.rnc"
-start = SearchChains
diff --git a/config-model/src/main/resources/schema/searchchains.rnc b/config-model/src/main/resources/schema/searchchains.rnc
index d4c9e8f4f98..993a2088859 100644
--- a/config-model/src/main/resources/schema/searchchains.rnc
+++ b/config-model/src/main/resources/schema/searchchains.rnc
@@ -3,40 +3,17 @@
include "federation.rnc"
-SearchChains =
- element searchchains {
- Searcher* &
- SearchChainInQrservers* &
- GenericConfig*
- }
-
-OuterSearchChains =
- element searchchains {
- Searcher* &
- SearchChainInQrservers*
- }
-
-SearchChainInQrservers =
- element searchchain {
- GenericSearchChainInQrservers
- } |
- Provider
-
-GenericSearchChainInQrservers =
+SearchChainInFederation =
ComponentId &
- SearchChainInheritanceInQrservers &
+ SearchChainInheritanceInFederation &
attribute searchers { text }? &
Searcher* &
Phase* &
GenericConfig*
-SearchChainInheritanceInQrservers =
+SearchChainInheritanceInFederation =
attribute inherits { text }? &
- attribute excludes { text }? &
- element inherits {
- element searchchain { ComponentSpec }* &
- element exclude { ComponentSpec }*
- }?
+ attribute excludes { text }?
Searcher =
RegularSearcher |
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
index 7af81b3b9b1..1a5a7bbe544 100755
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/VespaDomBuilderTest.java
@@ -83,8 +83,8 @@ public class VespaDomBuilderTest {
@Test
public void testGetElement() {
- Element e = Xml.getElement(new StringReader("<searchchain><foo>sdf</foo></searchchain>"));
- assertEquals(e.getTagName(), "searchchain");
+ Element e = Xml.getElement(new StringReader("<chain><foo>sdf</foo></chain>"));
+ assertEquals(e.getTagName(), "chain");
assertEquals(XML.getChild(e, "foo").getTagName(), "foo");
assertEquals(XML.getValue(XML.getChild(e, "foo")), "sdf");
}
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSchemaChainsBuilderTest.java b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSchemaChainsBuilderTest.java
index 6006b52cf02..9fb7b58a43c 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSchemaChainsBuilderTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/builder/xml/dom/chains/search/DomSchemaChainsBuilderTest.java
@@ -43,7 +43,7 @@ public class DomSchemaChainsBuilderTest extends DomBuilderTest {
private SearchChains searchChains;
private static final Element element = parse(
- "<searchchains>",
+ "<search>",
" <searcher id='searcher:1'/>",
" <provider id='provider:1' inherits='parentChain1 parentChain2' excludes='ExcludedSearcher1 ExcludedSearcher2'",
@@ -59,15 +59,15 @@ public class DomSchemaChainsBuilderTest extends DomBuilderTest {
" </provider>",
- " <searchchain id='default'>",
+ " <chain id='default'>",
" <federation id='federationSearcher'>",
" <source id='mysource'>",
" <federationoptions optional='false' />",
" </source>",
" </federation>",
- " </searchchain>",
+ " </chain>",
- "</searchchains>");
+ "</search>");
@Before
@@ -78,17 +78,17 @@ public class DomSchemaChainsBuilderTest extends DomBuilderTest {
@Test
public void referToFederationAsSearcher() {
final Element element = parse(
- "<searchchains>",
+ "<search>",
" <federation id='federationSearcher'>",
" <source id='mysource'>",
" <federationoptions optional='false' />",
" </source>",
" </federation>",
- " <searchchain id='default'>",
+ " <chain id='default'>",
" <searcher id='federationSearcher'/>",
- " </searchchain>",
- "</searchchains>");
+ " </chain>",
+ "</search>");
try {
MockRoot root = new MockRoot();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java
index d74f271f6ef..20345615753 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/searchchain/SchemaChainsTest.java
@@ -21,15 +21,10 @@ import static org.junit.Assert.assertEquals;
*/
public class SchemaChainsTest extends SchemaChainsTestBase {
- private ChainsConfig chainsConfig;
private ClusterConfig clusterConfig;
@Before
public void subscribe() {
- ChainsConfig.Builder chainsBuilder = new ChainsConfig.Builder();
- chainsBuilder = (ChainsConfig.Builder)root.getConfig(chainsBuilder, "searchchains");
- chainsConfig = new ChainsConfig(chainsBuilder);
-
ClusterConfig.Builder clusterBuilder = new ClusterConfig.Builder();
clusterBuilder = (ClusterConfig.Builder)root.getConfig(clusterBuilder, "searchchains/chain/cluster2/component/" + ClusterSearcher.class.getName());
clusterConfig = new ClusterConfig(clusterBuilder);
@@ -39,7 +34,7 @@ public class SchemaChainsTest extends SchemaChainsTestBase {
@Override
Element servicesXml() {
return parse(
- "<searchchains>",
+ "<search>",
" <searcher id='searcher:1' classId='classId1' />",
" <provider id='provider:1' inherits='parentChain1 parentChain2' excludes='ExcludedSearcher1 ExcludedSearcher2'",
@@ -67,20 +62,7 @@ public class SchemaChainsTest extends SchemaChainsTestBase {
" <queryType>PROGRAMMATIC</queryType>",
" </config>",
" </provider>",
-
- " <searchchain id='default:99'>",
- " <federation id='federation:98' provides='provide_federation' before='p1 p2' after='s1 s2'>",
- " <source id='source:1'>",
- " <federationoptions optional='false' />",
- " </source>",
- " </federation>",
- " </searchchain>",
-
- " <searchchain id='parentChain1' />",
- " <searchchain id='parentChain2' />",
- " <searchchain id='parentChain3' />",
- " <searchchain id='parentChain4' />",
- "</searchchains>");
+ "</search>");
}
private SearchChains getSearchChains() {