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