From cb75eaee90142b7f2e90f56a298d29ed075bf8cf Mon Sep 17 00:00:00 2001 From: Oliver Drotbohm Date: Wed, 17 Feb 2021 14:07:52 +0100 Subject: [PATCH] #1974 - Polishing. Deprecated configuration methods on RepositoryRestConfiguration for better naming. --- .../config/RepositoryRestConfiguration.java | 53 +++++++++++++++---- .../mapping/RepositoryResourceMappings.java | 2 +- .../RepositoryRestConfigurationUnitTests.java | 5 +- 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryRestConfiguration.java b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryRestConfiguration.java index 7248e7ac2..9d3446c15 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryRestConfiguration.java +++ b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryRestConfiguration.java @@ -27,6 +27,7 @@ import org.springframework.data.rest.core.mapping.ExposureConfiguration; import org.springframework.data.rest.core.mapping.RepositoryDetectionStrategy; import org.springframework.data.rest.core.mapping.RepositoryDetectionStrategy.RepositoryDetectionStrategies; import org.springframework.data.rest.core.support.EntityLookup; +import org.springframework.hateoas.LinkRelation; import org.springframework.hateoas.MediaTypes; import org.springframework.hateoas.server.LinkRelationProvider; import org.springframework.hateoas.server.core.AnnotationLinkRelationProvider; @@ -67,16 +68,14 @@ public class RepositoryRestConfiguration { private RepositoryDetectionStrategy repositoryDetectionStrategy = RepositoryDetectionStrategies.DEFAULT; private boolean exposeRepositoryMethodsByDefault = true; - /** - * The {@link RelProvider} to be used to calculate the link relation defaults for repositories. - */ - private LinkRelationProvider relProvider = new EvoInflectorLinkRelationProvider(); private final ProjectionDefinitionConfiguration projectionConfiguration; private final MetadataConfiguration metadataConfiguration; private final EntityLookupConfiguration entityLookupConfiguration; private final ExposureConfiguration exposureConfiguration; private final EnumTranslationConfiguration enumTranslationConfiguration; + + private LinkRelationProvider linkRelationProvider; private boolean enableEnumTranslation = false; /** @@ -99,7 +98,7 @@ public class RepositoryRestConfiguration { this.entityLookupConfiguration = new EntityLookupConfiguration(); this.exposureConfiguration = new ExposureConfiguration(); - this.relProvider = new DelegatingLinkRelationProvider( // + this.linkRelationProvider = new DelegatingLinkRelationProvider( // new AnnotationLinkRelationProvider(), // new EvoInflectorLinkRelationProvider()); } @@ -666,20 +665,56 @@ public class RepositoryRestConfiguration { } /** - * The {@link RelProvider} to be used to calculate the link relation defaults for repositories. + * The {@link LinkRelationProvider} to be used to calculate the link relation defaults for repositories. + * + * @deprecated since 3.5, use {@link #getLinkRelationProvider()} instead. */ + @Deprecated public LinkRelationProvider getRelProvider() { - return this.relProvider; + return this.linkRelationProvider; } /** * The {@link RelProvider} to be used to calculate the link relation defaults for repositories. + * + * @deprecated since 3.5, use {@link #setLinkRelationProvider(LinkRelationProvider)} instead. */ + @Deprecated public void setRelProvider(LinkRelationProvider relProvider) { + setLinkRelationProvider(relProvider); + } - Assert.notNull(relProvider, "LinkRelationProvider must not be null!"); + /** + * Returns the {@link LinkRelationProvider} configured to calculate the link relation defaults for repositories. + * Defaults to a delegating wrapper around an {@link AnnotationLinkRelationProvider} and + * {@link EvoInflectorLinkRelationProvider}. + * + * @return + * @see #setLinkRelationProvider(LinkRelationProvider) + * @see AnnotationLinkRelationProvider + * @see EvoInflectorLinkRelationProvider + * @since 3.5 + */ + public LinkRelationProvider getLinkRelationProvider() { + return this.linkRelationProvider; + } - this.relProvider = relProvider; + /** + * Configures the {@link LinkRelationProvider} to be used to calculate the {@link LinkRelation} defaults for + * repositories. The provided instance will replace the default setup completely. For details on the defaults and + * setting up a similar, delegating arrangement, see {@link #getLinkRelationProvider()}. + * + * @param provider must not be {@literal null}. + * @return the current instance + * @since 3.5 + */ + public RepositoryRestConfiguration setLinkRelationProvider(LinkRelationProvider provider) { + + Assert.notNull(provider, "LinkRelationProvider must not be null!"); + + this.linkRelationProvider = provider; + + return this; } public ExposureConfiguration getExposureConfiguration() { diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/RepositoryResourceMappings.java b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/RepositoryResourceMappings.java index 72f95792b..b1ae454df 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/RepositoryResourceMappings.java +++ b/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/mapping/RepositoryResourceMappings.java @@ -73,7 +73,7 @@ public class RepositoryResourceMappings extends PersistentEntitiesResourceMappin PersistentEntity entity = repositories.getPersistentEntity(type); RepositoryDetectionStrategy strategy = configuration.getRepositoryDetectionStrategy(); - LinkRelationProvider provider = configuration.getRelProvider(); + LinkRelationProvider provider = configuration.getLinkRelationProvider(); CollectionResourceMapping mapping = new RepositoryCollectionResourceMapping(repositoryInformation, strategy, provider); diff --git a/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/RepositoryRestConfigurationUnitTests.java b/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/RepositoryRestConfigurationUnitTests.java index 9477b0a5c..34ff18a56 100755 --- a/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/RepositoryRestConfigurationUnitTests.java +++ b/spring-data-rest-core/src/test/java/org/springframework/data/rest/core/RepositoryRestConfigurationUnitTests.java @@ -119,12 +119,13 @@ public class RepositoryRestConfigurationUnitTests { @Test // DATAREST-1076 public void rejectsNullRelProvider() { - assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> configuration.setRelProvider(null)); + assertThatExceptionOfType(IllegalArgumentException.class) + .isThrownBy(() -> configuration.setLinkRelationProvider(null)); } @Test // #1974 public void considersAtRelationOnTypesByDefault() { - assertThat(configuration.getRelProvider().getItemResourceRelFor(Sample.class)) + assertThat(configuration.getLinkRelationProvider().getItemResourceRelFor(Sample.class)) .isEqualTo(LinkRelation.of("something")); }