diff --git a/nrich-registry/src/main/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationService.java b/nrich-registry/src/main/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationService.java index 5510f09d9..d3ea91bf8 100644 --- a/nrich-registry/src/main/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationService.java +++ b/nrich-registry/src/main/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationService.java @@ -102,10 +102,11 @@ private RegistryEntityConfiguration resolveRegistryConfiguration(String groupId, String registryDisplayName = registryDisplayLabel(entityType); boolean isHistoryAvailable = registryOverrideConfiguration.isHistoryAvailable() || isAudited(entityType); List registryPropertyConfigurationList = resolveRegistryPropertyListForType(managedTypeWrapper, registryOverrideConfiguration); - List registryEmbeddedIdPropertyConfigurationList = resolverEmbeddedIdPropertyConfigurationList(managedTypeWrapper, registryOverrideConfiguration); + List registryEmbeddedIdPropertyConfigurationList = resolveEmbeddedIdPropertyConfigurationList(managedTypeWrapper, registryOverrideConfiguration); List registryPropertyDisplayOrderList = Optional.ofNullable(registryOverrideConfiguration.getPropertyDisplayOrderList()).orElse(Collections.emptyList()); registryPropertyConfigurationList.sort(new RegistryPropertyComparator(registryPropertyDisplayOrderList)); + registryEmbeddedIdPropertyConfigurationList.sort(new RegistryPropertyComparator(registryPropertyDisplayOrderList)); return RegistryEntityConfiguration.builder() .groupId(groupId) @@ -137,7 +138,7 @@ private List resolveRegistryPropertyListForType(M ); } - private List resolverEmbeddedIdPropertyConfigurationList(ManagedTypeWrapper managedTypeWrapper, RegistryOverrideConfiguration registryOverrideConfiguration) { + private List resolveEmbeddedIdPropertyConfigurationList(ManagedTypeWrapper managedTypeWrapper, RegistryOverrideConfiguration registryOverrideConfiguration) { if (!managedTypeWrapper.isEmbeddedIdentifier()) { return Collections.emptyList(); } diff --git a/nrich-registry/src/test/java/net/croz/nrich/registry/RegistryTestConfiguration.java b/nrich-registry/src/test/java/net/croz/nrich/registry/RegistryTestConfiguration.java index 23c53a269..3906bcaec 100644 --- a/nrich-registry/src/test/java/net/croz/nrich/registry/RegistryTestConfiguration.java +++ b/nrich-registry/src/test/java/net/croz/nrich/registry/RegistryTestConfiguration.java @@ -39,6 +39,7 @@ import net.croz.nrich.registry.configuration.controller.RegistryConfigurationController; import net.croz.nrich.registry.configuration.service.DefaultRegistryConfigurationService; import net.croz.nrich.registry.configuration.stub.RegistryConfigurationTestEntity; +import net.croz.nrich.registry.configuration.stub.RegistryConfigurationTestEntityWithAssociationAndEmbeddedId; import net.croz.nrich.registry.core.model.RegistryDataConfigurationHolder; import net.croz.nrich.registry.core.model.RegistryGroupDefinitionHolder; import net.croz.nrich.registry.core.model.RegistryHistoryConfigurationHolder; @@ -340,7 +341,17 @@ private List createRegistryOverrideConfigur RegistryOverrideConfigurationHolder searchConfigurationHolder = RegistryOverrideConfigurationHolder.builder() .type(RegistryTestEntityWithOverriddenSearchConfiguration.class).overrideSearchConfiguration(searchConfiguration).build(); - return Arrays.asList(interceptorTestEntityConfigurationHolder, InterceptorTestNonEntityNonModifiableConfigurationHolder, searchConfigurationHolder, configurationEntityConfigurationHolder); + RegistryOverrideConfiguration embeddedEntityOverrideConfiguration = RegistryOverrideConfiguration.defaultConfiguration(); + + embeddedEntityOverrideConfiguration.setPropertyDisplayOrderList(List.of("id.secondId", "id.firstId")); + + RegistryOverrideConfigurationHolder embeddedEntityOverrideConfigurationHolder = RegistryOverrideConfigurationHolder.builder() + .type(RegistryConfigurationTestEntityWithAssociationAndEmbeddedId.class).overrideConfiguration(embeddedEntityOverrideConfiguration).build(); + + return Arrays.asList( + interceptorTestEntityConfigurationHolder, InterceptorTestNonEntityNonModifiableConfigurationHolder, searchConfigurationHolder, configurationEntityConfigurationHolder, + embeddedEntityOverrideConfigurationHolder + ); } private ModelMapper strictModelMapper() { diff --git a/nrich-registry/src/test/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationServiceTest.java b/nrich-registry/src/test/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationServiceTest.java index c94a9f2bb..b09a662ca 100644 --- a/nrich-registry/src/test/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationServiceTest.java +++ b/nrich-registry/src/test/java/net/croz/nrich/registry/configuration/service/DefaultRegistryConfigurationServiceTest.java @@ -154,7 +154,7 @@ void shouldResolveRegistryConfigurationForComplexEntitiesWithAssociationsAndEmbe assertThat(registryEntityConfiguration.getPropertyConfigurationList()).extracting("name").containsExactly( "id", "amount", "registryConfigurationTestEntityManyToOne", "registryConfigurationTestEntityOneToOne" ); - assertThat(registryEntityConfiguration.getEmbeddedIdPropertyConfigurationList()).extracting("name").containsExactlyInAnyOrder("id.firstId", "id.secondId"); + assertThat(registryEntityConfiguration.getEmbeddedIdPropertyConfigurationList()).extracting("name").containsExactly("id.secondId", "id.firstId"); // and when RegistryPropertyConfiguration numberRegistryConfiguration = registryEntityConfiguration.getPropertyConfigurationList().get(1);