From bba2f4139058e75526df4241b61176cbd7467696 Mon Sep 17 00:00:00 2001 From: Arne H Juul Date: Tue, 4 Jan 2022 17:23:34 +0000 Subject: pick up "legacy" XML tags from services.xml --- .../application/AbstractApplicationPackage.java | 44 ++++++++++++++++++++++ .../provider/FilesApplicationPackage.java | 3 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 config-application-package/src/main/java/com/yahoo/config/model/application/AbstractApplicationPackage.java (limited to 'config-application-package/src/main/java/com/yahoo') 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 legacyOverrides() { + Map 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) -- cgit v1.2.3