package com.github.dreamhead.moco.resource.reader; import com.github.dreamhead.moco.MocoException; import com.github.dreamhead.moco.Request; import com.github.dreamhead.moco.resource.Resource; import com.google.common.base.Optional; import java.io.IOException; import java.net.URL; import java.nio.charset.Charset; import static com.google.common.io.ByteStreams.toByteArray; import static java.lang.String.format; public class ClasspathFileResourceReader extends AbstractFileResourceReader { public ClasspathFileResourceReader(final Resource filename, final Optional<Charset> charset) { super(filename, charset); } protected byte[] doReadFor(final Optional<? extends Request> request) { ClassLoader classLoader = this.getClass().getClassLoader(); String actualFilename = this.filename(request); URL resource = classLoader.getResource(actualFilename); if (resource == null) { throw new IllegalArgumentException(format("%s does not exist", actualFilename)); } try { return toByteArray(resource.openStream()); } catch (IOException e) { throw new MocoException(e); } } }