| [//]: # " Copyright (c) 2015, 2020 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 " |
| |
| Exception Mapping Example |
| ========================= |
| |
| This example demonstrates how to create a custom exception mapping. There are described several common use-cases such as |
| `WebApplicationException`, custom exceptions and an exception mapper inheritance. |
| |
| The full description how to handle exception and map them to Response object can be found in Jersey User Guide, chapter |
| [WebApplicationException and Mapping Exceptions to Responses](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest/representations.html#d0e6355). |
| |
| Contents |
| -------- |
| |
| The mapping of the URI path space is presented in the following table: |
| |
| URI path | HTTP methods | Allowed Values | Description |
| ----------------------------------------- | ------------- |-------------------------------------------- | ---------------- |
| **_/exception_** | GET | --- | returns "ping!" |
| **_/exception/webapplication_entity_** | POST | two numbers delimited by colons e.g. 1:201 | not handled by `WebApplicationExceptionMapper` (already has an entity in the exception) |
| **_/exception/webapplication_noentity_** | POST | e.g. 1:201 | handled by `WebApplicationExceptionMapper` |
| **_/exception/my_** | POST | e.g. 1:201 | handled by `MyExceptionMapper` |
| **_/exception/mysub_** | POST | e.g. 1:201 | handled by `MySubExceptionMapper` |
| **_/exception/mysubsub_** | POST | e.g. 1:201 | handled by `MySubExceptionMapper` |
| **_/exception/request_exception_** | POST | String "Request Exception" | not reached a resource method, processed by `ContainerRequestFilter` |
| **_/exception/response_exception_** | GET | --- | response handled and changed by `ContainerResponseFilter` |
| |
| |
| Application is based on Grizzly container (see `App`). Everything needed |
| (resources/providers) is registered in `ExceptionResource` and custom exceptions |
| along with mappers can be found in `Exceptions` class. |
| |
| Running the Example |
| ------------------- |
| |
| Run the example as follows: |
| |
| > mvn clean compile exec:java |
| |
| This deploys the example using [Grizzly](https://projects.eclipse.org/projects/ee4j.grizzly) container. |
| |
| - <http://localhost:8080/base/exception> |
| - <http://localhost:8080/base/exception/response_exception> |