in generic/src/main/java/org/netbeans/html/presenters/spi/Generic.java [918:969]
final Object exec(int id, String fn) {
assert Thread.holdsLock(lock());
boolean first;
{
Frame c = topMostCall();
if (c instanceof CallJavaMethod && ((CallJavaMethod)c).method != null) {
c.inJava();
lock().notifyAll();
}
}
EvalJavaScript myCall;
boolean load;
Frame top = topMostCall();
if (top instanceof DeferJavaScript) {
((DeferJavaScript) top).sb.append(fn);
fn = ((DeferJavaScript) top).sb.toString();
top = top.prev;
}
if (top != null) {
myCall = registerCall(new EvalJavaScript(id, top, fn));
load = synchronous;
first = false;
} else {
myCall = registerCall(new EvalJavaScript(id, null, fn));
load = true;
first = true;
}
if (load) {
loadJS(fn);
}
for (;;) {
if (myCall.typeof != null) {
break;
}
try {
lock().wait();
} catch (InterruptedException ex) {
log(Level.SEVERE, null, ex);
}
Frame c = topMostCall();
if (c != null) {
c.inJava();
}
lock().notifyAll();
}
Object ret = valueOf(myCall.typeof, (String) myCall.result);
if (first) {
arguments.clear();
}
return ret;
}