diff --git a/src/main/java/org/springframework/cli/util/ConversionUtils.java b/src/main/java/org/springframework/cli/util/ConversionUtils.java
index 0c035dc6..0cc08df2 100644
--- a/src/main/java/org/springframework/cli/util/ConversionUtils.java
+++ b/src/main/java/org/springframework/cli/util/ConversionUtils.java
@@ -18,6 +18,8 @@
import java.io.StringWriter;
import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
import javax.xml.bind.JAXB;
@@ -33,17 +35,33 @@ private ConversionUtils() {
}
+ /**
+ * Converts Xpp3Dom to a String without any xml declaration
+ * @param dom the Xpp3Dom to convert
+ * @return String without any Xml Declarations
+ */
public static String fromDomToString(Xpp3Dom dom) {
String element = dom.toString();
- return element;
+ return element.lines().filter(l -> !l.contains(" dependencies) {
StringWriter sw = new StringWriter();
+
Dependencies deps = new Dependencies(dependencies);
JAXB.marshal(deps, sw);
String xmlString = sw.toString();
- return xmlString;
+ // filter out lines containing xml declarations and default elements like:
+ // false and jar
+ return xmlString.lines().filter(l -> !l.contains("false") &&
+ !l.contains("jar"))
+ .collect(Collectors.joining("\n"));
}
/*
@@ -52,18 +70,18 @@ public static String fromDependencyListToString(List dependencies) {
*/
public static class Dependencies {
- private List dependencies;
+ private List dependency;
public Dependencies(List dependencies) {
- this.dependencies = dependencies;
+ this.dependency = dependencies;
}
- public List getDependencies() {
- return dependencies;
+ public List getDependency() {
+ return dependency;
}
- public void setDependencies(List dependencies) {
- this.dependencies = dependencies;
+ public void setDependency(List dependencies) {
+ this.dependency = dependencies;
}
}
diff --git a/src/test/java/org/springframework/cli/merger/MavenModificationTests.java b/src/test/java/org/springframework/cli/merger/MavenModificationTests.java
index f97da023..2e9a37f6 100644
--- a/src/test/java/org/springframework/cli/merger/MavenModificationTests.java
+++ b/src/test/java/org/springframework/cli/merger/MavenModificationTests.java
@@ -78,7 +78,11 @@ void addPluginDependency(@TempDir Path tempDir) throws Exception {
pomReader.readPom(pomToMerge.toFile()), paths, mavenParser);
Model mergedModel = pomReader.readPom(mergedPomPath.toFile());
+ assertThat(mergedModel.getBuild().getPlugins()).hasSize(3);
+ List mergedPluginIds = new ArrayList<>();
for (Plugin plugin : mergedModel.getBuild().getPlugins()) {
+
+ mergedPluginIds.add(plugin.getArtifactId());
if (plugin.getGroupId().equals("org.apache.maven.plugins")
&& plugin.getArtifactId().equals("maven-deploy-plugin")) {
assertThat(ConversionUtils.fromDomToString((Xpp3Dom) plugin.getConfiguration()))
@@ -98,6 +102,8 @@ else if (plugin.getGroupId().equals("org.springframework.boot")
assertThat(dep.getArtifactId()).isEqualTo("spring-boot-thin-layout");
}
}
+ assertThat(mergedPluginIds).containsExactlyInAnyOrder("maven-deploy-plugin", "maven-shade-plugin",
+ "spring-boot-maven-plugin");
}
@Test
diff --git a/src/test/java/org/springframework/cli/util/ConversionUtilsTest.java b/src/test/java/org/springframework/cli/util/ConversionUtilsTest.java
new file mode 100644
index 00000000..cc7af325
--- /dev/null
+++ b/src/test/java/org/springframework/cli/util/ConversionUtilsTest.java
@@ -0,0 +1,87 @@
+package org.springframework.cli.util;
+
+import org.apache.maven.model.Dependency;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+//@Disabled("This is a WIP Test")
+class ConversionUtilsTest {
+
+
+
+ @DisplayName("Characterization Test to validate how this current works, note the xml declaration AND the duplicate dependencies element")
+ @Disabled("This test exists to show what was actually coming out of ConversionUtil")
+ @Test
+ void existingFromDependencyListToString() {
+ List dependencies = new ArrayList<>();
+ Dependency dependency = new Dependency();
+ dependency.setGroupId("org.springframework");
+ dependency.setArtifactId("spring-core");
+ dependency.setVersion("5.2.0.RELEASE");
+ dependencies.add(dependency);
+ String result = ConversionUtils.fromDependencyListToString(dependencies);
+ assertThat(result.replaceAll("\\s",""))
+ .isEqualTo("" +
+ "" +
+ "" +
+ "spring-core" +
+ "org.springframework" +
+ "false" +
+ "5.2.0.RELEASE" +
+ "" +
+ "");
+
+ }
+
+ @DisplayName("After ConversionUtils is corrected, this test should pass")
+ @Test
+ void validateFromDependencyListToString() {
+ List dependencies = new ArrayList<>();
+ Dependency dependency = new Dependency();
+ dependency.setGroupId("org.springframework");
+ dependency.setArtifactId("spring-core");
+ dependency.setVersion("5.2.0.RELEASE");
+ dependencies.add(dependency);
+ String result = ConversionUtils.fromDependencyListToString(dependencies);
+ assertThat(result.replaceAll("\\s",""))
+ .isEqualTo("" +
+ "" +
+ "spring-core" +
+ "org.springframework" +
+ "5.2.0.RELEASE" +
+ "" +
+ "");
+
+ }
+
+
+ @DisplayName("fromDomToString removes XML declaration")
+ @Test
+ void fromDomToStringRemovesXmlDeclaration() {
+ Xpp3Dom dom = new Xpp3Dom("root");
+ Xpp3Dom child = new Xpp3Dom("child");
+ child.setValue("value");
+ dom.addChild(child);
+ String result = ConversionUtils.fromDomToString(dom);
+ assertThat(result).doesNotContain("").contains("").contains("value");
+ }
+
+ @DisplayName("fromDomToString handles empty Xpp3Dom")
+ @Test
+ void fromDomToStringHandlesEmptyXpp3Dom() {
+ Xpp3Dom dom = new Xpp3Dom("root");
+ String result = ConversionUtils.fromDomToString(dom);
+ assertThat(result).isEqualTo("");
+ }
+
+
+
+
+}
\ No newline at end of file