#1974 - Improve default LinkRelationProvider setup to also consider @Relation.
RepositoryRestConfiguration now defaults the LinkRelationProvider instance to a delegating one considering both AnnotationLinkRelationProvider and EvoLinkRelationProvider so that @Relation annotations on entity types.
This commit is contained in:
@@ -29,6 +29,8 @@ import org.springframework.data.rest.core.mapping.RepositoryDetectionStrategy.Re
|
|||||||
import org.springframework.data.rest.core.support.EntityLookup;
|
import org.springframework.data.rest.core.support.EntityLookup;
|
||||||
import org.springframework.hateoas.MediaTypes;
|
import org.springframework.hateoas.MediaTypes;
|
||||||
import org.springframework.hateoas.server.LinkRelationProvider;
|
import org.springframework.hateoas.server.LinkRelationProvider;
|
||||||
|
import org.springframework.hateoas.server.core.AnnotationLinkRelationProvider;
|
||||||
|
import org.springframework.hateoas.server.core.DelegatingLinkRelationProvider;
|
||||||
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
|
import org.springframework.hateoas.server.core.EvoInflectorLinkRelationProvider;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
@@ -96,6 +98,10 @@ public class RepositoryRestConfiguration {
|
|||||||
this.enumTranslationConfiguration = enumTranslationConfiguration;
|
this.enumTranslationConfiguration = enumTranslationConfiguration;
|
||||||
this.entityLookupConfiguration = new EntityLookupConfiguration();
|
this.entityLookupConfiguration = new EntityLookupConfiguration();
|
||||||
this.exposureConfiguration = new ExposureConfiguration();
|
this.exposureConfiguration = new ExposureConfiguration();
|
||||||
|
|
||||||
|
this.relProvider = new DelegatingLinkRelationProvider( //
|
||||||
|
new AnnotationLinkRelationProvider(), //
|
||||||
|
new EvoInflectorLinkRelationProvider());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import org.springframework.data.rest.core.config.ProjectionDefinitionConfigurati
|
|||||||
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
|
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
|
||||||
import org.springframework.data.rest.core.domain.Profile;
|
import org.springframework.data.rest.core.domain.Profile;
|
||||||
import org.springframework.data.rest.core.domain.ProfileRepository;
|
import org.springframework.data.rest.core.domain.ProfileRepository;
|
||||||
|
import org.springframework.hateoas.LinkRelation;
|
||||||
|
import org.springframework.hateoas.server.core.Relation;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -119,4 +121,15 @@ public class RepositoryRestConfigurationUnitTests {
|
|||||||
public void rejectsNullRelProvider() {
|
public void rejectsNullRelProvider() {
|
||||||
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> configuration.setRelProvider(null));
|
assertThatExceptionOfType(IllegalArgumentException.class).isThrownBy(() -> configuration.setRelProvider(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test // #1974
|
||||||
|
public void considersAtRelationOnTypesByDefault() {
|
||||||
|
assertThat(configuration.getRelProvider().getItemResourceRelFor(Sample.class))
|
||||||
|
.isEqualTo(LinkRelation.of("something"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Relation("something")
|
||||||
|
static class Sample {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user