r.t = new Template(r);
new TemplateHelper().parseit(r.getInputStream(), r.t);
return r.t;
- } catch (Exception e) { throw new JSExn(e.toString());
+ } catch (Exception e) {
+ throw new JSExn("Error reading template stream: " + r + "\n" + e.toString());
}
}
* @param pboxes a vector of all box parents on which to put $-references
* @param ptemplates a vector of the fileNames to recieve private references on the pboxes
*/
- void apply(Box b, XWT xwt) {
+ void apply(Box b, XWT xwt) throws JSExn {
try {
apply(b, xwt, null);
} catch (JSExn e) {
b.clear(b.VISIBLE);
b.mark_for_repack();
- Log.info(Template.class, "WARNING: exception (below) thrown during application of template;");
- Log.info(Template.class, " setting visibility of target box to \"false\"");
- JS.log(e);
+ throw e;
}
}
}
PerInstantiationJSScope pis = new PerInstantiationJSScope(b, xwt, parentPis, staticScope);
+
for (int i=0; children != null && i<children.size(); i++) {
Box kid = new Box();
((Template)children.elementAt(i)).apply(kid, xwt, pis);
- b.putAndTriggerTraps(JS.N(b.treeSize()), kid);
+ b.putAndTriggerTraps(b.get("numchildren"), kid);
}
if (script != null) script.cloneWithNewParentScope(pis).call(null, null, null, null, 0);
if (val == null) throw new JSExn("redirect target '"+vals[i]+"' not found");
}
- b.putAndTriggerTraps(key, val);
+ try {
+ b.putAndTriggerTraps(key, val);
+ } catch(JSExn e) {
+ e.addBacktrace(fileName + ":attr-" + key,0);
+ throw e;
+ }
}
}