node-web-mvc
Version:
node spring mvc
44 lines (43 loc) • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ResponseStatusException_1 = __importDefault(require("../../../errors/ResponseStatusException"));
const ResponseStatus_1 = __importDefault(require("../../annotations/ResponseStatus"));
const RuntimeAnnotation_1 = __importDefault(require("../../annotations/annotation/RuntimeAnnotation"));
const HttpStatus_1 = __importDefault(require("../../http/HttpStatus"));
const ModelAndView_1 = __importDefault(require("../../models/ModelAndView"));
class ResponseStatusExceptionResolver {
async resolveException(servletContext, handler, error) {
var _a;
try {
if (error instanceof ResponseStatusException_1.default) {
return this.resolveResponseStatusException(servletContext, handler, error);
}
const anno = (_a = RuntimeAnnotation_1.default.getClassAnnotation(error.constructor, ResponseStatus_1.default)) === null || _a === void 0 ? void 0 : _a.nativeAnnotation;
if (anno) {
return this.resolveResponseStatus(anno.code, anno.reason, servletContext, handler, error);
}
}
catch (ex) {
console.warn(`${ResponseStatusExceptionResolver.name} resolveException failure`);
console.warn(ex);
}
return null;
}
resolveResponseStatusException(servletContext, handler, error) {
const response = servletContext.response;
const headers = error.getResponseHeaders();
Object.keys(headers).forEach((key) => {
response.setHeader(key, headers[key]);
});
return this.resolveResponseStatus(error.code, error.reason, servletContext, handler, error);
}
resolveResponseStatus(code, message, servletContext, handler, error) {
const response = servletContext.response;
response.sendError(new HttpStatus_1.default(code, message));
return new ModelAndView_1.default();
}
}
exports.default = ResponseStatusExceptionResolver;