/* * Copyright (C) 2014 Intel Corporation * All rights reserved. */ package com.intel.mtwilson.util; import com.intel.mtwilson.My; import com.intel.mtwilson.i18n.ErrorCode; import com.intel.mtwilson.jaxrs2.server.Util; import java.util.Locale; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; /** * * @author jbuhacoff */ public class ThrowableMapperV1 extends ThrowableMapper { private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(ThrowableMapperV1.class); @Override public Response toResponse(Throwable exception) { log.debug("ThrowableMapperV1 toResponse", exception); Locale locale = Util.getAcceptableLocale(headers.getAcceptableLanguages(), My.configuration().getAvailableLocales()); /* MediaType mediaType = Util.getAcceptableMediaType(headers.getAcceptableMediaTypes()); // we respect client's media type selection only if it's json or xml, if it's anything else we return the error in json if( !mediaType.isCompatible(MediaType.APPLICATION_JSON_TYPE) && !mediaType.isCompatible(MediaType.APPLICATION_XML_TYPE) ) { mediaType = MediaType.APPLICATION_JSON_TYPE; } */ MediaType mediaType = MediaType.APPLICATION_JSON_TYPE; ErrorResponse errorResponse; if( exception instanceof MWException ) { MWException mwe = (MWException)exception; mwe.setLocale(locale); // localizes error message obtained below with getErrorMessage() ErrorCode code = mwe.getErrorCode(); String localizedErrorMessage = mwe.getErrorMessage(); errorResponse = new ErrorResponse(code, localizedErrorMessage); } else { String localizedMessage = getLocalizedErrorMessage(exception, locale); errorResponse = new ErrorResponse(ErrorCode.SYSTEM_ERROR, localizedMessage); } Response response = Response.status(400).entity(errorResponse).type(mediaType).build(); return response; } }