diff --git a/pom.xml b/pom.xml
index af1d6c1ed..acbe6c228 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,6 +35,7 @@
4.0.0.BUILD-SNAPSHOT
2.1.0.BUILD-SNAPSHOT
2.1.0.BUILD-SNAPSHOT
+ 0.25.0.BUILD-SNAPSHOT
4.3.10.Final
1.1.0
diff --git a/spring-data-rest-hal-browser/src/test/java/org/springframework/data/rest/webmvc/halbrowser/HalBrowserIntegrationTests.java b/spring-data-rest-hal-browser/src/test/java/org/springframework/data/rest/webmvc/halbrowser/HalBrowserIntegrationTests.java
index 48b79eafd..9f3536c72 100755
--- a/spring-data-rest-hal-browser/src/test/java/org/springframework/data/rest/webmvc/halbrowser/HalBrowserIntegrationTests.java
+++ b/spring-data-rest-hal-browser/src/test/java/org/springframework/data/rest/webmvc/halbrowser/HalBrowserIntegrationTests.java
@@ -28,8 +28,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.ConversionService;
-import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
-import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter;
+import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
import org.springframework.hateoas.MediaTypes;
import org.springframework.http.HttpHeaders;
@@ -66,15 +65,8 @@ public TestConfiguration(ApplicationContext context, ObjectFactory config.setBasePath(BASE_PATH));
}
}
diff --git a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/alps/AlpsControllerIntegrationTests.java b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/alps/AlpsControllerIntegrationTests.java
index 13ce55836..4f8dd6c0a 100755
--- a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/alps/AlpsControllerIntegrationTests.java
+++ b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/alps/AlpsControllerIntegrationTests.java
@@ -69,7 +69,7 @@ static class Config {
@Bean
public LinkDiscoverer alpsLinkDiscoverer() {
- return new JsonPathLinkDiscoverer("$.descriptors[?(@.name == '%s')].href",
+ return new JsonPathLinkDiscoverer("$.descriptor[?(@.name == '%s')].href",
MediaType.valueOf("application/alps+json"));
}
@@ -101,7 +101,7 @@ public void exposesAlpsCollectionResources() throws Exception {
client.follow(peopleLink, RestMediaTypes.ALPS_JSON)//
.andExpect(jsonPath("$.alps.version").value("1.0"))//
- .andExpect(jsonPath("$.alps.descriptors[*].name", hasItems("people", "person")));
+ .andExpect(jsonPath("$.alps.descriptor[*].name", hasItems("people", "person")));
}
@Test // DATAREST-638
@@ -112,7 +112,7 @@ public void verifyThatAlpsIsDefaultProfileFormat() throws Exception {
client.follow(peopleLink)//
.andExpect(jsonPath("$.alps.version").value("1.0"))//
- .andExpect(jsonPath("$.alps.descriptors[*].name", hasItems("people", "person")));
+ .andExpect(jsonPath("$.alps.descriptor[*].name", hasItems("people", "person")));
}
@@ -124,11 +124,11 @@ public void verifyThatAttributesIgnoredDontAppearInAlps() throws Exception {
client.follow(itemsLink, RestMediaTypes.ALPS_JSON)//
// Exposes standard property
- .andExpect(jsonPath("$.alps.descriptors[*].descriptors[*].name", hasItems("name")))
+ .andExpect(jsonPath("$.alps.descriptor[*].descriptor[*].name", hasItems("name")))
// Does not expose explicitly @JsonIgnored property
- .andExpect(jsonPath("$.alps.descriptors[*].descriptors[*].name", not(hasItems("owner"))))
+ .andExpect(jsonPath("$.alps.descriptor[*].descriptor[*].name", not(hasItems("owner"))))
// Does not expose properties pointing to non exposed types
- .andExpect(jsonPath("$.alps.descriptors[*].descriptors[*].name", not(hasItems("manager", "curator"))));
+ .andExpect(jsonPath("$.alps.descriptor[*].descriptor[*].name", not(hasItems("manager", "curator"))));
}
@Test // DATAREST-494
@@ -140,7 +140,7 @@ public void linksToJsonSchemaFromRepresentationDescriptor() throws Exception {
assertThat(itemsLink).isNotNull();
String result = client.follow(itemsLink, RestMediaTypes.ALPS_JSON).andReturn().getResponse().getContentAsString();
- String href = JsonPath. read(result, "$.alps.descriptors[?(@.id == 'item-representation')].href").get(0)
+ String href = JsonPath. read(result, "$.alps.descriptor[?(@.id == 'item-representation')].href").get(0)
.toString();
assertThat(href, endsWith("/profile/items"));
@@ -153,8 +153,8 @@ public void referenceToAssociatedEntityDesciptorPointsToRepresentationDescriptor
Link usersLink = client.discoverUnique(profileLink, "people", MediaType.ALL);
String jsonPath = "$.alps."; // Root
- jsonPath += "descriptors[?(@.id == 'person-representation')]."; // Representation descriptor
- jsonPath += "descriptors[?(@.name == 'father')]."; // First father descriptor
+ jsonPath += "descriptor[?(@.id == 'person-representation')]."; // Representation descriptor
+ jsonPath += "descriptor[?(@.name == 'father')]."; // First father descriptor
jsonPath += "rt"; // Return type
String result = client.follow(usersLink, RestMediaTypes.ALPS_JSON).andReturn().getResponse().getContentAsString();
@@ -171,7 +171,7 @@ public void onlyExposesIdAttributesWhenExposedInTheConfiguration() throws Except
client.follow(itemsLink, RestMediaTypes.ALPS_JSON)//
// Exposes identifier if configured to
- .andExpect(jsonPath("$.alps.descriptors[*].descriptors[*].name", hasItems("id", "name")));
+ .andExpect(jsonPath("$.alps.descriptor[*].descriptor[*].name", hasItems("id", "name")));
}
@Test // DATAREST-683
@@ -186,7 +186,7 @@ public void enumValueListingsAreTranslatedIfEnabled() throws Exception {
String value = JsonPath
. read(result,
- "$.alps.descriptors[?(@.id == 'person-representation')].descriptors[?(@.name == 'gender')].doc.value")
+ "$.alps.descriptor[?(@.id == 'person-representation')].descriptor[?(@.name == 'gender')].doc.value")
.get(0).toString();
assertThat(value).isEqualTo("Male, Female, Undefined");
@@ -202,7 +202,7 @@ public void alpsCanHandleGroovyDomainObjects() throws Exception {
String name = JsonPath
. read(result,
- "$.alps.descriptors[?(@.id == 'simulatedGroovyDomainClass-representation')].descriptors[0].name")
+ "$.alps.descriptor[?(@.id == 'simulatedGroovyDomainClass-representation')].descriptor[0].name")
.get(0).toString();
assertThat(name).isEqualTo("name");
diff --git a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/DataRest262Tests.java b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/DataRest262Tests.java
index 32bdf4cc8..f58ee3cc2 100755
--- a/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/DataRest262Tests.java
+++ b/spring-data-rest-tests/spring-data-rest-tests-jpa/src/test/java/org/springframework/data/rest/webmvc/jpa/DataRest262Tests.java
@@ -26,11 +26,9 @@
import javax.validation.constraints.NotNull;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@@ -41,9 +39,16 @@
import org.springframework.data.rest.webmvc.PersistentEntityResource;
import org.springframework.data.rest.webmvc.config.RepositoryRestMvcConfiguration;
import org.springframework.hateoas.Link;
+import org.springframework.hateoas.MediaTypes;
import org.springframework.hateoas.Resource;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter;
+import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.PropertyAccessor;
@@ -69,11 +74,18 @@ static class Config {
@Autowired ApplicationContext beanFactory;
@Autowired JpaMetamodelMappingContext mappingContext;
@Autowired AirportRepository repository;
- @Autowired @Qualifier("halObjectMapper") ObjectMapper mapper;
+
+ ObjectMapper mapper;
@Before
public void setUp() {
- mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
+
+ this.mapper = beanFactory //
+ .getBean("halJacksonHttpMessageConverter", AbstractJackson2HttpMessageConverter.class) //
+ .getObjectMapper() //
+ .copy();
+
+ this.mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
}
@Test // DATAREST-262
@@ -87,9 +99,13 @@ public void deserializesNestedAssociation() throws Exception {
}
@Test // DATAREST-262
- @Ignore
public void serializesLinksToNestedAssociations() throws Exception {
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ request.addHeader(HttpHeaders.ACCEPT, MediaTypes.HAL_JSON_VALUE);
+ RequestAttributes attributes = new ServletRequestAttributes(request);
+ RequestContextHolder.setRequestAttributes(attributes);
+
Airport first = new Airport();
first.id = 1L;
@@ -112,9 +128,9 @@ public void serializesLinksToNestedAssociations() throws Exception {
String result = mapper.writeValueAsString(resource);
- assertThat(JsonPath.