1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.util;
16
17 import java.io.File;
18 import java.io.IOException;
19 import java.io.ObjectInputStream;
20 import java.io.ObjectOutputStream;
21 import java.nio.charset.Charset;
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public class KeyDataPair extends NameValuePair {
36
37 private final File fileObject_;
38 private final String fileName_;
39 private final String mimeType_;
40 private transient Charset charset_;
41 private byte[] data_;
42
43
44
45
46
47
48
49
50
51
52 public KeyDataPair(final String key, final File file, final String fileName,
53 final String mimeType, final String charset) {
54 this(key, file, fileName, mimeType, Charset.forName(charset));
55 }
56
57
58
59
60
61
62
63
64
65
66 public KeyDataPair(final String key, final File file, final String fileName,
67 final String mimeType, final Charset charset) {
68 this(key,
69 (file == null) ? "" : file.getName(),
70 (file != null && file.exists()) ? file : null,
71 fileName,
72 mimeType,
73 charset,
74 null);
75 }
76
77
78
79
80
81
82
83
84
85
86
87 private KeyDataPair(final String name, final String value, final File file,
88 final String fileName, final String mimeType, final Charset charset,
89 final byte[] data) {
90 super(name, value);
91
92 fileObject_ = file;
93 fileName_ = fileName;
94
95 mimeType_ = mimeType;
96 charset_ = charset;
97
98 data_ = data;
99 }
100
101
102
103
104 @Override
105 @SuppressWarnings("PMD.UselessOverridingMethod")
106 public boolean equals(final Object object) {
107
108
109
110 return super.equals(object);
111 }
112
113
114
115
116 @Override
117 @SuppressWarnings("PMD.UselessOverridingMethod")
118 public int hashCode() {
119
120
121
122 return super.hashCode();
123 }
124
125
126
127
128 public File getFile() {
129 return fileObject_;
130 }
131
132
133
134
135 public String getFileName() {
136 return fileName_;
137 }
138
139
140
141
142
143 public Charset getCharset() {
144 return charset_;
145 }
146
147
148
149
150
151 public String getMimeType() {
152 return mimeType_;
153 }
154
155
156
157
158
159 public byte[] getData() {
160 return data_;
161 }
162
163
164
165
166
167 public void setData(final byte[] data) {
168 data_ = data;
169 }
170
171 private void writeObject(final ObjectOutputStream oos) throws IOException {
172 oos.defaultWriteObject();
173 oos.writeObject(charset_ == null ? null : charset_.name());
174 }
175
176 private void readObject(final ObjectInputStream ois) throws ClassNotFoundException, IOException {
177 ois.defaultReadObject();
178 final String charsetName = (String) ois.readObject();
179 if (charsetName != null) {
180 charset_ = Charset.forName(charsetName);
181 }
182 }
183
184
185
186
187
188
189
190
191 @Override
192 public KeyDataPair normalized() {
193 return new KeyDataPair(
194 this.getName(),
195 this.getValue(),
196 this.fileObject_,
197 this.fileName_,
198 this.mimeType_,
199 this.charset_,
200 this.data_);
201 }
202 }