-
Notifications
You must be signed in to change notification settings - Fork 477
/
BadRequestExceptionHandler.java
49 lines (42 loc) · 1.75 KB
/
BadRequestExceptionHandler.java
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
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package edu.harvard.iq.dataverse.api.errorhandlers;
import edu.harvard.iq.dataverse.util.BundleUtil;
import javax.json.Json;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.BadRequestException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
/**
*
* @author skraffmi
*/
@Provider
public class BadRequestExceptionHandler implements ExceptionMapper<BadRequestException> {
@Context
HttpServletRequest request;
@Override
public Response toResponse(BadRequestException ex) {
System.out.print( ex.getMessage());
String uri = request.getRequestURI();
String exMessage = ex.getMessage();
String outputMessage;
if (exMessage != null && exMessage.toLowerCase().startsWith("tabular data required")) {
outputMessage = BundleUtil.getStringFromBundle("access.api.exception.metadata.not.available.for.nontabular.file");
} else {
outputMessage = "Bad Request. The API request cannot be completed with the parameters supplied. Please check your code for typos, or consult our API guide at http://guides.dataverse.org.";
}
return Response.status(400)
.entity( Json.createObjectBuilder()
.add("status", "ERROR")
.add("code", 400)
.add("message", "'" + uri + "' " + outputMessage)
.build())
.type("application/json").build();
}
}