Skip to content

Fixing ehcache issue found at spring-pet-clinic project #294 #311

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Aug 9, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,13 @@
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.openrewrite.maven.MavenParser;
import org.openrewrite.maven.tree.Dependency;
import org.openrewrite.maven.tree.MavenResolutionResult;
import org.openrewrite.xml.tree.Xml;

import java.nio.file.Path;
import java.util.List;
import java.util.Optional;

import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;

Expand All @@ -48,6 +52,34 @@ void migrateSimpleApplication() {
verifyConstructorBindingRemoval();
verifyCrudRepoAddition();
verifyAutoConfigurationIsRefactored();
verifyEhCacheVersionIsUpgraded();
}

private void verifyEhCacheVersionIsUpgraded() {
String pomContent = loadFile(Path.of("pom.xml"));

Xml.Document mavenAsXMLDocument = parsePom(pomContent);

List<Dependency> dependencies = mavenAsXMLDocument
.getMarkers()
.findFirst(MavenResolutionResult.class)
.get()
.getPom()
.getRequestedDependencies();

Optional<Dependency> ehcacheResult = dependencies
.stream()
.filter(dependency -> dependency.getArtifactId().equals("ehcache"))
.findFirst();

assertThat(ehcacheResult).isPresent();

Dependency ehcacheDependency = ehcacheResult.get();

assertThat(ehcacheDependency.getArtifactId()).isEqualTo("ehcache");
assertThat(ehcacheDependency.getGav().getGroupId()).isEqualTo("org.ehcache");
assertThat(ehcacheDependency.getGav().getVersion()).isNull();
assertThat(ehcacheDependency.getClassifier()).isEqualTo("jakarta");
}

private void verifyAutoConfigurationIsRefactored() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
**Features used in the current project**

* ehcache in pom is mentioned this helps validate our migration to spring 3 where ehcache classifier has to be used to resolve version.
* Uses Constructor binding on classes which will be removed when migrating to Spring 3
* Uses PagingAndSortingRepo interface where CrudRepo has been removed.
* Uses properties that will be removed/moved on spring 3 migration
* Uses micrometer packages which are moved to a new structure.

Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package org.springboot.example.ehcache;

import org.ehcache.event.CacheEvent;
import org.ehcache.event.CacheEventListener;

public class EventLogger implements CacheEventListener<Object, Object> {
@Override
public void onEvent(CacheEvent<?, ?> cacheEvent) {
System.out.println("My ehcache event listener is called");
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.springboot.example.upgrade;

import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import org.springframework.data.repository.reactive.ReactiveSortingRepository;

public interface StudentRepoReactiveSorting extends ReactiveSortingRepository<Student, Long> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@
displayName: Upgrade to Spring Data 3.0
description: 'Upgrade to Spring Data to 3.0 from any prior version.'
recipeList:
- org.openrewrite.maven.ChangeDependencyClassifier:
groupId: org.ehcache
artifactId: ehcache
newClassifier: jakarta
- org.openrewrite.maven.ChangeDependencyVersion:
dependencyPattern: org.ehcache:ehcache
newVersion: 3.10.0
- org.openrewrite.maven.UpgradeParentVersion:
groupId: org.springframework.boot
artifactId: spring-boot-starter-parent
Expand Down