Revision: 2462
          http://vexi.svn.sourceforge.net/vexi/?rev=2462&view=rev
Author:   mkpg2
Date:     2007-10-14 17:10:30 -0700 (Sun, 14 Oct 2007)

Log Message:
-----------
Medium part theory of some things. 

Modified Paths:
--------------
    trunk/core/org.vexi.core/src/org/vexi/core/Blessing.java
    trunk/core/org.vexi.core/src/org/vexi/core/Template.java
    trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java
    trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
    trunk/core/org.vexi.core/src_junit/test/core/gut/theming.t

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Blessing.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Blessing.java    2007-10-14 
23:54:04 UTC (rev 2461)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Blessing.java    2007-10-15 
00:10:30 UTC (rev 2462)
@@ -8,6 +8,7 @@
 import org.ibex.js.JSArrayLike;
 import org.ibex.js.JSExn;
 import org.ibex.js.JSU;
+import org.ibex.js.Thread;
 import org.ibex.util.Basket;
 
 public class Blessing extends JS.Clone implements Cloneable, Constants {
@@ -21,7 +22,8 @@
     public JS parentkey = null;
     public Blessing parent = null;
 
-       private Basket.Map cache = new Basket.Hash(); 
+    //OPTIMIZE - use our own hash map
+       private Basket.Map cache = new Basket.Hash();  
     boolean initializing = false;
     Blessing(JS clonee, JS vexi, Blessing parent, JS parentkey) throws JSExn {
         super(clonee);
@@ -30,6 +32,14 @@
         this.parent = parent;
     }
 
+    public JS getAndTriggerTraps(JS key) throws JSExn {
+       Trap t = (Trap)super.get(key, 1);
+       // REMARK - We're not like Clone here, we don't check the clonee's traps
+       // (since we do it in the get method)
+        if(t==null || (t = t.read())==null) return get(key);
+        return Thread.runInCurrent(t);
+    }
+    
     public JS get(JS key) throws JSExn {
        // FEATURE - do we need to resolve here? We can resolve later perhaps, 
so
        // if you refer to a template but don't use it then it won't get 
resolved?
@@ -49,7 +59,8 @@
                return ret;
             }
         }
-        JS ret = new Blessing(super.getAndTriggerTraps(key), vexi, this, key);
+        // REMARK - calling getAndTriggerTraps in a plain get?
+        JS ret = new Blessing(clonee.getAndTriggerTraps(key), vexi, this, key);
         cache.put(key, ret);
         return ret;
     }
@@ -107,6 +118,7 @@
         try{
                if(parent==null) return;
                JS res = parent.getTemplateRes(parentkey);
+               unresolved.staticPart.sourceName = description();
                t = TemplateBuilder.build(unresolved, res);
         }finally{
                initializing = false;
@@ -116,7 +128,7 @@
     private JS getTemplateRes(JS key) throws JSExn{
        String key_ = JSU.toString(key);
        if(!key_.endsWith(".t")) key = JSU.S(key_ + ".t");
-       return super.getAndTriggerTraps(key);
+       return JSU.unclone(clonee).getAndTriggerTraps(key);
     }
     
     JS getStatic() throws JSExn {

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Template.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Template.java    2007-10-14 
23:54:04 UTC (rev 2461)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Template.java    2007-10-15 
00:10:30 UTC (rev 2462)
@@ -206,7 +206,7 @@
                                                val = (JS) 
uriPrefixes.get(JSU.S(ab[0]), true);
                                        while(ab.length==2 && val!=null){
                                                ab = ab[1].split("\\.",2);
-                                               val = val.get(JSU.S(ab[0]));
+                                               val = 
val.getAndTriggerTraps(JSU.S(ab[0]));
                                        }
                                }
                                if(val==null) throw new JSExn(valStr + " 
evaluates to null");

Modified: trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java     
2007-10-14 23:54:04 UTC (rev 2461)
+++ trunk/core/org.vexi.core/src/org/vexi/core/TemplateBuilder.java     
2007-10-15 00:10:30 UTC (rev 2462)
@@ -106,11 +106,10 @@
                                }else{
                                        Log.uWarn(LOG_TYPE, "'" +  
unresolved.staticPart.sourceName + ".t' does not declare a template");
                                }
-                               // required?
-                               //}finally{
-                       //is.close();
-                       //}
                        }
+                       //else{
+                       //      throw new JSExn("no template: " + 
JSU.getFountain(s).canonical());
+                       //}
                }catch(JSExn e){
                        throw e;
                }catch(Wrapper e){

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2007-10-14 23:54:04 UTC 
(rev 2461)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2007-10-15 00:10:30 UTC 
(rev 2462)
@@ -11,7 +11,6 @@
 import org.ibex.js.JSExn;
 import org.ibex.js.JSRegexp;
 import org.ibex.js.JSU;
-import org.ibex.js.Scheduler;
 import org.ibex.js.Thread;
 import org.ibex.js.XMLRPC;
 import org.ibex.util.Cache;
@@ -51,10 +50,10 @@
         while (str.indexOf('.') != -1) {
             String path = str.substring(0, str.indexOf('.'));
             str = str.substring(str.indexOf('.') + 1);
-            ret = ret.get(JSU.S(path));
+            ret = ret.getAndTriggerTraps(JSU.S(path));
         }
         try {
-            if (!"".equals(str)) ret = ret.get(JSU.S(str));
+            if (!"".equals(str)) ret = ret.getAndTriggerTraps(JSU.S(str));
         } catch (NullPointerException npe) {
             throw new JSExn("Invalid starting directory specified: "+str);
         }

Modified: trunk/core/org.vexi.core/src_junit/test/core/gut/theming.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/gut/theming.t  2007-10-14 
23:54:04 UTC (rev 2461)
+++ trunk/core/org.vexi.core/src_junit/test/core/gut/theming.t  2007-10-15 
00:10:30 UTC (rev 2462)
@@ -11,19 +11,13 @@
     <ui:box>
         <vexi.theme.a id="a"/>
         <vexi.theme.b id="b"/>
-        
-        .util..assertEquals("vexi.theme.a",$a.name);
-        .util..assertEquals("vexi.theme.a",.vexi.theme.a..name);
+                       
+               .util..assertEquals("themeimpl.b",$b.name);
+        .util..assertEquals("themeimpl.b",.vexi.theme.b..name);
                
-        vexi.log.warn(.tempimpl.a..name);
+        .util..assertEquals("themeimpl.a",$a.name);
+        .util..assertEquals("themeimpl.a",.vexi.theme.a..name);
                
-        // TODO decide what should happen. Obviously
-               // b was accessed once, before being applied to vexi.theme
-               // should it be two seperate templates?
-               vexi.log.warn($b.name);
-               vexi.log.warn(.vexi.theme.b..name);
-
-    
                        
     </ui:box>
 </vexi>


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to