November 2009
Intermediate to advanced
310 pages
7h 42m
English
In Chapter 7,
you learned how to create complex responses using the Response and ResponseBuilder classes. You also learned how to
map thrown exceptions to a Response using a javax.ws.rs.ext.ExceptionMapper. Since most of our
examples use a Response object in one way
or another, this chapter focuses only on writing an ExceptionMapper.
This example is a slight modification from ex06_1 to show you how you can use ExceptionMappers. Let’s take a look at the
CustomerResource class to see what is
different:
src/main/java/com/restfully/shop/services/CustomerResource.java
@Path("/customers")
public class CustomerResource {
...
@GET
@Path("{id}")
@Produces("application/xml")
public Customer getCustomer(@PathParam("id") int id)
{
Customer customer = customerDB.get(id);
if (customer == null)
{
throw new NotFoundException("Could not find customer "
+ id);
}
return customer;
}
@PUT
@Path("{id}")
@Consumes("application/xml")
public void updateCustomer(@PathParam("id") int id,
Customer update)
{
Customer current = customerDB.get(id);
if (current == null)
throw new NotFoundException("Could not find customer " + id);
current.setFirstName(update.getFirstName());
current.setLastName(update.getLastName());
current.setStreet(update.getStreet());
current.setState(update.getState());
current.setZip(update.getZip());
current.setCountry(update.getCountry());
}
}In ex06_1, our getCustomer() and updateCustomer() methods threw a javax.ws.rs.WebApplicationException ...