From e476a74d8dad90035ba2d3b811898261e7cad3aa Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Sat, 9 Nov 2019 12:10:16 +0200 Subject: [PATCH] Ensure that the name of the generated Spring data repositories is unique Fixes #5317 --- .../deployment/generate/SpringDataRepositoryCreator.java | 6 ++++-- .../{PersonFragmentImpl.java => PersonRepositoryImpl.java} | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) rename integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/{PersonFragmentImpl.java => PersonRepositoryImpl.java} (87%) diff --git a/extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/SpringDataRepositoryCreator.java b/extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/SpringDataRepositoryCreator.java index 7ae0f5aa90c41..582a6d404bdfe 100644 --- a/extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/SpringDataRepositoryCreator.java +++ b/extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/SpringDataRepositoryCreator.java @@ -19,6 +19,7 @@ import org.jboss.jandex.IndexView; import org.jboss.jandex.Type; +import io.quarkus.deployment.util.HashUtil; import io.quarkus.deployment.util.JandexUtil; import io.quarkus.gizmo.ClassCreator; import io.quarkus.gizmo.ClassOutput; @@ -73,10 +74,11 @@ public void implementCrudRepository(ClassInfo repositoryToImplement) { } Map fragmentImplNameToFieldDescriptor = new HashMap<>(); - String generatedClassName = repositoryToImplement.name().toString() + "Impl"; + String repositoryToImplementStr = repositoryToImplement.name().toString(); + String generatedClassName = repositoryToImplementStr + "_" + HashUtil.sha1(repositoryToImplementStr) + "Impl"; try (ClassCreator classCreator = ClassCreator.builder().classOutput(classOutput) .className(generatedClassName) - .interfaces(repositoryToImplement.name().toString()) + .interfaces(repositoryToImplementStr) .build()) { classCreator.addAnnotation(ApplicationScoped.class); diff --git a/integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonFragmentImpl.java b/integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonRepositoryImpl.java similarity index 87% rename from integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonFragmentImpl.java rename to integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonRepositoryImpl.java index e05ceab2dc679..9495f48338418 100644 --- a/integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonFragmentImpl.java +++ b/integration-tests/spring-data-jpa/src/main/java/io/quarkus/it/spring/data/jpa/PersonRepositoryImpl.java @@ -5,7 +5,7 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -public class PersonFragmentImpl implements PersonFragment, PersonFragment2 { +public class PersonRepositoryImpl implements PersonFragment, PersonFragment2 { @PersistenceContext EntityManager entityManager;