Commit 74317a22 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.2.x'

parents 00e207dc 1f923605
...@@ -26,6 +26,7 @@ import org.springframework.hateoas.Resource; ...@@ -26,6 +26,7 @@ import org.springframework.hateoas.Resource;
import org.springframework.hateoas.Resources; import org.springframework.hateoas.Resources;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PathVariable;
...@@ -47,7 +48,7 @@ public class CustomerController { ...@@ -47,7 +48,7 @@ public class CustomerController {
this.entityLinks = entityLinks; this.entityLinks = entityLinks;
} }
@RequestMapping(method = RequestMethod.GET) @RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
HttpEntity<Resources<Customer>> showCustomers() { HttpEntity<Resources<Customer>> showCustomers() {
Resources<Customer> resources = new Resources<Customer>( Resources<Customer> resources = new Resources<Customer>(
this.repository.findAll()); this.repository.findAll());
...@@ -55,7 +56,7 @@ public class CustomerController { ...@@ -55,7 +56,7 @@ public class CustomerController {
return new ResponseEntity<Resources<Customer>>(resources, HttpStatus.OK); return new ResponseEntity<Resources<Customer>>(resources, HttpStatus.OK);
} }
@RequestMapping(value = "/{id}", method = RequestMethod.GET) @RequestMapping(value = "/{id}", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
HttpEntity<Resource<Customer>> showCustomer(@PathVariable Long id) { HttpEntity<Resource<Customer>> showCustomer(@PathVariable Long id) {
Resource<Customer> resource = new Resource<Customer>(this.repository.findOne(id)); Resource<Customer> resource = new Resource<Customer>(this.repository.findOne(id));
resource.add(this.entityLinks.linkToSingleResource(Customer.class, id)); resource.add(this.entityLinks.linkToSingleResource(Customer.class, id));
......
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
package sample.hateoas; package sample.hateoas;
import java.net.URI;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
...@@ -23,9 +25,12 @@ import org.springframework.beans.factory.annotation.Value; ...@@ -23,9 +25,12 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.boot.test.SpringApplicationConfiguration;
import org.springframework.boot.test.TestRestTemplate; import org.springframework.boot.test.TestRestTemplate;
import org.springframework.boot.test.WebIntegrationTest; import org.springframework.boot.test.WebIntegrationTest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.containsString;
...@@ -36,7 +41,6 @@ import static org.junit.Assert.assertThat; ...@@ -36,7 +41,6 @@ import static org.junit.Assert.assertThat;
@RunWith(SpringJUnit4ClassRunner.class) @RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(SampleHateoasApplication.class) @SpringApplicationConfiguration(SampleHateoasApplication.class)
@WebIntegrationTest(randomPort = true) @WebIntegrationTest(randomPort = true)
@DirtiesContext
public class SampleHateoasApplicationTests { public class SampleHateoasApplicationTests {
@Value("${local.server.port}") @Value("${local.server.port}")
...@@ -52,4 +56,17 @@ public class SampleHateoasApplicationTests { ...@@ -52,4 +56,17 @@ public class SampleHateoasApplicationTests {
assertThat(entity.getBody(), containsString("_links\":{\"self\":{\"href\"")); assertThat(entity.getBody(), containsString("_links\":{\"self\":{\"href\""));
} }
@Test
public void producesJsonWhenXmlIsPreferred() throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.set(HttpHeaders.ACCEPT, "application/xml;q=0.9,application/json;q=0.8");
RequestEntity<?> request = new RequestEntity<Void>(headers, HttpMethod.GET,
URI.create("http://localhost:" + this.port + "/customers/1"));
ResponseEntity<String> response = new TestRestTemplate().exchange(request,
String.class);
assertThat(response.getStatusCode(), equalTo(HttpStatus.OK));
assertThat(response.getHeaders().getContentType(),
equalTo(MediaType.parseMediaType("application/json;charset=UTF-8")));
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment