1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io;
18
19 import java.io.IOException;
20 import java.io.InputStream;
21 import java.io.OutputStream;
22 import java.net.URI;
23 import java.net.URL;
24 import java.net.URLConnection;
25 import java.security.Permission;
26 import java.util.List;
27 import java.util.Map;
28 import java.util.Objects;
29
30
31
32
33 final class CloseableURLConnection extends URLConnection implements AutoCloseable {
34
35 static CloseableURLConnection open(final URI uri) throws IOException {
36 return open(Objects.requireNonNull(uri, "uri").toURL());
37 }
38
39 static CloseableURLConnection open(final URL url) throws IOException {
40 return new CloseableURLConnection(url.openConnection());
41 }
42
43 private final URLConnection urlConnection;
44
45 CloseableURLConnection(final URLConnection urlConnection) {
46 super(Objects.requireNonNull(urlConnection, "urlConnection").getURL());
47 this.urlConnection = urlConnection;
48 }
49
50 @Override
51 public void addRequestProperty(final String key, final String value) {
52 urlConnection.addRequestProperty(key, value);
53 }
54
55 @Override
56 public void close() {
57 IOUtils.close(urlConnection);
58 }
59
60 @Override
61 public void connect() throws IOException {
62 urlConnection.connect();
63 }
64
65 @Override
66 public boolean equals(final Object obj) {
67 return urlConnection.equals(obj);
68 }
69
70 @Override
71 public boolean getAllowUserInteraction() {
72 return urlConnection.getAllowUserInteraction();
73 }
74
75 @Override
76 public int getConnectTimeout() {
77 return urlConnection.getConnectTimeout();
78 }
79
80 @Override
81 public Object getContent() throws IOException {
82 return urlConnection.getContent();
83 }
84
85 @Override
86 public Object getContent(@SuppressWarnings("rawtypes") final Class[] classes) throws IOException {
87 return urlConnection.getContent(classes);
88 }
89
90 @Override
91 public String getContentEncoding() {
92 return urlConnection.getContentEncoding();
93 }
94
95 @Override
96 public int getContentLength() {
97 return urlConnection.getContentLength();
98 }
99
100 @Override
101 public long getContentLengthLong() {
102 return urlConnection.getContentLengthLong();
103 }
104
105 @Override
106 public String getContentType() {
107 return urlConnection.getContentType();
108 }
109
110 @Override
111 public long getDate() {
112 return urlConnection.getDate();
113 }
114
115 @Override
116 public boolean getDefaultUseCaches() {
117 return urlConnection.getDefaultUseCaches();
118 }
119
120 @Override
121 public boolean getDoInput() {
122 return urlConnection.getDoInput();
123 }
124
125 @Override
126 public boolean getDoOutput() {
127 return urlConnection.getDoOutput();
128 }
129
130 @Override
131 public long getExpiration() {
132 return urlConnection.getExpiration();
133 }
134
135 @Override
136 public String getHeaderField(final int n) {
137 return urlConnection.getHeaderField(n);
138 }
139
140 @Override
141 public String getHeaderField(final String name) {
142 return urlConnection.getHeaderField(name);
143 }
144
145 @Override
146 public long getHeaderFieldDate(final String name, final long Default) {
147 return urlConnection.getHeaderFieldDate(name, Default);
148 }
149
150 @Override
151 public int getHeaderFieldInt(final String name, final int Default) {
152 return urlConnection.getHeaderFieldInt(name, Default);
153 }
154
155 @Override
156 public String getHeaderFieldKey(final int n) {
157 return urlConnection.getHeaderFieldKey(n);
158 }
159
160 @Override
161 public long getHeaderFieldLong(final String name, final long Default) {
162 return urlConnection.getHeaderFieldLong(name, Default);
163 }
164
165 @Override
166 public Map<String, List<String>> getHeaderFields() {
167 return urlConnection.getHeaderFields();
168 }
169
170 @Override
171 public long getIfModifiedSince() {
172 return urlConnection.getIfModifiedSince();
173 }
174
175 @Override
176 public InputStream getInputStream() throws IOException {
177 return urlConnection.getInputStream();
178 }
179
180 @Override
181 public long getLastModified() {
182 return urlConnection.getLastModified();
183 }
184
185 @Override
186 public OutputStream getOutputStream() throws IOException {
187 return urlConnection.getOutputStream();
188 }
189
190 @Override
191 public Permission getPermission() throws IOException {
192 return urlConnection.getPermission();
193 }
194
195 @Override
196 public int getReadTimeout() {
197 return urlConnection.getReadTimeout();
198 }
199
200 @Override
201 public Map<String, List<String>> getRequestProperties() {
202 return urlConnection.getRequestProperties();
203 }
204
205 @Override
206 public String getRequestProperty(final String key) {
207 return urlConnection.getRequestProperty(key);
208 }
209
210 @Override
211 public URL getURL() {
212 return urlConnection.getURL();
213 }
214
215 @Override
216 public boolean getUseCaches() {
217 return urlConnection.getUseCaches();
218 }
219
220 @Override
221 public int hashCode() {
222 return urlConnection.hashCode();
223 }
224
225 @Override
226 public void setAllowUserInteraction(final boolean allowUserInteraction) {
227 urlConnection.setAllowUserInteraction(allowUserInteraction);
228 }
229
230 @Override
231 public void setConnectTimeout(final int timeout) {
232 urlConnection.setConnectTimeout(timeout);
233 }
234
235 @Override
236 public void setDefaultUseCaches(final boolean defaultUseCaches) {
237 urlConnection.setDefaultUseCaches(defaultUseCaches);
238 }
239
240 @Override
241 public void setDoInput(final boolean doInput) {
242 urlConnection.setDoInput(doInput);
243 }
244
245 @Override
246 public void setDoOutput(final boolean doOutput) {
247 urlConnection.setDoOutput(doOutput);
248 }
249
250 @Override
251 public void setIfModifiedSince(final long ifModifiedSince) {
252 urlConnection.setIfModifiedSince(ifModifiedSince);
253 }
254
255 @Override
256 public void setReadTimeout(final int timeout) {
257 urlConnection.setReadTimeout(timeout);
258 }
259
260 @Override
261 public void setRequestProperty(final String key, final String value) {
262 urlConnection.setRequestProperty(key, value);
263 }
264
265 @Override
266 public void setUseCaches(final boolean useCaches) {
267 urlConnection.setUseCaches(useCaches);
268 }
269
270 @Override
271 public String toString() {
272 return urlConnection.toString();
273 }
274
275 }