Skip to content

Commit

Permalink
Resolve artifactId before downloading versions
Browse files Browse the repository at this point in the history
  • Loading branch information
sghill committed Aug 10, 2024
1 parent e73cb6a commit ea25671
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.openrewrite.internal.lang.Nullable;
import org.openrewrite.maven.table.MavenMetadataFailures;
import org.openrewrite.maven.tree.MavenMetadata;
import org.openrewrite.maven.tree.ResolvedPom;
import org.openrewrite.semver.Semver;
import org.openrewrite.semver.VersionComparator;
import org.openrewrite.xml.ChangeTagValueVisitor;
Expand Down Expand Up @@ -156,7 +157,13 @@ public Xml.Tag visitTag(Xml.Tag tag, ExecutionContext ctx) {
Optional<Xml.Tag> versionTag = t.getChild("version");

if (versionTag.isPresent()) {
String resolvedNewVersion = resolveSemverVersion(ctx, newGroupId, newArtifactId, versionTag.get().getValue().orElse(null));
String resolvedArtifactId = newArtifactId;
if (resolvedArtifactId.contains("${")) {
ResolvedPom pom = getResolutionResult().getPom();
Map<String, String> properties = pom.getProperties();
resolvedArtifactId = ResolvedPom.placeholderHelper.replacePlaceholders(newArtifactId, properties::get);
}
String resolvedNewVersion = resolveSemverVersion(ctx, newGroupId, resolvedArtifactId, versionTag.get().getValue().orElse(null));
t = (Xml.Tag) new ChangeTagValueVisitor<>(versionTag.get(), resolvedNewVersion).visitNonNull(t, 0, getCursor().getParentOrThrow());
}
changed = true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,61 @@ void changeManagedDependencyWithDynamicVersion() {
);
}

@Test
void changeManagedDependencyWithPropertyName() {
rewriteRun(
spec -> spec.recipe(new ChangeManagedDependencyGroupIdAndArtifactId(
"javax.activation",
"javax.activation-api",
"jakarta.activation",
"jakarta.acti${partial.arti}-api",
"2.1.0"
)),
pomXml(
"""
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<properties>
<partial.arti>vation</partial.arti>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
""",
"""
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1</version>
<properties>
<partial.arti>vation</partial.arti>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>jakarta.activation</groupId>
<artifactId>jakarta.acti${partial.arti}-api</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
"""
)
);
}

@Test
void latestPatchMangedDependency() {
rewriteRun(
Expand Down

0 comments on commit ea25671

Please sign in to comment.