package com.openedit.entermedia.scripts;
import java.util.Iterator;
import java.util.Map;
import org.apache.bsf.BSFException;
import org.apache.bsf.BSFManager;
import com.openedit.OpenEditException;
public class BsfScriptRunner implements ScriptRunner
{
@Override
public Object exec(Script inScript, Map context) throws OpenEditException
{
BSFManager bsfManager = new BSFManager();
try
{
// expose standard items in the context
for (Iterator iter = context.keySet().iterator(); iter.hasNext();)
{
String element = (String) iter.next();
Object val = context.get(element);
if( val != null)
{
bsfManager.declareBean(element, val, val.getClass());
}
}
bsfManager.exec(
BSFManager.getLangFromFilename(inScript.getDescription()),
inScript.getDescription(),
0,
0,
inScript.getScriptText());
}
catch( BSFException ex)
{
Throwable ext = ex.getTargetException();
if( ext instanceof OpenEditException)
{
throw (OpenEditException)ext;
}
throw new OpenEditException(ext);
}
return null;
}
}