DATAREST-1542 - Remove dependency to Spring WebMVC from core module.
Finally remove the dependency to Spring WebMVC from Spring Data REST's core module. Removed previously deprecated methods and update test configuration applying customizations. Related tickets: DATAREST-1543.
This commit is contained in:
@@ -34,13 +34,6 @@
|
||||
<version>${spring-hateoas}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Temporary as we should actually avoid that -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-commons</artifactId>
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<LineItem> process(EntityModel<LineItem> 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<ProductNameOnlyProjection> process(EntityModel<Product.ProductNameOnlyProjection> 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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user