• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mybatis / migrations / 1057

10 Jul 2026 10:31PM UTC coverage: 80.917% (+1.0%) from 79.903%
1057

push

github

web-flow
Merge pull request #546 from hazendaz/master

Modernize Collections and avoid security manager entirely in tests

692 of 986 branches covered (70.18%)

10 of 11 new or added lines in 9 files covered. (90.91%)

1 existing line in 1 file now uncovered.

1836 of 2269 relevant lines covered (80.92%)

0.81 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

36.0
/src/main/java/org/apache/ibatis/migration/io/Resources.java
1
/*
2
 *    Copyright 2010-2026 the original author or authors.
3
 *
4
 *    Licensed under the Apache License, Version 2.0 (the "License");
5
 *    you may not use this file except in compliance with the License.
6
 *    You may obtain a copy of the License at
7
 *
8
 *       https://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 *    Unless required by applicable law or agreed to in writing, software
11
 *    distributed under the License is distributed on an "AS IS" BASIS,
12
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 *    See the License for the specific language governing permissions and
14
 *    limitations under the License.
15
 */
16
package org.apache.ibatis.migration.io;
17

18
import java.io.File;
19
import java.io.IOException;
20
import java.io.InputStream;
21
import java.io.InputStreamReader;
22
import java.io.Reader;
23
import java.net.URI;
24
import java.net.URISyntaxException;
25
import java.net.URL;
26
import java.net.URLConnection;
27
import java.nio.charset.Charset;
28
import java.nio.file.Path;
29
import java.util.Properties;
30

31
/**
32
 * A class to simplify access to resources through the classloader.
33
 */
