| [//]: # " 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> |