diff --git a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/EntityIdForRepoReconciler.java b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/EntityIdForRepoReconciler.java index 772b6df9a..9406894d2 100644 --- a/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/EntityIdForRepoReconciler.java +++ b/headless-services/spring-boot-language-server/src/main/java/org/springframework/ide/vscode/boot/java/reconcilers/EntityIdForRepoReconciler.java @@ -133,8 +133,6 @@ public class EntityIdForRepoReconciler implements JdtAstReconciler { ITypeBinding repoType = repoTypeChain.get(i); ITypeBinding[] typeParams = repoType.isParameterizedType() ? repoType.getTypeArguments() : repoType.getTypeParameters(); - boolean domainTypeChanged = false; - boolean idTypeChanged = false; if (repoType.isGenericType() || repoType.isParameterizedType()) { if (domainType == null || domainType.isTypeVariable()) { int idx = domainType == null ? -1 @@ -145,7 +143,6 @@ public class EntityIdForRepoReconciler implements JdtAstReconciler { domainTypeIndex = idx; domainType = typeParams[domainTypeIndex]; } - domainTypeChanged = true; } if (idType == null || idType.isTypeVariable()) { int idx = idType == null ? -1 @@ -156,31 +153,16 @@ public class EntityIdForRepoReconciler implements JdtAstReconciler { idTypeIndex = idx; idType = typeParams[idTypeIndex]; } - idTypeChanged = true; } } else { if (idType == null || idType.isTypeVariable()) { idType = typeParams[idTypeIndex]; - idTypeChanged = true; } if (domainType == null || domainType.isTypeVariable()) { domainType = typeParams[domainTypeIndex]; - domainTypeChanged = true; } } - // Adjust domainTypeIndex or idTypeIndex if needed as well as remaining expected - // number of parameters - if (idType != null && idTypeChanged) { - if (domainType.isTypeVariable() && domainTypeIndex > idTypeIndex) { - domainTypeIndex--; - } - } - if (domainType != null && domainTypeChanged) { - if (idType.isTypeVariable() && idTypeIndex > domainTypeIndex) { - idTypeIndex--; - } - } } ITypeBinding domainClassType = domainType; diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/reconcilers/test/EntityIdForRepoReconcilerTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/reconcilers/test/EntityIdForRepoReconcilerTest.java index 4fbad946b..0f01747b4 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/reconcilers/test/EntityIdForRepoReconcilerTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/java/reconcilers/test/EntityIdForRepoReconcilerTest.java @@ -1152,4 +1152,40 @@ public class EntityIdForRepoReconcilerTest extends BaseReconcilerTest { assertEquals(0, problems.size()); } + + @Test + void gh1220() throws Exception { + Path roleSource = createFile("BaseEntity.java", """ + package demo; + + import jakarta.persistence.Column; + import jakarta.persistence.GeneratedValue; + import jakarta.persistence.GenerationType; + import jakarta.persistence.Id; + import jakarta.persistence.MappedSuperclass; + + @MappedSuperclass + public abstract class BaseEntity { + + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + } + """); + + String source = """ + package demo; + + import org.springframework.data.jpa.repository.support.SimpleJpaRepository; + + public abstract class RdsJpaRepository extends SimpleJpaRepository { + } + """; + List problems = reconcile("CustomerRepository.java", source, false, roleSource); + + assertEquals(0, problems.size()); + + } + }