/*
* Copyright (c) 2016 OBiBa. All rights reserved.
*
* This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.obiba.jersey.exceptionmapper;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import org.obiba.web.model.ErrorDtos;
import com.google.protobuf.GeneratedMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR;
@Provider
public class UnhandledExceptionMapper extends AbstractErrorDtoExceptionMapper<Exception> {
private static final Logger logger = LoggerFactory.getLogger(UnhandledExceptionMapper.class);
@Override
protected Response.Status getStatus() {
return INTERNAL_SERVER_ERROR;
}
@Override
protected GeneratedMessage.ExtendableMessage<?> getErrorDto(Exception exception) {
logger.warn("Exception catched by UnhandledExceptionMapper", exception);
ErrorDtos.ClientErrorDto.Builder errorBuilder = ErrorDtos.ClientErrorDto.newBuilder()
.setCode(getStatus().getStatusCode())
.setMessageTemplate("error.unhandledException");
if (exception.getMessage() != null)
errorBuilder.setMessage(exception.getMessage());
return errorBuilder.build();
}
}