/* * This file is part of vospace-rest * Copyright (C) 2021 Istituto Nazionale di Astrofisica * SPDX-License-Identifier: GPL-3.0-or-later */ package it.inaf.oats.vospace.exception; import java.nio.charset.StandardCharsets; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController; import org.springframework.boot.web.error.ErrorAttributeOptions; import org.springframework.boot.web.servlet.error.ErrorAttributes; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("${server.error.path:${error.path:/error}}") public class DefaultErrorController extends AbstractErrorController { public DefaultErrorController(ErrorAttributes errorAttributes) { super(errorAttributes); } @RequestMapping(produces = MediaType.TEXT_XML_VALUE) public void errorText(HttpServletRequest request, HttpServletResponse response) throws Exception { ErrorAttributeOptions options = ErrorAttributeOptions.of(ErrorAttributeOptions.Include.MESSAGE); Map errors = super.getErrorAttributes(request, options); response.setContentType("text/plain;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); String errorMessage = (String) errors.get("message"); if (errorMessage != null) { response.getOutputStream().write(errorMessage.getBytes(StandardCharsets.UTF_8)); } } @Override public String getErrorPath() { return null; } }