2004/01/07 20:37:32
[org.ibex.core.git] / src / org / xwt / Template.java
index 87d5a63..f85f3a7 100644 (file)
@@ -62,7 +62,8 @@ public class Template {
             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());
         }
     }
 
@@ -108,15 +109,13 @@ public class Template {
      *  @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;
         }
     }
 
@@ -132,10 +131,11 @@ public class Template {
         }
 
         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);
@@ -164,7 +164,12 @@ public class Template {
                 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;
+            }
         }
     }