hateoas - minor changes for self and method link creation
This commit is contained in:
parent
398b0e30f6
commit
4f410a7e11
|
@ -1,4 +1,5 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.baeldung</groupId>
|
||||
<artifactId>spring-security-rest</artifactId>
|
||||
|
@ -76,14 +77,13 @@
|
|||
<artifactId>spring-webmvc</artifactId>
|
||||
<version>${org.springframework.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- Spring HATEOAS -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.hateoas</groupId>
|
||||
<artifactId>spring-hateoas</artifactId>
|
||||
<version>0.19.0.RELEASE</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.hateoas</groupId>
|
||||
<artifactId>spring-hateoas</artifactId>
|
||||
<version>0.19.0.RELEASE</version>
|
||||
</dependency>
|
||||
|
||||
<!-- web -->
|
||||
|
||||
|
@ -100,13 +100,13 @@
|
|||
<version>${jstl.version}</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>${javax.validation.version}</version>
|
||||
</dependency>
|
||||
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>${javax.validation.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<!-- marshalling -->
|
||||
|
||||
|
@ -160,14 +160,14 @@
|
|||
<version>${org.springframework.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<version>${org.springframework.security.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<groupId>org.springframework.security</groupId>
|
||||
<artifactId>spring-security-test</artifactId>
|
||||
<version>${org.springframework.security.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.jayway.restassured</groupId>
|
||||
<artifactId>rest-assured</artifactId>
|
||||
|
@ -180,7 +180,7 @@
|
|||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
|
@ -269,7 +269,6 @@
|
|||
<artifactId>cargo-maven2-plugin</artifactId>
|
||||
<version>${cargo-maven2-plugin.version}</version>
|
||||
<configuration>
|
||||
<wait>true</wait>
|
||||
<container>
|
||||
<containerId>jetty8x</containerId>
|
||||
<type>embedded</type>
|
||||
|
@ -309,7 +308,7 @@
|
|||
<jstl.version>1.2</jstl.version>
|
||||
<jackson.version>2.2.2</jackson.version>
|
||||
<springfox.version>2.2.2</springfox.version>
|
||||
|
||||
|
||||
<!-- util -->
|
||||
<guava.version>19.0</guava.version>
|
||||
<commons-lang3.version>3.4</commons-lang3.version>
|
||||
|
|
|
@ -43,7 +43,6 @@ public class SecurityJavaConfig extends WebSecurityConfigurerAdapter {
|
|||
.and()
|
||||
.authorizeRequests()
|
||||
.antMatchers("/api/csrfAttacker*").permitAll()
|
||||
.antMatchers("/api/customers**").permitAll()
|
||||
.antMatchers("/api/customer/**").permitAll()
|
||||
.antMatchers("/api/**").authenticated()
|
||||
.and()
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
package org.baeldung.web.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.baeldung.persistence.model.Customer;
|
||||
import org.baeldung.persistence.model.Order;
|
||||
import org.baeldung.web.service.CustomerService;
|
||||
import org.baeldung.web.service.OrderService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.hateoas.Link;
|
||||
import org.springframework.hateoas.mvc.ControllerLinkBuilder;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/customer")
|
||||
public class CustomerController {
|
||||
@Autowired
|
||||
private CustomerService customerService;
|
||||
|
@ -22,34 +25,36 @@ public class CustomerController {
|
|||
@Autowired
|
||||
private OrderService orderService;
|
||||
|
||||
@RequestMapping(value = "/customer/{customerId}", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/{customerId}", method = RequestMethod.GET)
|
||||
public Customer getCustomerById(@PathVariable final String customerId) {
|
||||
return customerService.getCustomerDetail(customerId);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/customer/{customerId}/{orderId}", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/{customerId}/{orderId}", method = RequestMethod.GET)
|
||||
public Order getOrderById(@PathVariable final String customerId, @PathVariable final String orderId) {
|
||||
return orderService.getOrderByIdForCustomer(customerId, orderId);
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/customer/{customerId}/orders", method = RequestMethod.GET)
|
||||
@RequestMapping(value = "/{customerId}/orders", method = RequestMethod.GET)
|
||||
public List<Order> getOrdersForCustomer(@PathVariable final String customerId) {
|
||||
final List<Order> orders = orderService.getAllOrdersForCustomer(customerId);
|
||||
for (final Order order : orders) {
|
||||
final Link selfLink = ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(CustomerController.class).getOrderById(customerId, order.getOrderId())).withSelfRel();
|
||||
final Link selfLink = linkTo(methodOn(CustomerController.class).getOrderById(customerId, order.getOrderId())).withSelfRel();
|
||||
order.add(selfLink);
|
||||
}
|
||||
return orders;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/customers", method = RequestMethod.GET)
|
||||
@RequestMapping(method = RequestMethod.GET)
|
||||
public List<Customer> getAllCustomers() {
|
||||
final List<Customer> allCustomers = customerService.allCustomers();
|
||||
for (final Customer customer : allCustomers) {
|
||||
final Link selfLink = ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(CustomerController.class).getCustomerById(customer.getCustomerId())).withSelfRel();
|
||||
String customerId = customer.getCustomerId();
|
||||
Link selfLink = linkTo(CustomerController.class).slash(customerId).withSelfRel();
|
||||
customer.add(selfLink);
|
||||
if (orderService.getAllOrdersForCustomer(customer.getCustomerId()).size() > 0) {
|
||||
final Link ordersLink = ControllerLinkBuilder.linkTo(ControllerLinkBuilder.methodOn(CustomerController.class).getOrdersForCustomer(customer.getCustomerId())).withRel("allOrders");
|
||||
if (orderService.getAllOrdersForCustomer(customerId).size() > 0) {
|
||||
List<Order> methodLinkBuilder = methodOn(CustomerController.class).getOrdersForCustomer(customerId);
|
||||
final Link ordersLink = linkTo(methodLinkBuilder).withRel("allOrders");
|
||||
customer.add(ordersLink);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue