DATAREST-1341 - Upgrade to latest API changes in Spring HATEOAS.

This commit is contained in:
Oliver Drotbohm
2019-03-04 11:42:58 +01:00
parent 47a759e3c3
commit d714d10675
14 changed files with 61 additions and 61 deletions

View File

@@ -32,8 +32,8 @@ 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.MediaTypes;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.http.MediaType;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -73,7 +73,7 @@ public class RepositoryRestConfiguration {
/**
* The {@link RelProvider} to be used to calculate the link relation defaults for repositories.
*/
private @Getter @Setter @NonNull RelProvider relProvider = new EvoInflectorRelProvider();
private @Getter @Setter @NonNull LinkRelationProvider relProvider = new EvoInflectorLinkRelationProvider();
private final RepositoryCorsRegistry corsRegistry = new RepositoryCorsRegistry();
private final ProjectionDefinitionConfiguration projectionConfiguration;
@@ -579,7 +579,7 @@ public class RepositoryRestConfiguration {
/**
* Returns whether to expose repository methods by default.
*
*
* @since 3.1
* @see #setExposeRepositoryMethodsByDefault(boolean)
*/
@@ -592,7 +592,7 @@ public class RepositoryRestConfiguration {
* {@link RestResource} explicitly to expose the default set of resources (opt-in). If this is set to {@literal true}
* (default), repository methods methods are exposed unless explictly annotated with {@link RestResource} and
* {@link RestResource#exported()} set to {@literal false}.
*
*
* @since 3.1
* @see #setRepositoryDetectionStrategy(RepositoryDetectionStrategy)
*/
@@ -607,7 +607,7 @@ public class RepositoryRestConfiguration {
* {@link #setRepositoryDetectionStrategy(RepositoryDetectionStrategy)} to
* {@link RepositoryDetectionStrategies#ANNOTATED} and setting {@link #setExposeRepositoryMethodsByDefault(boolean)}
* to {@literal false}.
*
*
* @since 3.1
* @see #setRepositoryDetectionStrategy(RepositoryDetectionStrategy)
* @see #setExposeRepositoryMethodsByDefault(boolean)

View File

@@ -16,7 +16,7 @@
package org.springframework.data.rest.core.mapping;
import org.atteo.evo.inflector.English;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
/**
* {@link TypeBasedCollectionResourceMapping} extension to use Evo Inflector to pluralize the simple class name by as
@@ -32,7 +32,7 @@ class EvoInflectorTypeBasedCollectionResourceMapping extends TypeBasedCollection
* @param type must not be {@literal null}.
* @param relProvider must not be {@literal null}.
*/
public EvoInflectorTypeBasedCollectionResourceMapping(Class<?> type, RelProvider relProvider) {
public EvoInflectorTypeBasedCollectionResourceMapping(Class<?> type, LinkRelationProvider relProvider) {
super(type, relProvider);
}

View File

@@ -23,8 +23,8 @@ import org.springframework.data.rest.core.Path;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
@@ -48,7 +48,7 @@ class RepositoryCollectionResourceMapping implements CollectionResourceMapping {
private final RepositoryMetadata metadata;
public RepositoryCollectionResourceMapping(RepositoryMetadata metadata, RepositoryDetectionStrategy strategy) {
this(metadata, strategy, new EvoInflectorRelProvider());
this(metadata, strategy, new EvoInflectorLinkRelationProvider());
}
/**
@@ -60,10 +60,10 @@ class RepositoryCollectionResourceMapping implements CollectionResourceMapping {
* @param repositoryType must not be {@literal null}.
*/
RepositoryCollectionResourceMapping(RepositoryMetadata metadata, RepositoryDetectionStrategy strategy,
RelProvider relProvider) {
LinkRelationProvider relProvider) {
Assert.notNull(metadata, "Repository metadata must not be null!");
Assert.notNull(relProvider, "RelProvider must not be null!");
Assert.notNull(relProvider, "LinkRelationProvider must not be null!");
Assert.notNull(strategy, "RepositoryDetectionStrategy must not be null!");
Class<?> repositoryType = metadata.getRepositoryInterface();

View File

@@ -28,7 +28,7 @@ import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.support.Repositories;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.util.Assert;
/**
@@ -74,7 +74,7 @@ public class RepositoryResourceMappings extends PersistentEntitiesResourceMappin
PersistentEntity<?, ?> entity = repositories.getPersistentEntity(type);
RepositoryDetectionStrategy strategy = configuration.getRepositoryDetectionStrategy();
RelProvider provider = configuration.getRelProvider();
LinkRelationProvider provider = configuration.getRelProvider();
CollectionResourceMapping mapping = new RepositoryCollectionResourceMapping(repositoryInformation, strategy,
provider);

View File

@@ -22,8 +22,8 @@ import org.springframework.data.rest.core.Path;
import org.springframework.data.rest.core.annotation.Description;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -36,7 +36,7 @@ import org.springframework.util.StringUtils;
class TypeBasedCollectionResourceMapping implements CollectionResourceMapping {
private final Class<?> type;
private final RelProvider relProvider;
private final LinkRelationProvider relProvider;
private final RestResource annotation;
private final Description description;
@@ -46,7 +46,7 @@ class TypeBasedCollectionResourceMapping implements CollectionResourceMapping {
* @param type must not be {@literal null}.
*/
public TypeBasedCollectionResourceMapping(Class<?> type) {
this(type, new EvoInflectorRelProvider());
this(type, new EvoInflectorLinkRelationProvider());
}
/**
@@ -55,10 +55,10 @@ class TypeBasedCollectionResourceMapping implements CollectionResourceMapping {
* @param type must not be {@literal null}.
* @param relProvider must not be {@literal null}.
*/
public TypeBasedCollectionResourceMapping(Class<?> type, RelProvider relProvider) {
public TypeBasedCollectionResourceMapping(Class<?> type, LinkRelationProvider relProvider) {
Assert.notNull(type, "Type must not be null!");
Assert.notNull(relProvider, "RelProvider must not be null!");
Assert.notNull(relProvider, "LinkRelationProvider must not be null!");
this.type = type;
this.relProvider = relProvider;

View File

@@ -20,7 +20,7 @@ import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.data.rest.core.mapping.ResourceMappings;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.util.Assert;
/**
@@ -29,7 +29,7 @@ import org.springframework.util.Assert;
* @author Oliver Gierke
*/
@Order(Ordered.LOWEST_PRECEDENCE + 10)
public class RepositoryRelProvider implements RelProvider {
public class RepositoryRelProvider implements LinkRelationProvider {
private final ObjectFactory<ResourceMappings> mappings;
@@ -46,7 +46,7 @@ public class RepositoryRelProvider implements RelProvider {
/*
* (non-Javadoc)
* @see org.springframework.hateoas.server.RelProvider#getCollectionResourceRelFor(java.lang.Class)
* @see org.springframework.hateoas.server.LinkRelationProvider#getCollectionResourceRelFor(java.lang.Class)
*/
@Override
public LinkRelation getCollectionResourceRelFor(Class<?> type) {
@@ -55,7 +55,7 @@ public class RepositoryRelProvider implements RelProvider {
/*
* (non-Javadoc)
* @see org.springframework.hateoas.server.RelProvider#getItemResourceRelFor(java.lang.Class)
* @see org.springframework.hateoas.server.LinkRelationProvider#getItemResourceRelFor(java.lang.Class)
*/
@Override
public LinkRelation getItemResourceRelFor(Class<?> type) {

View File

@@ -16,13 +16,13 @@
package org.springframework.data.rest.core.support;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.util.StringUtils;
/**
* @author Oliver Gierke
*/
public class SimpleRelProvider implements RelProvider {
public class SimpleRelProvider implements LinkRelationProvider {
/*
* (non-Javadoc)
@@ -35,7 +35,7 @@ public class SimpleRelProvider implements RelProvider {
/*
* (non-Javadoc)
* @see org.springframework.hateoas.server.RelProvider#getItemResourceRelFor(java.lang.Class)
* @see org.springframework.hateoas.server.LinkRelationProvider#getItemResourceRelFor(java.lang.Class)
*/
@Override
public LinkRelation getItemResourceRelFor(Class<?> type) {
@@ -46,7 +46,7 @@ public class SimpleRelProvider implements RelProvider {
/*
* (non-Javadoc)
* @see org.springframework.hateoas.server.RelProvider#getCollectionResourceRelFor(java.lang.Class)
* @see org.springframework.hateoas.server.LinkRelationProvider#getCollectionResourceRelFor(java.lang.Class)
*/
@Override
public LinkRelation getCollectionResourceRelFor(Class<?> type) {

View File

@@ -27,8 +27,8 @@ import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RestResource;
import org.springframework.data.rest.core.domain.Person;
import org.springframework.data.rest.core.mapping.ResourceMapping;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
/**
* Ensure the {@link ResourceMapping} components convey the correct information.
@@ -38,7 +38,7 @@ import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
@SuppressWarnings("deprecation")
public class ResourceMappingUnitTests {
RelProvider relProvider = new EvoInflectorRelProvider();
LinkRelationProvider relProvider = new EvoInflectorLinkRelationProvider();
@Test
public void shouldDetectPathAndRemoveLeadingSlashIfAny() {

View File

@@ -49,11 +49,11 @@ import org.springframework.data.rest.webmvc.support.PagingAndSortingTemplateVari
import org.springframework.data.rest.webmvc.support.RepositoryEntityLinks;
import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.format.support.FormattingConversionService;
import org.springframework.hateoas.server.EntityLinks;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
import org.springframework.hateoas.server.EntityLinks;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.hateoas.server.mvc.RepresentationModelProcessorInvoker;
import org.springframework.plugin.core.PluginRegistry;
@@ -128,7 +128,7 @@ public class RepositoryTestsConfig {
@Bean
public ObjectMapper objectMapper() {
RelProvider relProvider = new EvoInflectorRelProvider();
LinkRelationProvider relProvider = new EvoInflectorLinkRelationProvider();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());

View File

@@ -41,7 +41,7 @@ import org.springframework.hateoas.IanaLinkRelations;
import org.springframework.hateoas.Link;
import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.Links;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.http.MediaType;
import org.springframework.mock.web.MockHttpServletResponse;
import org.springframework.test.context.ContextConfiguration;
@@ -71,7 +71,7 @@ public class JpaWebTests extends CommonWebTests {
@Autowired TestDataPopulator loader;
@Autowired ResourceMappings mappings;
@Autowired RelProvider relProvider;
@Autowired LinkRelationProvider relProvider;
ObjectMapper mapper = new ObjectMapper();

View File

@@ -50,11 +50,11 @@ import org.springframework.data.rest.webmvc.support.PagingAndSortingTemplateVari
import org.springframework.data.rest.webmvc.support.RepositoryEntityLinks;
import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.format.support.FormattingConversionService;
import org.springframework.hateoas.server.EntityLinks;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
import org.springframework.hateoas.server.EntityLinks;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.hateoas.server.mvc.RepresentationModelProcessorInvoker;
import org.springframework.plugin.core.PluginRegistry;
@@ -136,7 +136,7 @@ public class RepositoryTestsConfig {
@Bean
public ObjectMapper objectMapper() {
RelProvider relProvider = new EvoInflectorRelProvider();
LinkRelationProvider relProvider = new EvoInflectorLinkRelationProvider();
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());

View File

@@ -97,16 +97,16 @@ import org.springframework.data.web.config.HateoasAwareSpringDataWebConfiguratio
import org.springframework.data.web.config.SpringDataJacksonConfiguration;
import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.hateoas.MediaTypes;
import org.springframework.hateoas.server.RelProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.RepresentationModel;
import org.springframework.hateoas.config.EnableHypermediaSupport;
import org.springframework.hateoas.config.EnableHypermediaSupport.HypermediaType;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.mediatype.hal.CurieProvider;
import org.springframework.hateoas.mediatype.hal.HalConfiguration;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalHandlerInstantiator;
import org.springframework.hateoas.server.LinkRelationProvider;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import org.springframework.hateoas.server.mvc.RepresentationModelProcessorInvoker;
import org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter;
import org.springframework.http.MediaType;
@@ -160,7 +160,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
@Autowired(required = false) List<RepositoryRestConfigurer> configurers = Collections.emptyList();
@Autowired(required = false) List<EntityLookup<?>> lookups = Collections.emptyList();
@Autowired Optional<RelProvider> relProvider;
@Autowired Optional<LinkRelationProvider> relProvider;
@Autowired Optional<CurieProvider> curieProvider;
@Autowired Optional<HalConfiguration> halConfiguration;
@Autowired ObjectProvider<ObjectMapper> objectMapper;
@@ -499,7 +499,7 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
public ObjectMapper halObjectMapper() {
RelProvider defaultedRelProvider = this.relProvider.orElseGet(EvoInflectorRelProvider::new);
LinkRelationProvider defaultedRelProvider = this.relProvider.orElseGet(EvoInflectorLinkRelationProvider::new);
HalConfiguration halConfiguration = this.halConfiguration.orElseGet(HalConfiguration::new);
HalHandlerInstantiator instantiator = new HalHandlerInstantiator(defaultedRelProvider, curieProvider.orElse(null),
@@ -527,8 +527,8 @@ public class RepositoryRestMvcConfiguration extends HateoasAwareSpringDataWebCon
@SuppressWarnings("rawtypes")
public RepresentationModelProcessorInvoker resourceProcessorInvoker() {
Collection<RepresentationModelProcessor> beans = applicationContext.getBeansOfType(RepresentationModelProcessor.class, false, false)
.values();
Collection<RepresentationModelProcessor> beans = applicationContext
.getBeansOfType(RepresentationModelProcessor.class, false, false).values();
List<RepresentationModelProcessor<?>> processors = new ArrayList<RepresentationModelProcessor<?>>(beans.size());
for (RepresentationModelProcessor<?> bean : beans) {

View File

@@ -49,9 +49,9 @@ import org.springframework.data.rest.webmvc.json.PersistentEntityJackson2Module;
import org.springframework.data.web.HateoasPageableHandlerMethodArgumentResolver;
import org.springframework.data.web.PageableHandlerMethodArgumentResolver;
import org.springframework.format.datetime.DateFormatter;
import org.springframework.hateoas.client.LinkDiscoverers;
import org.springframework.hateoas.MediaTypes;
import org.springframework.hateoas.server.core.DefaultRelProvider;
import org.springframework.hateoas.client.LinkDiscoverers;
import org.springframework.hateoas.server.core.DefaultLinkRelationProvider;
import org.springframework.hateoas.server.mvc.TypeConstrainedMappingJackson2HttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;
@@ -218,8 +218,8 @@ public class RepositoryRestMvConfigurationIntegrationTests {
static class ExtendingConfiguration {
@Bean
DefaultRelProvider relProvider() {
return new DefaultRelProvider();
DefaultLinkRelationProvider relProvider() {
return new DefaultLinkRelationProvider();
}
@Bean

View File

@@ -24,16 +24,16 @@ import org.junit.Test;
import org.springframework.data.projection.ProjectionFactory;
import org.springframework.data.projection.SpelAwareProxyProjectionFactory;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.server.core.EvoInflectorRelProvider;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule;
import org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalHandlerInstantiator;
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.JsonPath;
/**
* Integration tests for Jackson marshalling of projected objects.
* Integration tests for Jackson marshaling of projected objects.
*
* @author Oliver Gierke
*/
@@ -47,7 +47,7 @@ public class ProjectionJacksonIntegrationTests {
this.mapper = new ObjectMapper();
this.mapper.registerModule(new Jackson2HalModule());
this.mapper.setHandlerInstantiator(new HalHandlerInstantiator(new EvoInflectorRelProvider(), null, null));
this.mapper.setHandlerInstantiator(new HalHandlerInstantiator(new EvoInflectorLinkRelationProvider(), null, null));
}
@Test // DATAREST-221
@@ -61,7 +61,7 @@ public class ProjectionJacksonIntegrationTests {
CustomerProjection projection = factory.createProjection(CustomerProjection.class, customer);
String result = mapper.writeValueAsString(projection);
assertThat(JsonPath.<String> read(result, "$.firstname")).isEqualTo((Object) "Dave");
assertThat(JsonPath.<String> read(result, "$.firstname")).isEqualTo("Dave");
}
@Test // DATAREST-221
@@ -70,7 +70,7 @@ public class ProjectionJacksonIntegrationTests {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jackson2HalModule());
mapper.setHandlerInstantiator(
new Jackson2HalModule.HalHandlerInstantiator(new EvoInflectorRelProvider(), null, null));
new Jackson2HalModule.HalHandlerInstantiator(new EvoInflectorLinkRelationProvider(), null, null));
Customer customer = new Customer();
customer.firstname = "Dave";
@@ -82,7 +82,7 @@ public class ProjectionJacksonIntegrationTests {
String result = mapper.writeValueAsString(resources);
assertThat(JsonPath.<String> read(result, "$._embedded.customers[0].firstname")).isEqualTo((Object) "Dave");
assertThat(JsonPath.<String> read(result, "$._embedded.customers[0].firstname")).isEqualTo("Dave");
}
static class Customer {