/*
* This file is part of wegenenverkeer common-resteasy.
* Copyright (c) AWV Agentschap Wegen en Verkeer, Vlaamse Gemeenschap
* The program is available in open source according to the Apache License, Version 2.0.
* For full licensing details, see LICENSE.txt in the project root.
*/
package be.wegenenverkeer.common.resteasy.mapper;
import be.wegenenverkeer.common.resteasy.exception.ExceptionUtil;
import be.wegenenverkeer.common.resteasy.logging.PreProcessLoggingInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.NotFoundException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
/**
* Exception mapper for NotFoundException.
*/
@Provider
@Component
public class JaxRsNotFoundExceptionMapper implements ExceptionMapper<NotFoundException> {
@Autowired
private PreProcessLoggingInterceptor preProcessLoggingInterceptor;
@Context
private HttpServletRequest request;
@Override
public Response toResponse(NotFoundException exception) {
preProcessLoggingInterceptor.postProcessError(exception, "De resource werd niet gevonden:");
ExceptionUtil eu = new ExceptionUtil(exception);
return Response.status(Response.Status.NOT_FOUND)
.entity("{ \"error\" : {\"\":[\"" + eu.getEscapedConcatenatedMessage() + "\"]}}")
.header("Access-Control-Allow-Origin", request.getHeader("Origin"))
.header("Access-Control-Allow-Credentials", true)
.build();
}
}