blob: 670bde8d8096f52783e5adc61500becce26d855c [file] [log] [blame]
/*
* Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.glassfish.jersey.examples.exception;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
/**
* Exceptions class.
*
* @author Santiago.Pericas-Geertsen at oracle.com
*/
public class Exceptions {
// -- Exceptions
public static class MyException extends RuntimeException {
private Response response;
public MyException(Response response) {
this.response = response;
}
public Response getResponse() {
return response;
}
}
public static class MySubException extends MyException {
public MySubException(Response response) {
super(response);
}
}
public static class MySubSubException extends MySubException {
public MySubSubException(Response response) {
super(response);
}
}
// -- Exception Mappers
@Provider
public static class MyExceptionMapper implements ExceptionMapper<MyException> {
@Override
public Response toResponse(MyException exception) {
Response r = exception.getResponse();
return Response.status(r.getStatus()).entity(
"Code:" + r.getStatus() + ":" + getClass().getSimpleName()).build();
}
}
@Provider
public static class MySubExceptionMapper implements ExceptionMapper<MySubException> {
@Override
public Response toResponse(MySubException exception) {
Response r = exception.getResponse();
return Response.status(r.getStatus()).entity(
"Code:" + r.getStatus() + ":" + getClass().getSimpleName()).build();
}
}
@Provider
public static class WebApplicationExceptionMapper implements ExceptionMapper<WebApplicationException> {
@Override
public Response toResponse(WebApplicationException exception) {
Response r = exception.getResponse();
return Response.status(r.getStatus()).entity("Code:" + r.getStatus() + ":"
+ getClass().getSimpleName()).build();
}
}
}