1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.handler.codec.http.multipart;
17
18 import org.jboss.netty.buffer.ChannelBuffer;
19 import org.jboss.netty.buffer.ChannelBuffers;
20 import org.jboss.netty.util.CharsetUtil;
21
22 import java.io.UnsupportedEncodingException;
23 import java.nio.charset.Charset;
24 import java.util.ArrayList;
25 import java.util.List;
26
27
28
29
30
31 public class InternalAttribute implements InterfaceHttpData {
32 protected final List<String> value = new ArrayList<String>();
33 private final Charset charset;
34
35 public InternalAttribute(Charset charset) {
36 this.charset = charset;
37 }
38
39 public HttpDataType getHttpDataType() {
40 return HttpDataType.InternalAttribute;
41 }
42
43 public void addValue(String value) {
44 if (value == null) {
45 throw new NullPointerException("value");
46 }
47 this.value.add(value);
48 }
49
50 public void addValue(String value, int rank) {
51 if (value == null) {
52 throw new NullPointerException("value");
53 }
54 this.value.add(rank, value);
55 }
56
57 public void setValue(String value, int rank) {
58 if (value == null) {
59 throw new NullPointerException("value");
60 }
61 this.value.set(rank, value);
62 }
63
64 @Override
65 public int hashCode() {
66 return getName().hashCode();
67 }
68
69 @Override
70 public boolean equals(Object o) {
71 if (!(o instanceof Attribute)) {
72 return false;
73 }
74 Attribute attribute = (Attribute) o;
75 return getName().equalsIgnoreCase(attribute.getName());
76 }
77
78 public int compareTo(InterfaceHttpData o) {
79 if (!(o instanceof InternalAttribute)) {
80 throw new ClassCastException("Cannot compare " + getHttpDataType() +
81 " with " + o.getHttpDataType());
82 }
83 return compareTo((InternalAttribute) o);
84 }
85
86 public int compareTo(InternalAttribute o) {
87 return getName().compareToIgnoreCase(o.getName());
88 }
89
90 public int size() {
91 int size = 0;
92 for (String elt : value) {
93 try {
94 size += elt.getBytes(charset.name()).length;
95 } catch (UnsupportedEncodingException e) {
96 throw new RuntimeException(e);
97 }
98 }
99 return size;
100 }
101 @Override
102 public String toString() {
103 StringBuilder result = new StringBuilder();
104 for (String elt : value) {
105 result.append(elt);
106 }
107 return result.toString();
108 }
109
110 public ChannelBuffer toChannelBuffer() {
111 ChannelBuffer[] buffers = new ChannelBuffer[value.size()];
112 for (int i = 0; i < buffers.length; i++) {
113 buffers[i] = ChannelBuffers.copiedBuffer(value.get(i), charset);
114 }
115 return ChannelBuffers.wrappedBuffer(buffers);
116 }
117
118 public String getName() {
119 return "InternalAttribute";
120 }
121 }