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