diff --git a/spring-data-rest-core/pom.xml b/spring-data-rest-core/pom.xml index 9665c1ee7..2d64e2a6e 100644 --- a/spring-data-rest-core/pom.xml +++ b/spring-data-rest-core/pom.xml @@ -34,13 +34,6 @@ ${spring-hateoas} - - - - org.springframework - spring-webmvc - - org.springframework.data spring-data-commons 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 3514127a5..0c1b10fb1 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 @@ -33,7 +33,6 @@ import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider; import org.springframework.http.MediaType; import org.springframework.util.Assert; import org.springframework.util.StringUtils; -import org.springframework.web.servlet.config.annotation.CorsRegistration; /** * Spring Data REST configuration options. @@ -65,7 +64,6 @@ public class RepositoryRestConfiguration { private ResourceMappingConfiguration repoMappings = new ResourceMappingConfiguration(); private RepositoryDetectionStrategy repositoryDetectionStrategy = RepositoryDetectionStrategies.DEFAULT; private boolean exposeRepositoryMethodsByDefault = true; - private RepositoryCorsRegistry corsRegistry = new RepositoryCorsRegistry(); /** * The {@link RelProvider} to be used to calculate the link relation defaults for repositories. @@ -633,26 +631,6 @@ public class RepositoryRestConfiguration { setExposeRepositoryMethodsByDefault(false); } - /** - * Returns the {@link RepositoryCorsRegistry} to configure Cross-origin resource sharing. - * - * @return the {@link RepositoryCorsRegistry}. - * @since 2.6 - * @see RepositoryCorsRegistry - * @see CorsRegistration - * @deprecated since 3.4. Rather implement - * {@code RepositoryRestConfigurer.configureRepositoryRestConfiguration(RepositoryRestConfiguration, CorsRegistry)} - * instead to get access to the registry. - */ - @Deprecated - public RepositoryCorsRegistry getCorsRegistry() { - return corsRegistry; - } - - protected void setCorsRegistry(RepositoryCorsRegistry corsRegistry) { - this.corsRegistry = corsRegistry; - } - /** * Returns the {@link EntityLookupRegistrar} to create custom {@link EntityLookup} instances registered in the * configuration. diff --git a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/ProfileIntegrationTests.java b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/ProfileIntegrationTests.java index cc136194b..928b546ca 100755 --- a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/ProfileIntegrationTests.java +++ b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/ProfileIntegrationTests.java @@ -22,8 +22,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import org.junit.Before; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.data.rest.tests.AbstractControllerIntegrationTests; import org.springframework.data.rest.tests.TestMvcClient; import org.springframework.data.rest.webmvc.ProfileController; @@ -57,11 +57,11 @@ public class ProfileIntegrationTests extends AbstractControllerIntegrationTests private static final String ROOT_URI = "/api"; @Configuration - static class Config implements RepositoryRestConfigurer { + static class Config { - @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { - config.setBasePath(ROOT_URI); + @Bean + RepositoryRestConfigurer configurer() { + return RepositoryRestConfigurer.withConfig(config -> config.setBasePath(ROOT_URI)); } } diff --git a/spring-data-rest-tests/spring-data-rest-tests-mongodb/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java b/spring-data-rest-tests/spring-data-rest-tests-mongodb/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java index ec7aec71b..00a3204df 100755 --- a/spring-data-rest-tests/spring-data-rest-tests-mongodb/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java +++ b/spring-data-rest-tests/spring-data-rest-tests-mongodb/src/test/java/org/springframework/data/rest/webmvc/json/PersistentEntityToJsonSchemaConverterUnitTests.java @@ -28,6 +28,7 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.mapping.context.PersistentEntities; @@ -71,15 +72,18 @@ public class PersistentEntityToJsonSchemaConverterUnitTests { @Configuration @Import(RepositoryRestMvcConfiguration.class) - static class TestConfiguration implements RepositoryRestConfigurer { + static class TestConfiguration { - @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + @Bean + public RepositoryRestConfigurer customizations() { - config.getMetadataConfiguration().registerJsonSchemaFormat(JsonSchemaFormat.EMAIL, EmailAddress.class); - config.getMetadataConfiguration().registerFormattingPatternFor("[A-Z]+", TypeWithPattern.class); + return RepositoryRestConfigurer.withConfig(config -> { - config.exposeIdsFor(Profile.class); + config.getMetadataConfiguration().registerJsonSchemaFormat(JsonSchemaFormat.EMAIL, EmailAddress.class); + config.getMetadataConfiguration().registerFormattingPatternFor("[A-Z]+", TypeWithPattern.class); + + config.exposeIdsFor(Profile.class); + }); } } diff --git a/spring-data-rest-tests/spring-data-rest-tests-shop/src/test/java/org/springframework/data/rest/tests/shop/ShopConfiguration.java b/spring-data-rest-tests/spring-data-rest-tests-shop/src/test/java/org/springframework/data/rest/tests/shop/ShopConfiguration.java index c6303be3e..c731451bb 100644 --- a/spring-data-rest-tests/spring-data-rest-tests-shop/src/test/java/org/springframework/data/rest/tests/shop/ShopConfiguration.java +++ b/spring-data-rest-tests/spring-data-rest-tests-shop/src/test/java/org/springframework/data/rest/tests/shop/ShopConfiguration.java @@ -23,7 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.map.repository.config.EnableMapRepositories; -import org.springframework.data.rest.core.config.RepositoryRestConfiguration; +import org.springframework.data.rest.core.config.EntityLookupRegistrar; import org.springframework.data.rest.tests.shop.Customer.Gender; import org.springframework.data.rest.tests.shop.Product.ProductNameOnlyProjection; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; @@ -53,7 +53,7 @@ public class ShopConfiguration { */ @Override public EntityModel process(EntityModel resource) { - resource.add(new Link("foo", "bar")); + resource.add(Link.of("foo", "bar")); return resource; } }; @@ -70,7 +70,7 @@ public class ShopConfiguration { */ @Override public EntityModel process(EntityModel resource) { - resource.add(new Link("alpha", "beta")); + resource.add(Link.of("alpha", "beta")); return resource; } }; @@ -98,16 +98,17 @@ public class ShopConfiguration { @Configuration static class SpringDataRestConfiguration implements RepositoryRestConfigurer { - /* - * (non-Javadoc) - * @see org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter#configureRepositoryRestConfiguration(org.springframework.data.rest.core.config.RepositoryRestConfiguration) - */ - @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + @Bean + RepositoryRestConfigurer configurer() { - config.withEntityLookup().forRepository(ProductRepository.class, Product::getName, ProductRepository::findByName); - config.withEntityLookup().forValueRepository(LineItemTypeRepository.class, LineItemType::getName, - LineItemTypeRepository::findByName); + return RepositoryRestConfigurer.withConfig(config -> { + + EntityLookupRegistrar lookup = config.withEntityLookup(); + + lookup.forRepository(ProductRepository.class, Product::getName, ProductRepository::findByName); + lookup.forValueRepository(LineItemTypeRepository.class, LineItemType::getName, + LineItemTypeRepository::findByName); + }); } } } diff --git a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryCorsRegistry.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryCorsRegistry.java similarity index 78% rename from spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryCorsRegistry.java rename to spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryCorsRegistry.java index 1fcdeed78..e18b50c9e 100644 --- a/spring-data-rest-core/src/main/java/org/springframework/data/rest/core/config/RepositoryCorsRegistry.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryCorsRegistry.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.data.rest.core.config; +package org.springframework.data.rest.webmvc.config; import java.util.Map; @@ -26,12 +26,8 @@ import org.springframework.web.servlet.config.annotation.CorsRegistry; * * @author Mark Paluch * @since 2.6 - * @deprecated since 3.4. Rather implement - * {@code RepositoryRestConfigurer.configureRepositoryRestConfiguration(RepositoryRestConfiguration, CorsRegistry)} - * instead to get access to the registry. */ -@Deprecated -public class RepositoryCorsRegistry extends CorsRegistry { +class RepositoryCorsRegistry extends CorsRegistry { /* (non-Javadoc) * @see org.springframework.web.servlet.config.annotation.CorsRegistry#getCorsConfigurations() diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurer.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurer.java index 2afcb662f..f1878c0eb 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurer.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurer.java @@ -54,10 +54,10 @@ public interface RepositoryRestConfigurer { /* * (non-Javadoc) - * @see org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer#configureRepositoryRestConfiguration(org.springframework.data.rest.core.config.RepositoryRestConfiguration) + * @see org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer#configureRepositoryRestConfiguration(org.springframework.data.rest.core.config.RepositoryRestConfiguration, org.springframework.web.servlet.config.annotation.CorsRegistry) */ @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { + public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) { consumer.accept(config); } }; @@ -88,16 +88,6 @@ public interface RepositoryRestConfigurer { }; } - /** - * Override this method to add additional configuration. - * - * @param config Main configuration bean. - * @deprecated since 3.4, implement - * {@link #configureRepositoryRestConfiguration(RepositoryRestConfiguration, CorsRegistry)} instead. - */ - @Deprecated - default void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {} - /** * Override this method to add additional configuration. * diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurerDelegate.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurerDelegate.java index 9cbe470a1..b23355b7b 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurerDelegate.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestConfigurerDelegate.java @@ -50,18 +50,6 @@ public class RepositoryRestConfigurerDelegate implements RepositoryRestConfigure this.delegates = delegates; } - /* - * (non-Javadoc) - * @see org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer#configureRepositoryRestConfiguration(org.springframework.data.rest.core.config.RepositoryRestConfiguration) - */ - @Override - public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { - - for (RepositoryRestConfigurer configurer : delegates) { - configurer.configureRepositoryRestConfiguration(config); - } - } - /* * (non-Javadoc) * @see org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer#configureRepositoryRestConfiguration(org.springframework.data.rest.core.config.RepositoryRestConfiguration, org.springframework.web.servlet.config.annotation.CorsRegistry) @@ -69,8 +57,6 @@ public class RepositoryRestConfigurerDelegate implements RepositoryRestConfigure @Override public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) { - configureRepositoryRestConfiguration(config); - for (RepositoryRestConfigurer configurer : delegates) { configurer.configureRepositoryRestConfiguration(config, cors); } diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java index ae48d066f..e8a3f18fb 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/RepositoryRestMvcConfiguration.java @@ -56,7 +56,6 @@ import org.springframework.data.rest.core.UriToEntityConverter; import org.springframework.data.rest.core.config.MetadataConfiguration; import org.springframework.data.rest.core.config.Projection; import org.springframework.data.rest.core.config.ProjectionDefinitionConfiguration; -import org.springframework.data.rest.core.config.RepositoryCorsRegistry; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.data.rest.core.event.AnnotatedEventHandlerInvoker; import org.springframework.data.rest.core.event.ValidatingRepositoryEventListener; diff --git a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/WebMvcRepositoryRestConfiguration.java b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/WebMvcRepositoryRestConfiguration.java index 66be8c048..c0f3a1383 100644 --- a/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/WebMvcRepositoryRestConfiguration.java +++ b/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/config/WebMvcRepositoryRestConfiguration.java @@ -20,7 +20,6 @@ import java.util.Map; import org.springframework.data.rest.core.config.EnumTranslationConfiguration; import org.springframework.data.rest.core.config.MetadataConfiguration; import org.springframework.data.rest.core.config.ProjectionDefinitionConfiguration; -import org.springframework.data.rest.core.config.RepositoryCorsRegistry; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.util.Assert; import org.springframework.web.cors.CorsConfiguration; @@ -54,7 +53,6 @@ class WebMvcRepositoryRestConfiguration extends RepositoryRestConfiguration impl Assert.notNull(registry, "CorsRegistry must not be null!"); this.registry = registry; - setCorsRegistry(registry); } private final RepositoryCorsRegistry registry;