• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
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  * Delegates to a URLConnection while implementing AutoCloseable.
32  */
33 class CloseableURLConnection extends URLConnection implements AutoCloseable {
34 
open(final URI uri)35     static CloseableURLConnection open(final URI uri) throws IOException {
36         return open(Objects.requireNonNull(uri, "uri").toURL());
37     }
38 
open(final URL url)39     static CloseableURLConnection open(final URL url) throws IOException {
40         return new CloseableURLConnection(url.openConnection());
41     }
42 
43     private final URLConnection urlConnection;
44 
CloseableURLConnection(final URLConnection urlConnection)45     CloseableURLConnection(final URLConnection urlConnection) {
46         super(Objects.requireNonNull(urlConnection, "urlConnection").getURL());
47         this.urlConnection = urlConnection;
48     }
49 
50     @Override
addRequestProperty(final String key, final String value)51     public void addRequestProperty(final String key, final String value) {
52         urlConnection.addRequestProperty(key, value);
53     }
54 
55     @Override
close()56     public void close() {
57         IOUtils.close(urlConnection);
58     }
59 
60     @Override
connect()61     public void connect() throws IOException {
62         urlConnection.connect();
63     }
64 
65     @Override
equals(final Object obj)66     public boolean equals(final Object obj) {
67         return urlConnection.equals(obj);
68     }
69 
70     @Override
getAllowUserInteraction()71     public boolean getAllowUserInteraction() {
72         return urlConnection.getAllowUserInteraction();
73     }
74 
75     @Override
getConnectTimeout()76     public int getConnectTimeout() {
77         return urlConnection.getConnectTimeout();
78     }
79 
80     @Override
getContent()81     public Object getContent() throws IOException {
82         return urlConnection.getContent();
83     }
84 
85     @Override
getContent(@uppressWarnings"rawtypes") final Class[] classes)86     public Object getContent(@SuppressWarnings("rawtypes") final Class[] classes) throws IOException {
87         return urlConnection.getContent(classes);
88     }
89 
90     @Override
getContentEncoding()91     public String getContentEncoding() {
92         return urlConnection.getContentEncoding();
93     }
94 
95     @Override
getContentLength()96     public int getContentLength() {
97         return urlConnection.getContentLength();
98     }
99 
100     @Override
getContentLengthLong()101     public long getContentLengthLong() {
102         return urlConnection.getContentLengthLong();
103     }
104 
105     @Override
getContentType()106     public String getContentType() {
107         return urlConnection.getContentType();
108     }
109 
110     @Override
getDate()111     public long getDate() {
112         return urlConnection.getDate();
113     }
114 
115     @Override
getDefaultUseCaches()116     public boolean getDefaultUseCaches() {
117         return urlConnection.getDefaultUseCaches();
118     }
119 
120     @Override
getDoInput()121     public boolean getDoInput() {
122         return urlConnection.getDoInput();
123     }
124 
125     @Override
getDoOutput()126     public boolean getDoOutput() {
127         return urlConnection.getDoOutput();
128     }
129 
130     @Override
getExpiration()131     public long getExpiration() {
132         return urlConnection.getExpiration();
133     }
134 
135     @Override
getHeaderField(final int n)136     public String getHeaderField(final int n) {
137         return urlConnection.getHeaderField(n);
138     }
139 
140     @Override
getHeaderField(final String name)141     public String getHeaderField(final String name) {
142         return urlConnection.getHeaderField(name);
143     }
144 
145     @Override
getHeaderFieldDate(final String name, final long Default)146     public long getHeaderFieldDate(final String name, final long Default) {
147         return urlConnection.getHeaderFieldDate(name, Default);
148     }
149 
150     @Override
getHeaderFieldInt(final String name, final int Default)151     public int getHeaderFieldInt(final String name, final int Default) {
152         return urlConnection.getHeaderFieldInt(name, Default);
153     }
154 
155     @Override
getHeaderFieldKey(final int n)156     public String getHeaderFieldKey(final int n) {
157         return urlConnection.getHeaderFieldKey(n);
158     }
159 
160     @Override
getHeaderFieldLong(final String name, final long Default)161     public long getHeaderFieldLong(final String name, final long Default) {
162         return urlConnection.getHeaderFieldLong(name, Default);
163     }
164 
165     @Override
getHeaderFields()166     public Map<String, List<String>> getHeaderFields() {
167         return urlConnection.getHeaderFields();
168     }
169 
170     @Override
getIfModifiedSince()171     public long getIfModifiedSince() {
172         return urlConnection.getIfModifiedSince();
173     }
174 
175     @Override
getInputStream()176     public InputStream getInputStream() throws IOException {
177         return urlConnection.getInputStream();
178     }
179 
180     @Override
getLastModified()181     public long getLastModified() {
182         return urlConnection.getLastModified();
183     }
184 
185     @Override
getOutputStream()186     public OutputStream getOutputStream() throws IOException {
187         return urlConnection.getOutputStream();
188     }
189 
190     @Override
getPermission()191     public Permission getPermission() throws IOException {
192         return urlConnection.getPermission();
193     }
194 
195     @Override
getReadTimeout()196     public int getReadTimeout() {
197         return urlConnection.getReadTimeout();
198     }
199 
200     @Override
getRequestProperties()201     public Map<String, List<String>> getRequestProperties() {
202         return urlConnection.getRequestProperties();
203     }
204 
205     @Override
getRequestProperty(final String key)206     public String getRequestProperty(final String key) {
207         return urlConnection.getRequestProperty(key);
208     }
209 
210     @Override
getURL()211     public URL getURL() {
212         return urlConnection.getURL();
213     }
214 
215     @Override
getUseCaches()216     public boolean getUseCaches() {
217         return urlConnection.getUseCaches();
218     }
219 
220     @Override
hashCode()221     public int hashCode() {
222         return urlConnection.hashCode();
223     }
224 
225     @Override
setAllowUserInteraction(final boolean allowUserInteraction)226     public void setAllowUserInteraction(final boolean allowUserInteraction) {
227         urlConnection.setAllowUserInteraction(allowUserInteraction);
228     }
229 
230     @Override
setConnectTimeout(final int timeout)231     public void setConnectTimeout(final int timeout) {
232         urlConnection.setConnectTimeout(timeout);
233     }
234 
235     @Override
setDefaultUseCaches(final boolean defaultUseCaches)236     public void setDefaultUseCaches(final boolean defaultUseCaches) {
237         urlConnection.setDefaultUseCaches(defaultUseCaches);
238     }
239 
240     @Override
setDoInput(final boolean doInput)241     public void setDoInput(final boolean doInput) {
242         urlConnection.setDoInput(doInput);
243     }
244 
245     @Override
setDoOutput(final boolean doOutput)246     public void setDoOutput(final boolean doOutput) {
247         urlConnection.setDoOutput(doOutput);
248     }
249 
250     @Override
setIfModifiedSince(final long ifModifiedSince)251     public void setIfModifiedSince(final long ifModifiedSince) {
252         urlConnection.setIfModifiedSince(ifModifiedSince);
253     }
254 
255     @Override
setReadTimeout(final int timeout)256     public void setReadTimeout(final int timeout) {
257         urlConnection.setReadTimeout(timeout);
258     }
259 
260     @Override
setRequestProperty(final String key, final String value)261     public void setRequestProperty(final String key, final String value) {
262         urlConnection.setRequestProperty(key, value);
263     }
264 
265     @Override
setUseCaches(final boolean useCaches)266     public void setUseCaches(final boolean useCaches) {
267         urlConnection.setUseCaches(useCaches);
268     }
269 
270     @Override
toString()271     public String toString() {
272         return urlConnection.toString();
273     }
274 
275 }
276