From 9a4c0ee75cce728f1532360d64f2abc73678dcd9 Mon Sep 17 00:00:00 2001 From: Andrzej Jarmoniuk Date: Sun, 8 Jan 2023 07:53:05 +0100 Subject: [PATCH] Resolves #899: Corrected the invocation of Resolver to retrieve the timestamped snapshot version; added unit tests for LockSnapshotsMojo for the case when no timestamped versions are found --- .../versions/api/change/VersionChange.java | 26 ++++++++--------- .../versions/api/recording/ChangeRecord.java | 5 ++-- .../api/recording/ChangeRecorder.java | 5 +++- .../api/recording/DependencyChangeRecord.java | 4 ++- .../api/recording/PropertyChangeRecord.java | 28 +++++++++++++++++++ .../DefaultDependencyChangeRecord.java | 3 +- .../DefaultPropertyChangeRecord.java | 6 ++-- 7 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/PropertyChangeRecord.java diff --git a/versions-api/src/main/java/org/codehaus/mojo/versions/api/change/VersionChange.java b/versions-api/src/main/java/org/codehaus/mojo/versions/api/change/VersionChange.java index c934f2e04..c0718509f 100644 --- a/versions-api/src/main/java/org/codehaus/mojo/versions/api/change/VersionChange.java +++ b/versions-api/src/main/java/org/codehaus/mojo/versions/api/change/VersionChange.java @@ -1,21 +1,19 @@ package org.codehaus.mojo.versions.api.change; + /* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at + * Copyright MojoHaus and Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ /** diff --git a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecord.java b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecord.java index 0a050639d..16c2620bc 100644 --- a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecord.java +++ b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/ChangeRecord.java @@ -24,11 +24,12 @@ * * @author Slawomir Jaranowski * @since 2.14.0 + * @param concrete {@link VersionChange} sub-interface */ -public interface ChangeRecord { +public interface ChangeRecord { /** * @return a details about changed item * @since 2.14.0 */ - VersionChange getVersionChange(); + T getVersionChange(); } 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 461881825..33104769f 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,6 +20,8 @@ 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,8 +34,9 @@ public interface ChangeRecorder { * * @param changeRecord a record described change * @since 2.14.0 + * @param concrete {@link VersionChange} sub-interface */ - void recordChange(ChangeRecord changeRecord); + void recordChange(ChangeRecord changeRecord); /** * Write the current set of changes to the given output path. diff --git a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/DependencyChangeRecord.java b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/DependencyChangeRecord.java index 556c642cf..ad89aa45d 100644 --- a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/DependencyChangeRecord.java +++ b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/DependencyChangeRecord.java @@ -17,13 +17,15 @@ * */ +import org.codehaus.mojo.versions.api.change.DependencyVersionChange; + /** * Represents a change record of an item's version. * * @author Slawomir Jaranowski * @since 2.14.0 */ -public interface DependencyChangeRecord extends ChangeRecord { +public interface DependencyChangeRecord extends ChangeRecord { /** * Describe where version item is updated. */ diff --git a/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/PropertyChangeRecord.java b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/PropertyChangeRecord.java new file mode 100644 index 000000000..56d3627a6 --- /dev/null +++ b/versions-api/src/main/java/org/codehaus/mojo/versions/api/recording/PropertyChangeRecord.java @@ -0,0 +1,28 @@ +package org.codehaus.mojo.versions.api.recording; + +/* + * Copyright MojoHaus and Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import org.codehaus.mojo.versions.api.change.PropertyVersionChange; + +/** + * Represents a change record of an item's version. + * + * @author Slawomir Jaranowski + * @since 2.14.0 + */ +public interface PropertyChangeRecord extends ChangeRecord {} diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultDependencyChangeRecord.java b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultDependencyChangeRecord.java index ec97c2f09..e288c6818 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultDependencyChangeRecord.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultDependencyChangeRecord.java @@ -5,7 +5,6 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.model.Dependency; import org.codehaus.mojo.versions.api.change.DependencyVersionChange; -import org.codehaus.mojo.versions.api.recording.ChangeRecord; import org.codehaus.mojo.versions.api.recording.DependencyChangeRecord; import org.codehaus.mojo.versions.change.DefaultDependencyVersionChange; @@ -79,7 +78,7 @@ public Builder withArtifact(Artifact artifact) { return this; } - public ChangeRecord build() { + public DependencyChangeRecord build() { return new DefaultDependencyChangeRecord( kind, new DefaultDependencyVersionChange(groupId, artifactId, oldVersion, newVersion)); } diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultPropertyChangeRecord.java b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultPropertyChangeRecord.java index eef429a8c..35b1b6c9d 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultPropertyChangeRecord.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/recording/DefaultPropertyChangeRecord.java @@ -3,7 +3,7 @@ import java.util.Objects; import org.codehaus.mojo.versions.api.change.PropertyVersionChange; -import org.codehaus.mojo.versions.api.recording.ChangeRecord; +import org.codehaus.mojo.versions.api.recording.PropertyChangeRecord; import org.codehaus.mojo.versions.change.DefaultPropertyVersionChange; /* @@ -25,7 +25,7 @@ * under the License. */ -public class DefaultPropertyChangeRecord implements ChangeRecord { +public class DefaultPropertyChangeRecord implements PropertyChangeRecord { private final PropertyVersionChange versionChange; private DefaultPropertyChangeRecord(PropertyVersionChange versionChange) { @@ -61,7 +61,7 @@ public Builder withNewValue(String newValue) { return this; } - public ChangeRecord build() { + public PropertyChangeRecord build() { return new DefaultPropertyChangeRecord(new DefaultPropertyVersionChange(property, oldValue, newValue)); } }