package org.multibit.mbm.api.response.hal.customer;
import com.google.common.base.Optional;
import com.theoryinpractise.halbuilder.spi.Resource;
import org.multibit.mbm.api.response.hal.BaseBridge;
import org.multibit.mbm.core.model.Customer;
import org.multibit.mbm.core.model.User;
import org.multibit.mbm.resources.ResourceAsserts;
import javax.ws.rs.core.UriInfo;
/**
* <p>Bridge to provide the following to {@link org.multibit.mbm.core.model.Customer}:</p>
* <ul>
* <li>Creates {@link com.theoryinpractise.halbuilder.spi.Resource} representations</li>
* </ul>
*
* @since 0.0.1
*/
public class CustomerBridge extends BaseBridge<Customer> {
/**
* @param uriInfo The {@link javax.ws.rs.core.UriInfo} containing the originating request information
* @param principal An optional {@link org.multibit.mbm.core.model.User} to provide a security principal
*/
public CustomerBridge(UriInfo uriInfo, Optional<User> principal) {
super(uriInfo, principal);
}
public Resource toResource(Customer customer) {
ResourceAsserts.assertNotNull(customer, "customer");
ResourceAsserts.assertNotNull(customer.getId(),"id");
String basePath = "/customer/" + customer.getId();
// Create top-level resource
return getResourceFactory()
.newResource(basePath)
.withLink("/user/" + customer.getUser().getId(), "user")
.withLink("/cart/" + customer.getCart().getId(), "cart");
}
}