UNCOV
34
public class Resources {
×
35

36
  private static ClassLoaderWrapper classLoaderWrapper = new ClassLoaderWrapper();
1✔
37

38
  /**
39
   * Charset to use when calling getResourceAsReader. null means use the system default.
40
   */
41
  private static Charset charset;
42

43
  /**
44
   * Returns the default classloader (may be null).
45
   *
46
   * @return The default classloader
47
   */
48
  public static ClassLoader getDefaultClassLoader() {
49
    return classLoaderWrapper.defaultClassLoader;
×
50
  }
51

52
  /**
53
   * Sets the default classloader
54
   *
55
   * @param defaultClassLoader
56
   *          - the new default ClassLoader
57
   */
58
  public static void setDefaultClassLoader(ClassLoader defaultClassLoader) {
59
    classLoaderWrapper.defaultClassLoader = defaultClassLoader;
×
60
  }
×
61

62
  /**
63
   * Returns the URI of the resource on the classpath
64
   *
65
   * @param resource
66
   *          The resource to find
67
   *
68
   * @return The resource
69
   *
70
   * @throws java.io.IOException
71
   *           If the resource cannot be found or read
72
   */
73
  public static URI getResourceURI(String resource) throws IOException {
74
    // issue #625
75
    return getResourceURI(null, resource);
1✔
76
  }
77

78
  /**
79
   * Returns the URI of the resource on the classpath
80
   *
81
   * @param loader
82
   *          The classloader used to fetch the resource
83
   * @param resource
84
   *          The resource to find
85
   *
86
   * @return The resource
87
   *
88
   * @throws java.io.IOException
89
   *           If the resource cannot be found or read
90
   */
91
  public static URI getResourceURI(ClassLoader loader, String resource) throws IOException {
92
    URL url = classLoaderWrapper.getResourceAsURL(resource, loader);
1✔
93
    if (url == null) {
1✔
94
      throw new IOException("Could not find resource " + resource);
1✔
95
    }
96
    try {
97
      return url.toURI();
1✔
98
    } catch (URISyntaxException e) {
×
99
      throw new IOException("Could not find resource " + resource);
×
100
    }
101
  }
102

103
  /**
104
   * Returns a resource on the classpath as a Stream object
105
   *
106
   * @param resource
107
   *          The resource to find
108
   *
109
   * @return The resource
110
   *
111
   * @throws java.io.IOException
112
   *           If the resource cannot be found or read
113
   */
114
  public static InputStream getResourceAsStream(String resource) throws IOException {
115
    return getResourceAsStream(null, resource);
1✔
116
  }
117

118
  /**
119
   * Returns a resource on the classpath as a Stream object
120
   *
121
   * @param loader
122
   *          The classloader used to fetch the resource
123
   * @param resource
124
   *          The resource to find
125
   *
126
   * @return The resource
127
   *
128
   * @throws java.io.IOException
129
   *           If the resource cannot be found or read
130
   */
131
  public static InputStream getResourceAsStream(ClassLoader loader, String resource) throws IOException {
132
    InputStream in = classLoaderWrapper.getResourceAsStream(resource, loader);
1✔
133
    if (in == null) {
1!
134
      throw new IOException("Could not find resource " + resource);
×
135
    }
136
    return in;
1✔
137
  }
138

139
  /**
140
   * Returns a resource on the classpath as a Properties object
141
   *
142
   * @param resource
143
   *          The resource to find
144
   *
145
   * @return The resource
146
   *
147
   * @throws java.io.IOException
148
   *           If the resource cannot be found or read
149
   */
150
  public static Properties getResourceAsProperties(String resource) throws IOException {
151
    Properties props = new Properties();
1✔
152
    try (InputStream in = getResourceAsStream(resource)) {
1✔
153
      props.load(in);
1✔
154
    }
155
    return props;
1✔
156
  }
157

158
  /**
159
   * Returns a resource on the classpath as a Properties object
160
   *
161
   * @param loader
162
   *          The classloader used to fetch the resource
163
   * @param resource
164
   *          The resource to find
165
   *
166
   * @return The resource
167
   *
168
   * @throws java.io.IOException
169
   *           If the resource cannot be found or read
170
   */
171
  public static Properties getResourceAsProperties(ClassLoader loader, String resource) throws IOException {
172
    Properties props = new Properties();
×
173
    try (InputStream in = getResourceAsStream(loader, resource)) {
×
174
      props.load(in);
×
175
    }
176
    return props;
×
177
  }
178

179
  /**
180
   * Returns a resource on the classpath as a Reader object
181
   *
182
   * @param resource
183
   *          The resource to find
184
   *
185
   * @return The resource
186
   *
187
   * @throws java.io.IOException
188
   *           If the resource cannot be found or read
189
   */
190
  public static Reader getResourceAsReader(String resource) throws IOException {
191
    Reader reader;
192
    if (charset == null) {
×
193
      reader = new InputStreamReader(getResourceAsStream(resource));
×
194
    } else {
195
      reader = new InputStreamReader(getResourceAsStream(resource), charset);
×
196
    }
197
    return reader;
×
198
  }
199

200
  /**
201
   * Returns a resource on the classpath as a Reader object
202
   *
203
   * @param loader
204
   *          The classloader used to fetch the resource
205
   * @param resource
206
   *          The resource to find
207
   *
208
   * @return The resource
209
   *
210
   * @throws java.io.IOException
211
   *           If the resource cannot be found or read
212
   */
213
  public static Reader getResourceAsReader(ClassLoader loader, String resource) throws IOException {
214
    Reader reader;
215
    if (charset == null) {
1!
216
      reader = new InputStreamReader(getResourceAsStream(loader, resource));
1✔
217
    } else {
218
      reader = new InputStreamReader(getResourceAsStream(loader, resource), charset);
×
219
    }
220
    return reader;
1✔
221
  }
222

223
  /**
224
   * Returns a resource on the classpath as a File object
225
   *
226
   * @param resource
227
   *          The resource to find
228
   *
229
   * @return The resource
230
   *
231
   * @throws java.io.IOException
232
   *           If the resource cannot be found or read
233
   */
234
  public static File getResourceAsFile(String resource) throws IOException {
235
    return Path.of(getResourceURI(resource)).toFile();
1✔
236
  }
237

238
  /**
239
   * Returns a resource on the classpath as a File object
240
   *
241
   * @param loader
242
   *          - the classloader used to fetch the resource
243
   * @param resource
244
   *          - the resource to find
245
   *
246
   * @return The resource
247
   *
248
   * @throws java.io.IOException
249
   *           If the resource cannot be found or read
250
   */
251
  public static File getResourceAsFile(ClassLoader loader, String resource) throws IOException {
252
    return Path.of(getResourceURI(loader, resource)).toFile();
×
253
  }
254

255
  /**
256
   * Gets a URL as an input stream
257
   *
258
   * @param urlString
259
   *          - the URL to get
260
   *
261
   * @return An input stream with the data from the URL
262
   *
263
   * @throws java.io.IOException
264
   *           If the resource cannot be found or read
265
   */
266
  public static InputStream getUrlAsStream(String urlString) throws IOException {
267
    URL url = new URL(urlString);
×
268
    URLConnection conn = url.openConnection();
×
269
    return conn.getInputStream();
×
270
  }
271

272
  /**
273
   * Gets a URL as a Reader
274
   *
275
   * @param urlString
276
   *          - the URL to get
277
   *
278
   * @return A Reader with the data from the URL
279
   *
280
   * @throws java.io.IOException
281
   *           If the resource cannot be found or read
282
   */
283
  public static Reader getUrlAsReader(String urlString) throws IOException {
284
    Reader reader;
285
    if (charset == null) {
×
286
      reader = new InputStreamReader(getUrlAsStream(urlString));
×
287
    } else {
288
      reader = new InputStreamReader(getUrlAsStream(urlString), charset);
×
289
    }
290
    return reader;
×
291
  }
292

293
  /**
294
   * Gets a URL as a Properties object
295
   *
296
   * @param urlString
297
   *          - the URL to get
298
   *
299
   * @return A Properties object with the data from the URL
300
   *
301
   * @throws java.io.IOException
302
   *           If the resource cannot be found or read
303
   */
304
  public static Properties getUrlAsProperties(String urlString) throws IOException {
305
    Properties props = new Properties();
×
306
    try (InputStream in = getUrlAsStream(urlString)) {
×
307
      props.load(in);
×
308
    }
309
    return props;
×
310
  }
311

312
  /**
313
   * Loads a class
314
   *
315
   * @param className
316
   *          - the class to fetch
317
   *
318
   * @return The loaded class
319
   *
320
   * @throws ClassNotFoundException
321
   *           If the class cannot be found (duh!)
322
   */
323
  public static Class<?> classForName(String className) throws ClassNotFoundException {
324
    return classLoaderWrapper.classForName(className);
×
325
  }
326

327
  public static Charset getCharset() {
328
    return charset;
×
329
  }
330

331
  public static void setCharset(Charset charset) {
332
    Resources.charset = charset;
×
333
  }
×
334

335
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc