File.java

  1. /*
  2.  * @copyright defined in LICENSE.txt
  3.  */

  4. package ship.build.res;

  5. import hera.util.DangerousSupplier;
  6. import java.io.BufferedReader;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import lombok.Getter;
  11. import lombok.Setter;
  12. import ship.build.Resource;
  13. import ship.util.FileOpener;

  14. public class File extends Resource {

  15.   @Getter
  16.   @Setter
  17.   protected DangerousSupplier<InputStream> contentProvider;

  18.   public File(final Project project, final String path) {
  19.     super(project, path);
  20.     contentProvider = new FileOpener(getPath());
  21.   }

  22.   /**
  23.    * Open file and return {@link BufferedReader}.
  24.    *
  25.    * @return buffered reader
  26.    *
  27.    * @throws IOException Fail to open
  28.    */
  29.   public BufferedReader open() throws IOException {
  30.     try {
  31.       return new BufferedReader(new InputStreamReader(contentProvider.get()));
  32.     } catch (final IOException ex) {
  33.       logger.error("Fail to open {}", getPath());
  34.       throw ex;
  35.     } catch (final Throwable ex) {
  36.       throw new IllegalStateException(ex);
  37.     }
  38.   }
  39. }