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.message;
29
30 import java.io.Serializable;
31
32 import org.apache.http.FormattedHeader;
33 import org.apache.http.HeaderElement;
34 import org.apache.http.ParseException;
35 import org.apache.http.util.Args;
36 import org.apache.http.util.CharArrayBuffer;
37
38
39
40
41
42
43
44 public class BufferedHeader implements FormattedHeader, Cloneable, Serializable {
45
46 private static final long serialVersionUID = -2768352615787625448L;
47
48
49
50
51 private final String name;
52
53
54
55
56 private final CharArrayBuffer buffer;
57
58
59
60
61 private final int valuePos;
62
63
64
65
66
67
68
69
70
71
72
73 public BufferedHeader(final CharArrayBuffer buffer)
74 throws ParseException {
75
76 super();
77 Args.notNull(buffer, "Char array buffer");
78 final int colon = buffer.indexOf(':');
79 if (colon == -1) {
80 throw new ParseException
81 ("Invalid header: " + buffer.toString());
82 }
83 final String s = buffer.substringTrimmed(0, colon);
84 if (s.isEmpty()) {
85 throw new ParseException
86 ("Invalid header: " + buffer.toString());
87 }
88 this.buffer = buffer;
89 this.name = s;
90 this.valuePos = colon + 1;
91 }
92
93
94 @Override
95 public String getName() {
96 return this.name;
97 }
98
99 @Override
100 public String getValue() {
101 return this.buffer.substringTrimmed(this.valuePos, this.buffer.length());
102 }
103
104 @Override
105 public HeaderElement[] getElements() throws ParseException {
106 final ParserCursoror.html#ParserCursor">ParserCursor cursor = new ParserCursor(0, this.buffer.length());
107 cursor.updatePos(this.valuePos);
108 return BasicHeaderValueParser.INSTANCE.parseElements(this.buffer, cursor);
109 }
110
111 @Override
112 public int getValuePos() {
113 return this.valuePos;
114 }
115
116 @Override
117 public CharArrayBuffer getBuffer() {
118 return this.buffer;
119 }
120
121 @Override
122 public String toString() {
123 return this.buffer.toString();
124 }
125
126 @Override
127 public Object clone() throws CloneNotSupportedException {
128
129
130 return super.clone();
131 }
132
133 }