package org.xmlsh.core; import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.io.UnsupportedEncodingException; import java.net.URISyntaxException; import java.net.URL; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.xmlsh.sh.module.Resource; import org.xmlsh.sh.module.ResourceID; import org.xmlsh.util.Util; public class ScriptSource extends Resource { public String mScriptBody; public String mEncoding; static Logger mLogger = LogManager.getLogger(); public ScriptSource(String scriptName, URL scriptURL, String encoding) throws URISyntaxException { super(new ResourceID(scriptName, scriptURL.toURI()), scriptURL); mEncoding = encoding; } public ScriptSource(String scriptName, String scriptBody) { super(new ResourceID(scriptName), null); mScriptBody = scriptBody; } public String getScriptName() { return super.getName(); } public Reader openReader() throws UnsupportedEncodingException, IOException { if(!isOpaque()) return new InputStreamReader(super.getURL().openStream(), mEncoding); else if(mScriptBody != null) return Util.toReader(mScriptBody); else throw new IOException("Script body is empty"); } }