package pta.de.core.common.util;

import org.apache.commons.io.IOUtils;

import java.io.InputStream;
import java.io.StringWriter;

public class ResourceLoaderBase {
    private String stream2String(InputStream is) {
        StringWriter writer = new StringWriter();
        try {
            IOUtils.copy(is, writer, "UTF-8");
        } catch (Exception e) { // NOSONAR
            return "";
        }
        return writer.toString();


    }

    public String loadStringFromResource(String filename) {
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        InputStream jsonstream = classLoader.getResourceAsStream(filename);
        return stream2String(jsonstream);
    }
}
