Produce a reader from this source. @throws IOException When something goes wrong creating a reader from this source.
()
| 334 | * source. |
| 335 | */ |
| 336 | @NotNull |
| 337 | public final Reader reader() throws IOException { |
| 338 | try { |
| 339 | if (string != null) { |
| 340 | if (resolve) { |
| 341 | InputStream s = Source.class.getResourceAsStream(string); |
| 342 | |
| 343 | if (s != null) |
| 344 | return new Source(null, null, charsetName, charset, charsetDecoder, null, s, null, length, false).reader(); |
| 345 | |
| 346 | File f = new File(string); |
| 347 | |
| 348 | if (f.exists()) |
| 349 | return new Source(null, null, charsetName, charset, charsetDecoder, null, null, f, length, false).reader(); |
| 350 | } |
| 351 | |
| 352 | return new StringReader(string); |
| 353 | } |
| 354 | else if (bytes != null) { |
| 355 | if (length > -1) |
| 356 | return inputStreamReader(new ByteArrayInputStream(bytes, 0, length)); |
| 357 | else |
| 358 | return inputStreamReader(new ByteArrayInputStream(bytes)); |
| 359 | } |
| 360 | else if (reader != null) { |
| 361 | if (length > -1) |
| 362 | return new LengthLimitedReader(reader, length); |
| 363 | else |
| 364 | return reader; |
| 365 | } |
| 366 | else if (inputStream != null) { |
| 367 | if (length > -1) |
| 368 | return inputStreamReader(new LengthLimitedInputStream(inputStream, length)); |
| 369 | else |
| 370 | return inputStreamReader(inputStream); |
| 371 | } |
| 372 | else if (file != null) |
| 373 | return new BufferedReader(inputStreamReader(new FileInputStream(file))); |
| 374 | else |
| 375 | throw new IllegalStateException("Could not produce a reader from this source"); |
| 376 | } |
| 377 | catch (java.io.IOException e) { |
| 378 | throw new IOException(e.getMessage(), e); |
| 379 | } |
| 380 | } |
| 381 | |
| 382 | static class LengthLimitedInputStream extends InputStream { |
| 383 | final InputStream is; |
no test coverage detected