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.nio.entity;
28
29 import java.io.IOException;
30 import java.nio.CharBuffer;
31
32 import org.apache.hc.core5.http.ContentType;
33 import org.apache.hc.core5.http.HttpException;
34 import org.apache.hc.core5.http.config.CharCodingConfig;
35 import org.apache.hc.core5.util.Args;
36 import org.apache.hc.core5.util.CharArrayBuffer;
37
38
39
40
41
42
43
44 public class StringAsyncEntityConsumer extends AbstractCharAsyncEntityConsumer<String> {
45
46 private final int capacityIncrement;
47 private final CharArrayBuffer content;
48
49 public StringAsyncEntityConsumer(final int bufSize, final int capacityIncrement, final CharCodingConfig charCodingConfig) {
50 super(bufSize, charCodingConfig);
51 this.capacityIncrement = Args.positive(capacityIncrement, "Capacity increment");
52 this.content = new CharArrayBuffer(1024);
53 }
54
55 public StringAsyncEntityConsumer(final int capacityIncrement) {
56 this(DEF_BUF_SIZE, capacityIncrement, CharCodingConfig.DEFAULT);
57 }
58
59 public StringAsyncEntityConsumer(final CharCodingConfig charCodingConfig) {
60 this(DEF_BUF_SIZE, Integer.MAX_VALUE, charCodingConfig);
61 }
62
63 public StringAsyncEntityConsumer() {
64 this(Integer.MAX_VALUE);
65 }
66
67 @Override
68 protected final void streamStart(final ContentType contentType) throws HttpException, IOException {
69 }
70
71 @Override
72 protected int capacityIncrement() {
73 return capacityIncrement;
74 }
75
76 @Override
77 protected final void data(final CharBuffer src, final boolean endOfStream) {
78 Args.notNull(src, "CharBuffer");
79 final int chunk = src.remaining();
80 content.ensureCapacity(chunk);
81 src.get(content.array(), content.length(), chunk);
82 content.setLength(content.length() + chunk);
83 }
84
85 @Override
86 public String generateContent() {
87 return content.toString();
88 }
89
90 @Override
91 public void releaseResources() {
92 content.clear();
93 }
94
95 }