diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-01-04 17:23:34 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-01-06 15:24:03 +0000 |
commit | bba2f4139058e75526df4241b61176cbd7467696 (patch) | |
tree | d407ebac120950546d62f1eb80f9f60339b61c75 /config-application-package/src | |
parent | 2c88a54c47539558ea77010fd523febe52cc954c (diff) |
pick up "legacy" XML tags from services.xml
Diffstat (limited to 'config-application-package/src')
6 files changed, 90 insertions, 1 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java new file mode 100644 index 00000000000..c616784c7be --- /dev/null +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java @@ -0,0 +1,44 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.model.application; + +import com.yahoo.config.application.api.ApplicationPackage; +import com.yahoo.config.application.Xml; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.util.Map; +import java.util.HashMap; + +/** + * Common code for all implementations of ApplicationPackage + * + * @author arnej + */ +public abstract class AbstractApplicationPackage implements ApplicationPackage { + + @Override + public Map<String,String> legacyOverrides() { + Map<String, String> result = new HashMap<>(); + try { + Document services = Xml.getDocument(getServices()); + NodeList legacyNodes = services.getElementsByTagName("legacy"); + for (int i=0; i < legacyNodes.getLength(); i++) { + var flagNodes = legacyNodes.item(i).getChildNodes(); + for (int j = 0; j < flagNodes.getLength(); ++j) { + var flagNode = flagNodes.item(j); + if (flagNode.getNodeType() == Node.ELEMENT_NODE) { + String key = flagNode.getNodeName(); + String value = flagNode.getTextContent(); + result.put(key, value); + } + } + } + } catch (Exception e) { + // nothing: This method does not validate that services.xml exists, or that it is valid xml. + } + return result; + } + +} diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java index 1223f438029..4cde4e7afaa 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java @@ -18,6 +18,7 @@ import com.yahoo.config.provision.ApplicationName; import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.TenantName; import com.yahoo.config.provision.Zone; +import com.yahoo.config.model.application.AbstractApplicationPackage; import com.yahoo.io.HexDump; import com.yahoo.io.IOUtils; import com.yahoo.io.reader.NamedReader; @@ -72,7 +73,7 @@ import static com.yahoo.text.Lowercase.toLowerCase; * * @author Vegard Havdal */ -public class FilesApplicationPackage implements ApplicationPackage { +public class FilesApplicationPackage extends AbstractApplicationPackage { /** * The name of the subdirectory (below the original application package root) diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java index ec68ed73864..ae6f9373e16 100644 --- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java +++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java @@ -103,6 +103,16 @@ public class FilesApplicationPackageTest { } @Test + public void testLegacyOverrides() throws IOException { + File appDir = new File("src/test/resources/app-legacy-overrides"); + ApplicationPackage app = FilesApplicationPackage.fromFile(appDir); + var overrides = app.legacyOverrides(); + assertEquals(2, overrides.size()); + assertEquals("something here", overrides.get("foo-bar")); + assertEquals("false", overrides.get("v7-geo-positions")); + } + + @Test public void failOnEmptyServicesXml() throws IOException { File appDir = temporaryFolder.newFolder(); IOUtils.copyDirectory(new File("src/test/resources/multienvapp"), appDir); diff --git a/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml b/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml new file mode 100644 index 00000000000..64a07644038 --- /dev/null +++ b/config-application-package/src/test/resources/app-legacy-overrides/hosts.xml @@ -0,0 +1,10 @@ +<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --> +<hosts xmlns:deploy="vespa" xmlns:preprocess="properties"> + <preprocess:properties> + <node1.hostname>foo.yahoo.com</node1.hostname> + <node1.hostname deploy:environment="dev">bar.yahoo.com</node1.hostname> + </preprocess:properties> + <host name="${node1.hostname}"> + <alias>node1</alias> + </host> +</hosts> diff --git a/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd b/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd new file mode 100644 index 00000000000..7da7c49c162 --- /dev/null +++ b/config-application-package/src/test/resources/app-legacy-overrides/schemas/music.sd @@ -0,0 +1,8 @@ +# Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +search music { + document music { + field f type string { + indexing: index | summary + } + } +} diff --git a/config-application-package/src/test/resources/app-legacy-overrides/services.xml b/config-application-package/src/test/resources/app-legacy-overrides/services.xml new file mode 100644 index 00000000000..5f8201336ef --- /dev/null +++ b/config-application-package/src/test/resources/app-legacy-overrides/services.xml @@ -0,0 +1,16 @@ +<!-- Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. --> +<services version='1.0'> + <legacy> + <foo-bar>something here</foo-bar> + <v7-geo-positions>false</v7-geo-positions> + </legacy> + <admin version='2.0'> + <adminserver hostalias='node0'/> + </admin> + <content version='1.0' id='foo'> + <redundancy>1</redundancy> + <documents> + <document type="music.sd" mode="index" /> + </documents> + </content> +</services> |