-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path113.java
More file actions
129 lines (111 loc) · 4.37 KB
/
Copy path113.java
File metadata and controls
129 lines (111 loc) · 4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
* Copyright (c) 2014, Cloudera and Intel, Inc. All Rights Reserved.
*
* Cloudera, Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"). You may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* This software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for
* the specific language governing permissions and limitations under the
* License.
*/
package com.cloudera.oryx.lambda.serving;
import java.io.PrintWriter;
import java.io.StringWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.catalina.manager.JspHelper;
/**
* Constructs a simple HTML error page from error info in the request.
* This is intended to be where the container forwards errored requests to.
*/
@Path("/error")
public final class ErrorResource {
@GET
@Produces(MediaType.TEXT_HTML)
public Response errorHTML(@Context HttpServletRequest request) {
StringBuilder html = new StringBuilder(1000);
html.append("<!DOCTYPE html>" +
"<html><head><title>Error</title>" +
"<style type=\"text/css\">" +
"body{background-color:#01596e} body,p{font-family:monospace;color:white}" +
"</style></head>" +
"<body>");
html.append("<p><strong>Error");
Number statusCode = (Number) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (statusCode != null) {
html.append(' ').append(statusCode);
}
html.append("</strong>");
Object requestURI = request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);
if (requestURI != null) {
html.append(" : ");
html.append(JspHelper.escapeXml(requestURI));
}
html.append("</p>");
Object message = request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
if (message != null) {
html.append("<p><strong>");
html.append(JspHelper.escapeXml(message));
html.append("</strong></p>");
}
Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
if (throwable != null) {
StringWriter sw = new StringWriter();
throwable.printStackTrace(new PrintWriter(sw));
html.append("<p><pre>");
html.append(JspHelper.escapeXml(sw.toString()));
html.append("</pre></p>");
}
html.append("</body></html>");
Response.Status finalStatus = statusCode == null ?
Response.Status.OK : Response.Status.fromStatusCode(statusCode.intValue());
return Response.status(finalStatus).entity(html.toString()).build();
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public Response errorText(@Context HttpServletRequest request) {
StringBuilder text = new StringBuilder(1000);
text.append("Error");
Number statusCode = (Number) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (statusCode != null) {
text.append(' ').append(statusCode);
}
Object requestURI = request.getAttribute(RequestDispatcher.ERROR_REQUEST_URI);
if (requestURI != null) {
text.append(" : ");
text.append(requestURI);
}
text.append('\n');
Object message = request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
if (message != null) {
text.append(message).append('\n');
}
Throwable throwable = (Throwable) request.getAttribute(RequestDispatcher.ERROR_EXCEPTION);
if (throwable != null) {
StringWriter sw = new StringWriter();
throwable.printStackTrace(new PrintWriter(sw));
text.append(sw);
}
Response.Status finalStatus = statusCode == null ?
Response.Status.OK : Response.Status.fromStatusCode(statusCode.intValue());
return Response.status(finalStatus).entity(text.toString()).build();
}
@GET
@Produces(MediaType.WILDCARD)
public Response errorEmpty(@Context HttpServletRequest request) {
Number statusCode = (Number) request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
Response.Status finalStatus = statusCode == null ?
Response.Status.OK : Response.Status.fromStatusCode(statusCode.intValue());
return Response.status(finalStatus).build();
}
}