/**
******************************************************************************
* Copyright © 2018 PTA GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* 
*     http://www.eclipse.org/legal/epl-v10.html
* 
******************************************************************************
*/

package org.eclipse.openk.mics.home.common.util;

import java.io.InputStream;
import java.io.StringWriter;
import org.apache.commons.io.IOUtils;

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);
    }
}
