package com.sap.research.fiware.ngsi10.simple.helpers; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; public class MethodNotAllowedHelper { public static Response onlyGetAllowed() { return createMethodNotAllowedResponse("GET"); } public static Response onlyPostAllowed() { return createMethodNotAllowedResponse("POST"); } public static Response onlyPutDeleteAllowed() { return createMethodNotAllowedResponse("PUT", "DELETE"); } public static Response onlyGetPostDeleteAllowed() { return createMethodNotAllowedResponse("GET", "POST", "DELETE"); } public static Response onlyGetPutDeleteAllowed() { return createMethodNotAllowedResponse("GET", "PUT", "DELETE"); } private static Response createMethodNotAllowedResponse(String... allowedMethods) { if (0 == allowedMethods.length) { throw new RuntimeException("Can't respond Method not allowed without returning allowed methods"); } StringBuilder allowedMethodsBuilder = new StringBuilder(); boolean first = true; for (String allowedMethod : allowedMethods) { if (first) { first = false; } else { allowedMethodsBuilder.append(", "); } allowedMethodsBuilder.append(allowedMethod); } String concatenatedAllowedMethods = allowedMethodsBuilder.toString(); Response response = Response.status(405) .entity("405 Method Not Allowed. Allowed: " + concatenatedAllowedMethods + ".") .type(MediaType.TEXT_PLAIN).header("Allow", concatenatedAllowedMethods).build(); return response; } }