diff --git a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecorder.java b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecorder.java index 33104769f..deb32955a 100644 --- a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecorder.java +++ b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecorder.java @@ -20,8 +20,6 @@ import java.io.IOException; import java.nio.file.Path; -import org.codehaus.mojo.versions.api.change.VersionChange; - /** * Interface for implement a recorder of version changes. * @@ -32,11 +30,18 @@ public interface ChangeRecorder { /** * Record that a dependency was updated. * - * @param changeRecord a record described change + * @param changeRecord a dependency record described change + * @since 2.14.0 + */ + void recordChange(DependencyChangeRecord changeRecord); + + /** + * Record that a dependency was updated. + * + * @param changeRecord a dependency record described change * @since 2.14.0 - * @param concrete {@link VersionChange} sub-interface */ - void recordChange(ChangeRecord changeRecord); + void recordChange(PropertyChangeRecord changeRecord); /** * Write the current set of changes to the given output path. diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderNull.java b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderNull.java index d53025b4e..a1f98ef66 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderNull.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderNull.java @@ -23,8 +23,9 @@ import java.nio.file.Path; -import org.codehaus.mojo.versions.api.recording.ChangeRecord; import org.codehaus.mojo.versions.api.recording.ChangeRecorder; +import org.codehaus.mojo.versions.api.recording.DependencyChangeRecord; +import org.codehaus.mojo.versions.api.recording.PropertyChangeRecord; /** * A recorder that ignores updates. @@ -37,7 +38,10 @@ public class ChangeRecorderNull implements ChangeRecorder { public ChangeRecorderNull() {} @Override - public final void recordChange(ChangeRecord changeRecord) {} + public final void recordChange(PropertyChangeRecord changeRecord) {} + + @Override + public final void recordChange(DependencyChangeRecord changeRecord) {} @Override public final void writeReport(final Path outputPath) {} diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderXML.java b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderXML.java index f1dbec396..f772719e8 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderXML.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/ChangeRecorderXML.java @@ -38,9 +38,9 @@ import org.codehaus.mojo.versions.api.change.DependencyVersionChange; import org.codehaus.mojo.versions.api.change.PropertyVersionChange; -import org.codehaus.mojo.versions.api.recording.ChangeRecord; import org.codehaus.mojo.versions.api.recording.ChangeRecorder; import org.codehaus.mojo.versions.api.recording.DependencyChangeRecord; +import org.codehaus.mojo.versions.api.recording.PropertyChangeRecord; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -78,27 +78,29 @@ public ChangeRecorderXML() { } @Override - public final void recordChange(ChangeRecord changeRecord) { + public final void recordChange(DependencyChangeRecord changeRecord) { Element update; - if (changeRecord.getVersionChange() instanceof DependencyVersionChange) { - update = this.document.createElementNS(CHANGES_NAMESPACE, "dependencyUpdate"); - update.setAttribute( - "kind", ((DependencyChangeRecord) changeRecord).getKind().getLabel()); - DependencyVersionChange change = (DependencyVersionChange) changeRecord.getVersionChange(); - update.setAttribute("groupId", change.getGroupId()); - update.setAttribute("artifactId", change.getArtifactId()); - update.setAttribute("oldVersion", change.getOldVersion()); - update.setAttribute("newVersion", change.getNewVersion()); - } else if (changeRecord.getVersionChange() instanceof PropertyVersionChange) { - update = this.document.createElementNS(CHANGES_NAMESPACE, "propertyUpdate"); - PropertyVersionChange change = (PropertyVersionChange) changeRecord.getVersionChange(); - update.setAttribute("property", change.getProperty()); - update.setAttribute("oldValue", change.getOldValue()); - update.setAttribute("newValue", change.getNewValue()); - } else { - throw new IllegalArgumentException( - "Illegal change type: " + changeRecord.getVersionChange().getClass()); - } + update = this.document.createElementNS(CHANGES_NAMESPACE, "dependencyUpdate"); + update.setAttribute( + "kind", ((DependencyChangeRecord) changeRecord).getKind().getLabel()); + DependencyVersionChange change = (DependencyVersionChange) changeRecord.getVersionChange(); + update.setAttribute("groupId", change.getGroupId()); + update.setAttribute("artifactId", change.getArtifactId()); + update.setAttribute("oldVersion", change.getOldVersion()); + update.setAttribute("newVersion", change.getNewVersion()); + + this.root.appendChild(update); + } + + @Override + public final void recordChange(PropertyChangeRecord changeRecord) { + Element update; + update = this.document.createElementNS(CHANGES_NAMESPACE, "propertyUpdate"); + PropertyVersionChange change = (PropertyVersionChange) changeRecord.getVersionChange(); + update.setAttribute("property", change.getProperty()); + update.setAttribute("oldValue", change.getOldValue()); + update.setAttribute("newValue", change.getNewValue()); + this.root.appendChild(update); } diff --git a/versions-test/src/main/java/org/codehaus/mojo/versions/utils/TestChangeRecorder.java b/versions-test/src/main/java/org/codehaus/mojo/versions/utils/TestChangeRecorder.java index b591d600b..c9086c451 100644 --- a/versions-test/src/main/java/org/codehaus/mojo/versions/utils/TestChangeRecorder.java +++ b/versions-test/src/main/java/org/codehaus/mojo/versions/utils/TestChangeRecorder.java @@ -28,15 +28,21 @@ import java.util.Map; import org.codehaus.mojo.versions.api.change.VersionChange; -import org.codehaus.mojo.versions.api.recording.ChangeRecord; import org.codehaus.mojo.versions.api.recording.ChangeRecorder; +import org.codehaus.mojo.versions.api.recording.DependencyChangeRecord; +import org.codehaus.mojo.versions.api.recording.PropertyChangeRecord; @Named("test") public class TestChangeRecorder implements ChangeRecorder { private final List changes = new LinkedList<>(); @Override - public void recordChange(ChangeRecord changeRecord) { + public void recordChange(DependencyChangeRecord changeRecord) { + changes.add(changeRecord.getVersionChange()); + } + + @Override + public void recordChange(PropertyChangeRecord changeRecord) { changes.add(changeRecord.getVersionChange()); }