AxisFaultHandler.java
1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package br.gov.ans.exceptions.handlers;
import static br.gov.ans.utils.HttpHeadersUtil.getAcceptType;
import java.net.UnknownHostException;
import javax.inject.Inject;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import org.apache.axis.AxisFault;
import org.jboss.logging.Logger;
import org.xml.sax.SAXException;
import br.gov.ans.exceptions.ErrorMessage;
@Provider
public class AxisFaultHandler implements ExceptionMapper<AxisFault>{
@Inject
private Logger logger;
@Context
private HttpHeaders headers;
@Inject
private UnknownHostExceptionHandler unknownHostExceptionHandler;
@Inject
private SAXExceptionHandler sAXExceptionHandler;
@Override
public Response toResponse(AxisFault ex) {
logger.error(ex);
logger.debug(ex, ex);
Throwable cause = ex.getCause();
if(cause instanceof UnknownHostException){
return unknownHostExceptionHandler.toResponse((UnknownHostException) cause);
}
if(cause instanceof SAXException){
return sAXExceptionHandler.toResponse((SAXException) cause);
}
return Response.status(Status.INTERNAL_SERVER_ERROR)
.entity(new ErrorMessage(ex.getMessage(),String.valueOf(Status.INTERNAL_SERVER_ERROR.getStatusCode())))
.type(getAcceptType(headers))
.build();
}
}