package com.openedit.entermedia.scripts;
import java.util.Iterator;
import java.util.Map;
import bsh.EvalError;
import bsh.Interpreter;
import bsh.TargetError;
import com.openedit.OpenEditException;
public class BshScriptRunner implements ScriptRunner
{
@Override
public Object exec(Script inScript, Map variableMap) throws OpenEditException
{
String path = inScript.getPage().getPath();
try {
Interpreter i = new Interpreter();
for (Iterator iterator = variableMap.keySet().iterator(); iterator.hasNext();)
{
String key = (String) iterator.next();
i.set(key,variableMap.get(key));
}
Object obj = i.source(inScript.getPage().getContentItem().getAbsolutePath());
return obj;
} catch ( TargetError e ) {
throw new OpenEditException("line: " + e.getErrorLineNumber()+ " " + path + " " + e.getTarget(), e.getTarget(), path);
} catch ( EvalError e2 ) {
//throw new OpenEditException("line: " + e2.getErrorLineNumber()+ " " + e2.getMessage(), e2, path);
throw new OpenEditException(e2.getMessage(), e2, path);
}
catch ( OpenEditException ex)
{
throw ex;
}
catch ( Exception ex)
{
throw new OpenEditException(ex);
}
}
}