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 package org.apache.hc.core5.http.impl;
28
29 import org.apache.hc.core5.annotation.Internal;
30 import org.apache.hc.core5.http.EntityDetails;
31 import org.apache.hc.core5.http.HttpException;
32 import org.apache.hc.core5.http.HttpResponse;
33 import org.apache.hc.core5.http.HttpStatus;
34 import org.apache.hc.core5.http.MethodNotSupportedException;
35 import org.apache.hc.core5.http.MisdirectedRequestException;
36 import org.apache.hc.core5.http.NotImplementedException;
37 import org.apache.hc.core5.http.ProtocolException;
38 import org.apache.hc.core5.http.RequestHeaderFieldsTooLargeException;
39 import org.apache.hc.core5.http.UnsupportedHttpVersionException;
40
41
42
43
44
45
46 @Internal
47 public class ServerSupport {
48
49 public static void validateResponse(
50 final HttpResponse response,
51 final EntityDetails responseEntityDetails) throws HttpException {
52 final int status = response.getCode();
53 switch (status) {
54 case HttpStatus.SC_NO_CONTENT:
55 case HttpStatus.SC_NOT_MODIFIED:
56 if (responseEntityDetails != null) {
57 throw new HttpException("Response " + status + " must not enclose an entity");
58 }
59 }
60 }
61
62 public static String toErrorMessage(final Exception ex) {
63 final String message = ex.getMessage();
64 return message != null ? message : ex.toString();
65 }
66
67 public static int toStatusCode(final Exception ex) {
68 final int code;
69 if (ex instanceof MethodNotSupportedException) {
70 code = HttpStatus.SC_NOT_IMPLEMENTED;
71 } else if (ex instanceof UnsupportedHttpVersionException) {
72 code = HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED;
73 } else if (ex instanceof NotImplementedException) {
74 code = HttpStatus.SC_NOT_IMPLEMENTED;
75 } else if (ex instanceof RequestHeaderFieldsTooLargeException) {
76 code = HttpStatus.SC_REQUEST_HEADER_FIELDS_TOO_LARGE;
77 } else if (ex instanceof MisdirectedRequestException) {
78 code = HttpStatus.SC_MISDIRECTED_REQUEST;
79 } else if (ex instanceof ProtocolException) {
80 code = HttpStatus.SC_BAD_REQUEST;
81 } else {
82 code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
83 }
84 return code;
85 }
86
87 }
88