summaryrefslogtreecommitdiffstats
path: root/config-model-api
diff options
context:
space:
mode:
authorØyvind Grønnesby <oyving@verizonmedia.com>2019-06-27 17:34:24 +0200
committerØyvind Grønnesby <oyving@verizonmedia.com>2019-06-27 17:34:24 +0200
commit79f4950a21084e1e17f2a7ebe47ac74a97217ce3 (patch)
tree21185919ceac313899e20af88528f639f25e4f60 /config-model-api
parent559c2f2c38f70b785074be6e142548be412cd648 (diff)
Do not allow duplicate IDs of endpoints when reading deployments.xml
Diffstat (limited to 'config-model-api')
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java11
1 files changed, 6 insertions, 5 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
index 650f68591b6..72a806bb7be 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/xml/DeploymentSpecXmlReader.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -161,7 +162,7 @@ public class DeploymentSpecXmlReader {
final var endpointsElement = XML.getChild(root, endpointsTag);
if (endpointsElement == null) { return Collections.emptyList(); }
- final var endpoints = new ArrayList<Endpoint>();
+ final var endpoints = new LinkedHashMap<String, Endpoint>();
for (var endpointElement : XML.getChildren(endpointsElement, endpointTag)) {
final Optional<String> rotationId = stringAttribute("id", endpointElement);
@@ -184,13 +185,13 @@ public class DeploymentSpecXmlReader {
}
var endpoint = new Endpoint(rotationId, containerId.get(), regions);
- if (endpoints.contains(endpoint)) {
- throw new IllegalArgumentException("Duplicate 'endpoint' in 'endpoints' tag");
+ if (endpoints.containsKey(endpoint.endpointId())) {
+ throw new IllegalArgumentException("Duplicate attribute 'id' on 'endpoint': " + endpoint.endpointId());
}
- endpoints.add(endpoint);
+ endpoints.put(endpoint.endpointId(), endpoint);
}
- return endpoints;
+ return List.copyOf(endpoints.values());
}
/**