1 package com.atlassian.httpclient.apache.httpcomponents;
2
3 import com.atlassian.httpclient.api.Common;
4
5 import java.io.InputStream;
6 import java.nio.charset.Charset;
7 import java.util.Map;
8
9 public class CommonBuilder<T> implements Common<CommonBuilder<T>> {
10 private final Headers.Builder headersBuilder = new Headers.Builder();
11 private InputStream entityStream;
12
13 @Override
14 public CommonBuilder<T> setHeader(final String name, final String value) {
15 headersBuilder.setHeader(name, value);
16 return this;
17 }
18
19 @Override
20 public CommonBuilder<T> setHeaders(final Map<String, String> headers) {
21 headersBuilder.setHeaders(headers);
22 return this;
23 }
24
25 @Override
26 public CommonBuilder<T> setEntity(final String entity) {
27 if (entity != null) {
28 final String charset = "UTF-8";
29 byte[] bytes = entity.getBytes(Charset.forName(charset));
30 setEntityStream(new EntityByteArrayInputStream(bytes), charset);
31 } else {
32 setEntityStream(null, null);
33 }
34 return this;
35 }
36
37 @Override
38 public CommonBuilder<T> setEntityStream(final InputStream entityStream) {
39 this.entityStream = entityStream;
40 return this;
41 }
42
43 @Override
44 public CommonBuilder<T> setContentCharset(final String contentCharset) {
45 headersBuilder.setContentCharset(contentCharset);
46 return this;
47 }
48
49 @Override
50 public CommonBuilder<T> setContentType(final String contentType) {
51 headersBuilder.setContentType(contentType);
52 return this;
53 }
54
55 @Override
56 public CommonBuilder<T> setEntityStream(final InputStream entityStream, final String charset) {
57 setEntityStream(entityStream);
58 headersBuilder.setContentCharset(charset);
59 return this;
60 }
61
62 public InputStream getEntityStream() {
63 return entityStream;
64 }
65
66 public Headers getHeaders() {
67 return headersBuilder.build();
68 }
69
70 }