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.hc.core5.http.io.support;
29
30 import java.util.Arrays;
31
32 import org.apache.hc.core5.http.ClassicHttpResponse;
33 import org.apache.hc.core5.http.ContentType;
34 import org.apache.hc.core5.http.Header;
35 import org.apache.hc.core5.http.HttpEntity;
36 import org.apache.hc.core5.http.ProtocolVersion;
37 import org.apache.hc.core5.http.io.entity.ByteArrayEntity;
38 import org.apache.hc.core5.http.io.entity.StringEntity;
39 import org.apache.hc.core5.http.message.BasicClassicHttpResponse;
40 import org.apache.hc.core5.http.support.AbstractResponseBuilder;
41 import org.apache.hc.core5.util.Args;
42
43
44
45
46
47
48 public class ClassicResponseBuilder extends AbstractResponseBuilder<ClassicHttpResponse> {
49
50 private HttpEntity entity;
51
52 ClassicResponseBuilder(final int status) {
53 super(status);
54 }
55
56 public static ClassicResponseBuilder create(final int status) {
57 Args.checkRange(status, 100, 599, "HTTP status code");
58 return new ClassicResponseBuilder(status);
59 }
60
61
62
63
64 public static ClassicResponseBuilder copy(final ClassicHttpResponse response) {
65 Args.notNull(response, "HTTP response");
66 final ClassicResponseBuilder builder = new ClassicResponseBuilder(response.getCode());
67 builder.digest(response);
68 return builder;
69 }
70
71 protected void digest(final ClassicHttpResponse response) {
72 super.digest(response);
73 setEntity(response.getEntity());
74 }
75
76 @Override
77 public ClassicResponseBuilder setVersion(final ProtocolVersion version) {
78 super.setVersion(version);
79 return this;
80 }
81
82 @Override
83 public ClassicResponseBuilder setHeaders(final Header... headers) {
84 super.setHeaders(headers);
85 return this;
86 }
87
88 @Override
89 public ClassicResponseBuilder addHeader(final Header header) {
90 super.addHeader(header);
91 return this;
92 }
93
94 @Override
95 public ClassicResponseBuilder addHeader(final String name, final String value) {
96 super.addHeader(name, value);
97 return this;
98 }
99
100 @Override
101 public ClassicResponseBuilder removeHeader(final Header header) {
102 super.removeHeader(header);
103 return this;
104 }
105
106 @Override
107 public ClassicResponseBuilder removeHeaders(final String name) {
108 super.removeHeaders(name);
109 return this;
110 }
111
112 @Override
113 public ClassicResponseBuilder setHeader(final Header header) {
114 super.setHeader(header);
115 return this;
116 }
117
118 @Override
119 public ClassicResponseBuilder setHeader(final String name, final String value) {
120 super.setHeader(name, value);
121 return this;
122 }
123
124 public HttpEntity getEntity() {
125 return entity;
126 }
127
128 public ClassicResponseBuilder setEntity(final HttpEntity entity) {
129 this.entity = entity;
130 return this;
131 }
132
133 public ClassicResponseBuilder setEntity(final String content, final ContentType contentType) {
134 this.entity = new StringEntity(content, contentType);
135 return this;
136 }
137
138 public ClassicResponseBuilder setEntity(final String content) {
139 this.entity = new StringEntity(content);
140 return this;
141 }
142
143 public ClassicResponseBuilder setEntity(final byte[] content, final ContentType contentType) {
144 this.entity = new ByteArrayEntity(content, contentType);
145 return this;
146 }
147
148 @Override
149 public ClassicHttpResponse build() {
150 final BasicClassicHttpResponse result = new BasicClassicHttpResponse(getStatus());
151 result.setVersion(getVersion());
152 result.setHeaders(getHeaders());
153 result.setEntity(entity);
154 return result;
155 }
156
157 @Override
158 public String toString() {
159 final StringBuilder builder = new StringBuilder();
160 builder.append("ClassicResponseBuilder [status=");
161 builder.append(getStatus());
162 builder.append(", headerGroup=");
163 builder.append(Arrays.toString(getHeaders()));
164 builder.append(", entity=");
165 builder.append(entity != null ? entity.getClass() : null);
166 builder.append("]");
167 return builder.toString();
168 }
169
170 }