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 package org.apache.http.impl;
29
30 import java.util.Locale;
31
32 import org.apache.http.HttpResponse;
33 import org.apache.http.HttpResponseFactory;
34 import org.apache.http.ProtocolVersion;
35 import org.apache.http.ReasonPhraseCatalog;
36 import org.apache.http.StatusLine;
37 import org.apache.http.annotation.ThreadingBehavior;
38 import org.apache.http.annotation.Contract;
39 import org.apache.http.message.BasicHttpResponse;
40 import org.apache.http.message.BasicStatusLine;
41 import org.apache.http.protocol.HttpContext;
42 import org.apache.http.util.Args;
43
44
45
46
47
48
49 @Contract(threading = ThreadingBehavior.IMMUTABLE_CONDITIONAL)
50 public class DefaultHttpResponseFactory implements HttpResponseFactory {
51
52 public static final DefaultHttpResponseFactoryml#DefaultHttpResponseFactory">DefaultHttpResponseFactory INSTANCE = new DefaultHttpResponseFactory();
53
54
55 protected final ReasonPhraseCatalog reasonCatalog;
56
57
58
59
60
61
62
63 public DefaultHttpResponseFactory(final ReasonPhraseCatalog catalog) {
64 this.reasonCatalog = Args.notNull(catalog, "Reason phrase catalog");
65 }
66
67
68
69
70
71 public DefaultHttpResponseFactory() {
72 this(EnglishReasonPhraseCatalog.INSTANCE);
73 }
74
75
76
77 @Override
78 public HttpResponse newHttpResponse(
79 final ProtocolVersion ver,
80 final int status,
81 final HttpContext context) {
82 Args.notNull(ver, "HTTP version");
83 final Locale loc = determineLocale(context);
84 final String reason = this.reasonCatalog.getReason(status, loc);
85 final StatusLine statusline = new BasicStatusLine(ver, status, reason);
86 return new BasicHttpResponse(statusline, this.reasonCatalog, loc);
87 }
88
89
90
91 @Override
92 public HttpResponse newHttpResponse(
93 final StatusLine statusline,
94 final HttpContext context) {
95 Args.notNull(statusline, "Status line");
96 return new BasicHttpResponse(statusline, this.reasonCatalog, determineLocale(context));
97 }
98
99
100
101
102
103
104
105
106
107
108 protected Locale determineLocale(final HttpContext context) {
109 return Locale.getDefault();
110 }
111
112 }