aboutsummaryrefslogtreecommitdiffstats
path: root/config-application-package/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@vespa.ai>2023-05-15 11:56:15 +0200
committerJon Bratseth <bratseth@vespa.ai>2023-05-15 11:56:15 +0200
commit9df18e3066115f6084fab9b5c04ecd303084426c (patch)
tree1c68da2bb7573fcc84a66c327872926478824143 /config-application-package/src/main/java/com/yahoo
parent7e39f8036dbeb3722fca3a50fdc9c86129011cf0 (diff)
Don't assume any environments are single-region
Diffstat (limited to 'config-application-package/src/main/java/com/yahoo')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java6
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java25
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/ValidationProcessor.java1
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/application/Xml.java14
4 files changed, 22 insertions, 24 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
index 169b1c8557b..f98f0524fea 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/OverrideProcessor.java
@@ -169,11 +169,7 @@ class OverrideProcessor implements PreProcessor {
}
if ( ! elementRegions.isEmpty()) { // match region
- // match region in multi-region environments only
- if ( environment.isMultiRegion() && ! elementRegions.contains(region)) return false;
-
- // explicit region implies multi-region environment
- if ( ! environment.isMultiRegion() && elementEnvironments.isEmpty() ) return false;
+ if ( ! elementRegions.contains(region)) return false;
}
if ( ! elementTags.isEmpty()) { // match tags
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
index 2152a62228b..0c49e9f41d9 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/PropertiesProcessor.java
@@ -3,7 +3,11 @@ package com.yahoo.config.application;
import java.util.logging.Level;
import com.yahoo.text.XML;
-import org.w3c.dom.*;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import javax.xml.transform.TransformerException;
import java.util.ArrayList;
@@ -18,6 +22,7 @@ import java.util.logging.Logger;
* @author hmusum
*/
class PropertiesProcessor implements PreProcessor {
+
private final static Logger log = Logger.getLogger(PropertiesProcessor.class.getName());
private final LinkedHashMap<String, String> properties;
@@ -27,7 +32,7 @@ class PropertiesProcessor implements PreProcessor {
public Document process(Document input) throws TransformerException {
Document doc = Xml.copyDocument(input);
- final Document document = buildProperties(doc);
+ Document document = buildProperties(doc);
applyProperties(document.getDocumentElement());
return document;
}
@@ -36,11 +41,9 @@ class PropertiesProcessor implements PreProcessor {
NodeList list = input.getElementsByTagNameNS(XmlPreProcessor.preprocessNamespaceUri, "properties");
while (list.getLength() > 0) {
Element propertiesElement = (Element) list.item(0);
- //System.out.println("prop=" + propertiesElement);
Element parent = (Element) propertiesElement.getParentNode();
for (Node node : XML.getChildren(propertiesElement)) {
- //System.out.println("Found " + node.getNodeName() + ", " + node.getTextContent());
- final String propertyName = node.getNodeName();
+ String propertyName = node.getNodeName();
if (properties.containsKey(propertyName)) {
log.log(Level.WARNING, "Duplicate definition for property '" + propertyName + "' detected");
}
@@ -53,8 +56,7 @@ class PropertiesProcessor implements PreProcessor {
}
private void applyProperties(Element parent) {
- // System.out.println("applying properties for " + parent.getNodeName());
- final NamedNodeMap attributes = parent.getAttributes();
+ NamedNodeMap attributes = parent.getAttributes();
for (int i = 0; i < attributes.getLength(); i++) {
Node a = attributes.item(i);
if (hasProperty(a)) {
@@ -84,7 +86,7 @@ class PropertiesProcessor implements PreProcessor {
// Use a list with keys sorted by length (longest key first)
// Needed for replacing values where you have overlapping keys
ArrayList<String> keys = new ArrayList<>(properties.keySet());
- Collections.sort(keys, Collections.reverseOrder(Comparator.comparing(String::length)));
+ keys.sort(Collections.reverseOrder(Comparator.comparing(String::length)));
for (String key : keys) {
String value = properties.get(key);
@@ -92,10 +94,10 @@ class PropertiesProcessor implements PreProcessor {
// first, the else branch will only happen when there cannot be an exact
// match, i.e. where you want to replace only parts of the attribute or node value
if (propertyValue.equals("${" + key + "}")) {
- final String regex = "\\$\\{" + key + "\\}";
+ String regex = "\\$\\{" + key + "}";
return propertyValue.replaceAll(regex, value);
} else if (propertyValue.contains(key)) {
- return propertyValue.replaceAll("\\$\\{" + key + "\\}", value);
+ return propertyValue.replaceAll("\\$\\{" + key + "}", value);
}
}
throw new IllegalArgumentException("Unable to find property replace in " + propertyValue);
@@ -116,10 +118,11 @@ class PropertiesProcessor implements PreProcessor {
}
private static boolean hasProperty(String s) {
- return s.matches("^.*\\$\\{.+\\}.*$");
+ return s.matches("^.*\\$\\{.+}.*$");
}
public LinkedHashMap<String, String> getProperties() {
return properties;
}
+
}
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/ValidationProcessor.java b/config-application-package/src/main/java/com/yahoo/config/application/ValidationProcessor.java
index 5f430f70584..3dd2af0b6ea 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/ValidationProcessor.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/ValidationProcessor.java
@@ -15,4 +15,5 @@ public class ValidationProcessor implements PreProcessor {
throw new UnsupportedOperationException("XInclude not supported, use preprocess:include instead");
return input;
}
+
} \ No newline at end of file
diff --git a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
index cf391f2dd0e..525da509de6 100644
--- a/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
+++ b/config-application-package/src/main/java/com/yahoo/config/application/Xml.java
@@ -32,19 +32,18 @@ import java.util.logging.Logger;
* @author hmusum
*/
public class Xml {
+
private static final Logger log = Logger.getLogger(Xml.class.getPackage().toString());
// Access to this needs to be synchronized (as it is in getDocumentBuilder() below)
private static final DocumentBuilderFactory factory = createDocumentBuilderFactory();
public static Document getDocument(Reader reader) {
- Document doc;
try {
- doc = getDocumentBuilder().parse(new InputSource(reader));
+ return getDocumentBuilder().parse(new InputSource(reader));
} catch (SAXException | IOException e) {
throw new IllegalArgumentException(e);
}
- return doc;
}
private static DocumentBuilderFactory createDocumentBuilderFactory() {
@@ -67,7 +66,7 @@ public class Xml {
/**
* Creates a new XML document builder.
*
- * @return A new DocumentBuilder instance, or null if we fail to get one.
+ * @return a new DocumentBuilder instance, or null if we fail to get one.
*/
private static synchronized DocumentBuilder getDocumentBuilder() {
try {
@@ -114,7 +113,7 @@ public class Xml {
}
/**
- * Utility method to get an XML element from a reader
+ * Utility method to get an XML element from a reader.
*
* @param reader the {@link Reader} to get an xml element from
*/
@@ -122,9 +121,7 @@ public class Xml {
return XML.getDocument(reader).getDocumentElement();
}
- /**
- * @return The root element of each xml file under pathFromAppRoot/ in the app package
- */
+ /** Returns the root element of each xml file under pathFromAppRoot/ in the app package. */
public static List<Element> allElemsFromPath(ApplicationPackage app, String pathFromAppRoot) {
List<Element> ret = new ArrayList<>();
List<NamedReader> files = null;
@@ -156,4 +153,5 @@ public class Xml {
}
return children;
}
+
}