diff --git a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java index d80567579..9444be152 100644 --- a/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java +++ b/applications/spring-shell/src/test/java/org/springframework/sbm/BootUpgrade_27_30_IntegrationTest.java @@ -53,28 +53,36 @@ void migrateSimpleApplication() { verifyCrudRepoAddition(); verifyAutoConfigurationIsRefactored(); verifyEhCacheVersionIsUpgraded(); + verifyJohnzonCoreDependencyIsUpgraded(); } - private void buildProject() { executeMavenGoals(getTestDir(), "clean", "verify"); } - private void verifyEhCacheVersionIsUpgraded() { - String pomContent = loadFile(Path.of("pom.xml")); + private void verifyJohnzonCoreDependencyIsUpgraded() { + Optional johnzonResult = getDependencyByArtifactId("johnzon-core"); - Xml.Document mavenAsXMLDocument = parsePom(pomContent); + assertThat(johnzonResult.isPresent()).isTrue(); - List dependencies = mavenAsXMLDocument - .getMarkers() - .findFirst(MavenResolutionResult.class) - .get() - .getPom() - .getRequestedDependencies(); + Dependency johnzonDependency = johnzonResult.get(); - Optional ehcacheResult = dependencies + assertThat(johnzonDependency.getClassifier()).isEqualTo("jakarta"); + assertThat(johnzonDependency.getArtifactId()).isEqualTo("johnzon-core"); + assertThat(johnzonDependency.getVersion()).isEqualTo("1.2.18"); + } + + @NotNull + private Optional getDependencyByArtifactId(String artifactId) { + Xml.Document mavenAsXMLDocument = getRootBuildFile(); + List dependencies = getDependencies(mavenAsXMLDocument); + return dependencies .stream() - .filter(dependency -> dependency.getArtifactId().equals("ehcache")) + .filter(dependency -> dependency.getArtifactId().equals(artifactId)) .findFirst(); + } + + private void verifyEhCacheVersionIsUpgraded() { + Optional ehcacheResult = getDependencyByArtifactId("ehcache"); assertThat(ehcacheResult).isPresent(); @@ -86,6 +94,22 @@ private void verifyEhCacheVersionIsUpgraded() { assertThat(ehcacheDependency.getClassifier()).isEqualTo("jakarta"); } + @NotNull + private List getDependencies(Xml.Document mavenAsXMLDocument) { + return mavenAsXMLDocument + .getMarkers() + .findFirst(MavenResolutionResult.class) + .get() + .getPom() + .getRequestedDependencies(); + } + + @NotNull + private Xml.Document getRootBuildFile() { + + return parsePom(loadFile(Path.of("pom.xml"))); + } + private void verifyAutoConfigurationIsRefactored() { String autoConfig = loadFile(Path.of("src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports")); assertThat(autoConfig).isEqualTo("com.hello.GreetingConfig"); @@ -235,9 +259,7 @@ private void verifyPropertyConfigurationUpdate() { } private void verifyParentPomVersion() { - String pomContent = loadFile(Path.of("pom.xml")); - - Xml.Document mavenAsXMLDocument = parsePom(pomContent); + Xml.Document mavenAsXMLDocument = getRootBuildFile(); Xml.Tag parentTag =mavenAsXMLDocument .getRoot() diff --git a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml index 25cbcb816..c7a8ed3ff 100644 --- a/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml +++ b/applications/spring-shell/src/test/resources/testcode/boot-migration-27-30/pom.xml @@ -44,6 +44,10 @@ rxjava 3.1.5 + + org.apache.johnzon + johnzon-core + org.springframework.boot spring-boot-starter-test diff --git a/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/actions/Boot_27_30_UpgradeReplaceJohnzonDependencies.java b/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/actions/Boot_27_30_UpgradeReplaceJohnzonDependencies.java index 4d01c0695..02d325205 100644 --- a/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/actions/Boot_27_30_UpgradeReplaceJohnzonDependencies.java +++ b/components/sbm-recipes-boot-upgrade/src/main/java/org/springframework/sbm/boot/upgrade_27_30/actions/Boot_27_30_UpgradeReplaceJohnzonDependencies.java @@ -28,11 +28,14 @@ public class Boot_27_30_UpgradeReplaceJohnzonDependencies extends AbstractAction @Override public void apply(ProjectContext context) { + context.getApplicationModules() .stream() .map(ApplicationModule::getBuildFile) - .peek(bf -> bf.removeDependenciesMatchingRegex(JOHNZON_DEPENDENCY_PATTERN)) - .forEach(bf -> bf.addDependency(Dependency.fromCoordinates(JOHNZON_DEPENDENCY))); + .forEach(bf -> { + bf.removeDependenciesMatchingRegex(JOHNZON_DEPENDENCY_PATTERN); + bf.addDependency(Dependency.fromCoordinates(JOHNZON_DEPENDENCY)); + }); } @Override diff --git a/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml b/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml index 4f518777e..865232b6f 100644 --- a/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml +++ b/components/sbm-recipes-boot-upgrade/src/main/resources/recipes/boot-2.7-3.0-dependency-version-update.yaml @@ -37,6 +37,11 @@ condition: type: org.springframework.sbm.boot.upgrade.common.conditions.BootHasAutoconfigurationCondition + - type: org.springframework.sbm.boot.upgrade_27_30.actions.Boot_27_30_UpgradeReplaceJohnzonDependencies + condition: + type: org.springframework.sbm.boot.upgrade_27_30.conditions.JohnzonDependencyCondition + description: Changing JohnzonDependency version and classifier + - type: org.springframework.sbm.engine.recipe.OpenRewriteDeclarativeRecipeAdapter condition: type: org.springframework.sbm.boot.upgrade.common.conditions.HasSpringBootParentOfVersion @@ -52,7 +57,7 @@ - org.openrewrite.maven.ChangeDependencyClassifier: groupId: org.ehcache artifactId: ehcache - newClassifier: jakarta + newClassifier: jakarta - org.openrewrite.maven.ChangeDependencyVersion: dependencyPattern: org.ehcache:ehcache newVersion: 3.10.0