Skip to content

Commit 99d98aa

Browse files
committed
Updated FinalizeNewService release script to be idempotent, allowing a service to be finalized multiple times without duplicate pom.xml entries.
1 parent b9493c9 commit 99d98aa

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

release-scripts/src/main/java/software/amazon/awssdk/release/FinalizeNewServiceModuleMain.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ private AddSubmoduleTransformer(String serviceModuleName) {
8989
protected void updateDocument(Document doc) {
9090
Node project = findChild(doc, "project");
9191
Node modules = findChild(project, "modules");
92-
93-
modules.appendChild(textElement(doc, "module", serviceModuleName));
92+
addChild(modules, textElement(doc, "module", serviceModuleName));
9493
}
9594
}
9695

@@ -105,8 +104,7 @@ private AddDependencyTransformer(String serviceModuleName) {
105104
protected void updateDocument(Document doc) {
106105
Node project = findChild(doc, "project");
107106
Node dependencies = findChild(project, "dependencies");
108-
109-
dependencies.appendChild(sdkDependencyElement(doc, serviceModuleName));
107+
addChild(dependencies, sdkDependencyElement(doc, serviceModuleName));
110108
}
111109
}
112110

@@ -122,8 +120,7 @@ protected void updateDocument(Document doc) {
122120
Node project = findChild(doc, "project");
123121
Node dependencyManagement = findChild(project, "dependencyManagement");
124122
Node dependencies = findChild(dependencyManagement, "dependencies");
125-
126-
dependencies.appendChild(sdkDependencyElement(doc, serviceModuleName));
123+
addChild(dependencies, sdkDependencyElement(doc, serviceModuleName));
127124
}
128125
}
129126
}

release-scripts/src/main/java/software/amazon/awssdk/release/PomTransformer.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,19 @@ protected final Node findChild(Node parent, String childName) {
7474
throw new IllegalArgumentException(parent + " has no child element named " + childName);
7575
}
7676

77+
protected final void addChild(Node parent, Element childToAdd) {
78+
NodeList children = parent.getChildNodes();
79+
for (int i = 0; i < children.getLength(); ++i) {
80+
Node existingChild = children.item(i);
81+
if (existingChild.isEqualNode(childToAdd)) {
82+
// Child already exists, skip.
83+
return;
84+
}
85+
}
86+
87+
parent.appendChild(childToAdd);
88+
}
89+
7790
protected final Element textElement(Document doc, String name, String value) {
7891
Element element = doc.createElement(name);
7992
element.setTextContent(value);

0 commit comments

Comments
 (0)