LoadFromURL.java

  1. package org.jbehave.core.io;

  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.net.URL;
  5. import java.nio.charset.Charset;
  6. import java.nio.charset.StandardCharsets;

  7. import org.apache.commons.io.IOUtils;

  8. /**
  9.  * Loads story resources from URL
  10.  */
  11. public class LoadFromURL implements ResourceLoader, StoryLoader {

  12.     private final Charset charset;

  13.     public LoadFromURL() {
  14.         this(StandardCharsets.UTF_8);
  15.     }

  16.     public LoadFromURL(Charset charset) {
  17.         this.charset = charset;
  18.     }

  19.     @Override
  20.     public String loadResourceAsText(String resourcePath) {
  21.         try (InputStream resourceAsStream = resourceAsStream(resourcePath)) {
  22.             return IOUtils.toString(resourceAsStream, charset);
  23.         } catch (Exception cause) {
  24.             throw new InvalidStoryResource(resourcePath, cause);
  25.         }
  26.     }

  27.     @Override
  28.     public String loadStoryAsText(String storyPath) {
  29.         return loadResourceAsText(storyPath);
  30.     }

  31.     protected InputStream resourceAsStream(String resourcePath) throws IOException {
  32.         return new URL(resourcePath).openStream();
  33.     }

  34. }