INTEGRATION: CWS scriptingf7 (1.3.14); FILE MERGED

2004/07/14 09:07:10 npower 1.3.14.3: #i25260# Editors changes to support new methods in ScriptEditor interface { execute & indicateErrorLine }. ScriptProviders now raise editors with line of error highlighted.
2004/07/12 16:34:37 npower 1.3.14.2: #i25260# Changes to support error displayed in IDE for javascript and beanshell when script that is invoked is opened in IDE
Issue number:
Submitted by:
Reviewed by:
2004/06/30 11:57:37 npower 1.3.14.1: #i25870# Changes to BeanshellProvider and editor to make sure that the classloader is setup correctly such that scripts run from the IDE use the classpath defined in parcel-descriptor.xml
This commit is contained in:
Jens-Heiner Rechtien
2004-07-23 13:03:38 +00:00
parent 679b4b044c
commit 3637361af0

View File

@@ -2,9 +2,9 @@
*
* $RCSfile: ScriptSourceModel.java,v $
*
* $Revision: 1.3 $
* $Revision: 1.4 $
*
* last change: $Author: svesik $ $Date: 2004-04-19 23:11:30 $
* last change: $Author: hr $ $Date: 2004-07-23 14:03:38 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -126,36 +126,58 @@ public class ScriptSourceModel {
return false;
}
public void execute(final XScriptContext context)
throws InvocationTargetException
public Object execute(final XScriptContext context, ClassLoader cl )
throws Exception
{
Object result = null;
// Thread execThread = new Thread() {
// public void run() {
if ( cl != null )
{
// sets this threads class loader
// hopefully any threads spawned by this
// will inherit this cl
// this enables any class files imported
// from the interpreter to be loaded
// note: setting the classloader on the
// interpreter has a slightly different
// meaning in that the classloader for
// the interpreter seems only to look for
// source files ( bla.java ) in the classpath
Thread.currentThread().setContextClassLoader(cl);
}
bsh.Interpreter interpreter = new bsh.Interpreter();
interpreter.getNameSpace().clear();
if ( cl != null )
{
// additionally set class loader on the interpreter
// to allow it to load java classes defined in source
// files e.g. bla.java
interpreter.getNameSpace().clear();
}
// reset position
currentPosition = -1;
view.update();
try {
interpreter.set("context", context);
interpreter.set("ARGUMENTS", new Object[0]);
interpreter.set("context", context);
interpreter.set("ARGUMENTS", new Object[0]);
if (view.isModified()) {
interpreter.eval(view.getText());
}
else {
interpreter.eval(getText());
}
if (view.isModified()) {
result = interpreter.eval(view.getText());
}
catch (bsh.EvalError err) {
currentPosition = err.getErrorLineNumber() - 1;
view.update();
throw new InvocationTargetException(err, err.getErrorText());
else {
result = interpreter.eval(getText());
}
// }
// };
// execThread.start();
return result;
}
public void indicateErrorLine( int lineNum )
{
System.out.println("Beanshell indicateErrorLine " + lineNum );
currentPosition = lineNum - 1;
view.update();
}
}