private boolean changed = false;
/** the script on the static node of this template, null if it has already been executed */
- private CompiledFunction staticscript = null;
+ private JS.CompiledFunction staticscript = null;
/** the script on this node */
- private CompiledFunction script = null;
+ private JS.CompiledFunction script = null;
/** during XML parsing, this holds the list of currently-parsed children; null otherwise */
private Vec childvect = new Vec();
if (redirect != null && !"self".equals(redirect)) redir = (Box)b.get("$" + redirect);
if (script != null) try {
- script.cloneWithNewParentScope(b).call(new Array());
- } catch (IOException e) {
- throw new Error("this should never happen");
+ script.call(new JS.Array(), b);
} catch (JS.Exn e) {
if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e.getMessage());
}
for(int i=0; keys != null && i<keys.length; i++) {
- // FIXME: make sure that if exceptions are thrown in here, the line number of the offending XML is logged
- if (keys[i] == null) { }
- else if (keys[i].equals("border") || keys[i].equals("image") &&
- !vals[i].toString().startsWith("http://") && !vals[i].toString().startsWith("https://")) {
- String s = Resources.resolve(vals[i].toString() + ".png", importlist);
- if (s != null) b.put(keys[i], s.substring(0, s.length() - 4));
- else if (Log.on) Log.log(this, "unable to resolve image " + vals[i].toString() + " referenced in attributes of " + nodeName);
+ try {
+ if (keys[i] == null) { }
+ else if (keys[i].equals("border") || keys[i].equals("image") &&
+ !vals[i].toString().startsWith("http://") && !vals[i].toString().startsWith("https://")) {
+ String s = Resources.resolve(vals[i].toString() + ".png", importlist);
+ if (s != null) b.put(keys[i], s.substring(0, s.length() - 4));
+ else if (Log.on) Log.log(this, "unable to resolve image " + vals[i].toString() + " referenced in attributes of " + nodeName);
+ }
+ else b.put(keys[i], vals[i]);
+ } catch(JS.Exn e) {
+ if(Log.on) Log.log(this,"WARNING: uncaught ecmascript exception while putting attr \"" + keys[i] +
+ "\" of " + nodeName + " : " + e.getMessage());
}
- else b.put(keys[i], vals[i]);
}
if (redirect != null && !"self".equals(redirect)) b.redirect = redir;
if (callback != null)
try {
- Array args = new Array();
- args.addElement(new Double(numerator));
- args.addElement(new Double(denominator));
+ JS.Array args = new JS.Array();
+ args.addElement(new Double(numerator));
+ args.addElement(new Double(denominator));
callback.call(args);
} catch (JS.Exn e) {
if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e);
}
if (Thread.currentThread() instanceof ThreadMessage) try {
- XWT.sleep(0);
+ XWT.sleep(0);
} catch (JS.Exn e) {
- if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e);
+ if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e);
}
}
if (callback != null)
try {
- Array args = new Array();
- args.addElement(new Double(1.0));
- args.addElement(new Double(1.0));
+ JS.Array args = new JS.Array();
+ args.addElement(new Double(1.0));
+ args.addElement(new Double(1.0));
callback.call(args);
} catch (JS.Exn ex) {
if (Log.on) Log.log(Template.class, "WARNING: uncaught ecmascript exception: " + ex.getMessage());
/** template reapplication procedure */
private static void reapply(Box b) {
- Log.log(Template.class, "Template.reapply() not implemented");
- /*
+ Log.log(Template.class, "Template.reapply() not implemented");
+ /*
// Ref 7.5.1: check if we need to retemplatize
boolean retemplatize = false;
if (b.templatename != null) {
// Recurse
for(Box j = b.getChild(0); j != null; j = j.nextSibling()) reapply(j);
- */
+ */
}
/** runs statics, resolves string references to other templates into actual Template instance references, and sets <tt>change</tt> as needed */
if (staticscript != null) try {
JS.Scope s = Static.createStatic(nodeName, false);
if (staticscript != null) {
- CompiledFunction temp = staticscript;
+ JS.CompiledFunction temp = staticscript;
staticscript = null;
- // we layer a transparent scope over the Static so that we can catch requests for the xwt object
- // yet not screw up paths that include a package called xwt (ie xwt.static.org.xwt.foo)
- JS.Scope varScope = new JS.Scope(s) {
- public boolean isTransparent() { return true; }
- public Object get(Object key) {
- if ("xwt".equals(key)) return XWT.singleton; else return super.get(key);
- } };
+ // we layer a transparent scope over the Static so that we can catch requests for the xwt object
+ // yet not screw up paths that include a package called xwt (ie xwt.static.org.xwt.foo)
+ JS.Scope varScope = new JS.Scope(s) {
+ public boolean isTransparent() { return true; }
+ public Object get(Object key) {
+ if ("xwt".equals(key)) return XWT.singleton; else return super.get(key);
+ } };
- temp.cloneWithNewParentScope(varScope).call(null);
+ temp.call(new JS.Array(), varScope);
}
- } catch (IOException e) {
- throw new Error("this should never happen");
} catch (JS.Exn e) {
if (Log.on) Log.log(this, "WARNING: uncaught ecmascript exception: " + e.getMessage());
}
if (t.redirect != null)
throw new XML.SchemaException("the <redirect> header element may not appear more than once");
t.redirect = c.vals[0].toString();
+ if(t.redirect.equals("null")) t.redirect = null;
return;
} else if (c.localName.equals("preapply")) {
}
}
- private CompiledFunction genscript(boolean isstatic) {
- CompiledFunction thisscript = null;
+ private JS.CompiledFunction genscript(boolean isstatic) {
+ JS.CompiledFunction thisscript = null;
try {
- thisscript = JS.parse(t.nodeName + (isstatic ? "._" : ""), t.content_start, new StringReader(t.content.toString()), null);
+ thisscript = JS.parse(t.nodeName + (isstatic ? "._" : ""), t.content_start, new StringReader(t.content.toString()));
} catch (JS.Exn ee) {
if (Log.on) Log.log(this, " ERROR: " + ee.getMessage());
thisscript = null;