Revision: 3100
          http://vexi.svn.sourceforge.net/vexi/?rev=3100&view=rev
Author:   mkpg2
Date:     2008-08-28 21:41:31 +0000 (Thu, 28 Aug 2008)

Log Message:
-----------
Development.
  - reorganized js, separating out 'standard' and vexi specific parts
  - moved stream code to js
  - redone stream api, utf8reader and utf8writer replaced parse.utf8 and 
write.utf8
Consequence
  - explicit call to vexi.cache is required when loading vexi archives from 
vexi.
 

Modified Paths:
--------------
    trunk/core/org.vexi.core/src/org/vexi/core/Constants.java
    trunk/core/org.vexi.core/src/org/vexi/core/Resources.java
    trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
    trunk/core/org.vexi.core/src_junit/org/vexi/core/TestResources.java
    trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertbiscuit.t
    trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertempty.t
    trunk/core/org.vexi.core/src_junit/test/core/biscuits/createbiscuit.t
    trunk/core/org.vexi.core/src_junit/test/core/download/splashtest.t

Added Paths:
-----------
    trunk/core/org.vexi.core/src_junit/test/core/general/accessresource.t
    trunk/core/org.vexi.core/src_junit/test/core/general/test.xml

Removed Paths:
-------------
    trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java
    trunk/core/org.vexi.core/src_junit/test/core/stream/accessresource.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/parsemptyxml.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/progress.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf8.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf82.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadxml.t
    trunk/core/org.vexi.core/src_junit/test/core/stream/test.xml

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Constants.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Constants.java   2008-08-28 
02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Constants.java   2008-08-28 
21:41:31 UTC (rev 3100)
@@ -15,12 +15,10 @@
     static final JS SC_align_bottom = JSU.S("bottom",true);
     static final JS SC_align_bottomright = JSU.S("bottomright",true);
        static final JS SC_box = JSU.S("box",true);
-       static final JS SC_characters = JSU.S("characters",true);
        static final JS SC_Children = JSU.S("Children",true);
        static final JS SC_contentheight = JSU.S("contentheight",true);
        static final JS SC_contentwidth = JSU.S("contentwidth",true);
        static final JS SC_cursor = JSU.S("cursor",true);
-       static final JS SC_endElement = JSU.S("endElement",true);
        static final JS SC_Enter = JSU.S("Enter",true);
        static final JS SC_fill = JSU.S("fill",true);
     static final JS SC_font = JSU.S("font",true);
@@ -47,14 +45,12 @@
        static final JS SC__Press3 = JSU.S("_Press3",true);
        static final JS SC_redirect = JSU.S("redirect",true);
        static final JS SC_shrink = JSU.S("shrink",true);
-       static final JS SC_startElement = JSU.S("startElement",true);
        static final JS SC_stringify = JSU.S("stringify",true);
        static final JS SC_surface = JSU.S("surface",true);
        static final JS SC_titlebar = JSU.S("titlebar",true);
     static final JS SC_vertical = JSU.S("vertical",true);
        static final JS SC_visible = JSU.S("visible",true);
        static final JS SC_vshrink = JSU.S("vshrink",true);
-       static final JS SC_whitespace = JSU.S("whitespace",true);
        static final JS SC_width = JSU.S("width",true);
        static final JS SC_x = JSU.S("x",true);
        static final JS SC_y = JSU.S("y",true);

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Resources.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Resources.java   2008-08-28 
02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Resources.java   2008-08-28 
21:41:31 UTC (rev 3100)
@@ -1,37 +1,15 @@
 package org.vexi.core;
 
 import java.awt.Font;
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Vector;
+import java.io.*;
+import java.text.*;
+import java.util.*;
 
-import org.ibex.js.Fountain;
-import org.ibex.js.JS;
-import org.ibex.js.JSExn;
-import org.ibex.js.JSU;
+import org.ibex.js.*;
+import org.ibex.js.JS.*;
 import org.ibex.js.JS.Enumeration;
-import org.ibex.js.JS.Keys;
-import org.ibex.js.JSU.Wrapper;
-import org.ibex.util.Basket;
-import org.ibex.util.Callable;
-import org.ibex.util.Encode;
-import org.ibex.util.IOUtil;
-import org.ibex.util.Log;
-import org.ibex.util.Tree;
-import org.ibex.util.XML;
-import org.ibex.util.Basket.Stack;
-import org.vexi.plat.Platform;
+import org.ibex.util.*;
+import org.vexi.js.*;
 
 /**
  * Roughly encapsulates the vexi cache (.vexi directory) 
@@ -99,40 +77,18 @@
 
        
     // TODO - move to constructor of Fountain.Multiple
-    public static JS multiple(final JS[] streams) throws JSExn{
-       /*if(streams.length==0) return null;
-       if(streams.length==1){
-               return streams[0];
-       }else{*/        
-               try{
-                       // REMARK - ignoring non-cacheable (i.e. fountains 
which aren't some
-                       // sort of directory) when more than one arg given.
-                       final
-                       Fountain.Multiple multiStream = new 
Fountain.Multiple(streams.length);
-                       for(int i=0; i<streams.length; i++){
-                               Fountain cacheable = 
JSU.getFountain(streams[i]);
-                               multiStream.addOverrideStream(cacheable);
-                       }
 
-                       return multiStream;
 
-               }catch(Exception e){
-                       throw new JSExn(e.getMessage());
-               }
-       //}
-    }
-
     
-    static public Fountain fountainForURL(final String url) throws JSExn{
-        Fountain r = _fountainForURL(url);
-        if(r==null) throw new JSExn("invalid resource specifier " + url);
-        return r;
-    }
-    
     static public Fountain fountainForArg(final String arg) throws IOException 
{
        Fountain r = null;
        try{
-               r = _fountainForURL(arg);
+               r = VexiJS._fountainForURL(arg);
+               if(r!=null){
+                       if(r instanceof Fountain.HTTP) 
+                               r = cache(r);
+               }
+               
                if(r==null){
                        if(arg.indexOf("!")!=-1){
                        // FEATURE - make recursive (any depth of wrapping)
@@ -167,29 +123,13 @@
                return null;
        }
     }
+
     
-    static Fountain _fountainForURL(final String url) throws JSExn{
-        if (url.startsWith("http://";) || url.startsWith("https://";)) {
-               Fountain r = new Fountain.HTTP(url);
-               // HACK - using filename (ideally would use mimetype)
-               // HACK? - automatically caching archives. It doesn't make too 
much
-               // sense to do otherwise
-               if (url.endsWith(".vexi")) return new CachedArchive(r);
-               return r;
-        }
-        else if (url.startsWith("data:")) return new 
Fountain.ByteArray(Encode.fromBase64(url.substring(5)));
-        else if (url.startsWith("utf8:")) return new 
Fountain.ByteArray(url.substring(5).getBytes());
-        // REMARK - not sure how to integrate file dialogs here. As we want to 
maintain a 
-        // distinction between opening for writing and opening for reading, 
for security reasons.
-        //else if (url.startsWith("file:")) {
-        //Platform.fileDialog(url.substring(5), false);
-        //}
-        return null;
-        
-    }
-    
     static  public Fountain cache(final JS stream) throws JSExn{
        Fountain f = JSU.getFountain(stream);
+       // HACK 
+       if(f.canonical().endsWith(".vexi"))
+               return new CachedArchive(f);
         return new CachedFile(f);
     }
 
@@ -448,163 +388,6 @@
        is.close();
     }
     
-       
-       static final int[] ARGTYPES_parseXML = new int[]{JSU.FOUNTAIN, JSU.OBJ};
-       public static void parseXML(JS[] args) throws JSExn{
-               JSU.checkArgs(args, ARGTYPES_parseXML);
-               new XMLHelper(args[1]).doParse(args[0]);
-               return;
-       }
-       
-       public static JS writeXML(JS[] args) throws JSExn {
-               JSU.checkArgs(args, Fountain.ARGTYPES_afountain);
-               try{
-                       final BufferedWriter out = new BufferedWriter(
-                                       new 
OutputStreamWriter(JSU.getOutputStream(args[0])));
-                       JS writer = new JS.Immutable(){
-                               Stack stack = new Basket.Array();
-                               
-                               public JS get(JS arg) throws JSExn {
-                                       String key = JSU.toString(arg);
-                                       if(key.equals("startElement") || 
-                                          key.equals("endElement") ||
-                                          key.equals("characters") ||
-                                          key.equals("close"))
-                                               return METHOD;
-                                       return super.get(arg);
-                               }
-                               
-                               public JS call(JS method, JS[] args) throws 
JSExn {
-                                       String key = JSU.toString(method);
-                                       try{
-                                       if(key.equals("startElement")){
-                                               String name = 
JSU.toString(args[0]);
-                                               stack.push(name);
-                                               
-                                               out.write("<" + name);
-                                               if(args.length>1){
-                                                       JS attrs = args[1];
-                                                       Enumeration E = 
attrs.keys().iterator();
-                                                       while(E.hasNext()){
-                                                               JS attrName = 
E.next();
-                                                               JS attrVal = 
attrs.get(attrName);
-                                                               out.write(" "+ 
JSU.toString(attrName)+"=\""+JSU.toString(attrVal)+"\"");
-                                                       }
-                                               }
-                                               out.write(">");
-                                               return null;
-                                       }else if(key.equals("endElement")){
-                                               String name = (String) 
stack.pop();
-                                               out.write("</"+name+">");
-                                               if(stack.size()==0){
-                                                       out.close();
-                                               }
-                                               return null;
-                                       }else if(key.equals("characters")){
-                                               String chars = 
JSU.toString(args[0]);
-                                               out.write(chars);
-                                               return null;
-                                       }else if(key.equals("close")){  
-                                               out.close();
-                                               return null;
-                                       }
-                                       }catch(IOException e){
-                                               throw JSU.handleFountainExn(e);
-                                       }
-                                       return super.call(method, args);
-                               }
-                       };
-                       return writer;
-               }catch(IOException e){
-                       throw JSU.handleFountainExn(e);
-               }
-       }
-       
-    
-    static private class XMLHelper extends XML {
-
-        
-        private JS characters, whitespace, endElement, startElement;
-        public XMLHelper(JS b) throws JSExn {
-            super(BUFFER_SIZE, true);
-            startElement = b.getAndTriggerTraps(SC_startElement);
-            endElement   = b.getAndTriggerTraps(SC_endElement);
-            characters   = b.getAndTriggerTraps(SC_characters);
-            whitespace   = b.getAndTriggerTraps(SC_whitespace);
-        }
-
-        private final JS[] callargs1 = new JS[1], callargs2 = new JS[2], 
callargs3 = new JS[3];
-        public void startElement(Tree.Element c) throws XML.Exn {
-               try {
-                Tree.Attributes a = c.getAttributes();
-                JS attrs = new JS.Obj();
-                // FIXME attribute URIs? add an additional hash?
-                for(int i=0; i<a.attrSize(); i++) 
attrs.put(JSU.S(a.getKey(i)), JSU.S(a.getVal(i)));
-                callargs3[0] = JSU.S(c.getLocalName());
-                callargs3[1] = attrs;
-                callargs3[2] = JSU.S(c.getUri());
-                startElement.call(null, callargs3);
-               } catch (JSExn jse) {
-                       throw new Wrapper(jse);
-               } finally {
-                       callargs3[0] = callargs3[1] = callargs3[2] = null;
-               }
-        }
-
-        public void endElement(Tree.Element c) throws XML.Exn {
-               try {
-                callargs2[0] = JSU.S(c.getLocalName());
-                callargs2[1] = JSU.S(c.getUri());
-                endElement.call(null, callargs2);
-               } catch (JSExn jse) {
-                       throw new Wrapper(jse);
-               } finally {
-                       callargs2[0] = callargs2[1] = null;
-               }
-        }
-        
-        public void characters(char[] ch, int start, int length) throws 
XML.Exn {
-               try {
-                callargs1[0] = JSU.S(new String(ch, start, length));
-                characters.call(null, callargs1);
-               } catch (JSExn jse) {
-                       throw new JSU.Wrapper(jse);
-               } finally {
-                       callargs1[0] = null;
-               }
-        }
-
-        public void whitespace(char[] ch, int start, int length) throws 
XML.Exn {
-               try {
-                callargs1[0] = JSU.S(new String(ch, start, length));
-                if(whitespace!=null)whitespace.call(null, callargs1);
-               } catch (JSExn jse) {
-                       throw new Wrapper(jse);
-               } finally {
-                       callargs1[0] = null;
-               }
-        }
-
-        public void doParse(JS s) throws JSExn {
-            try { 
-               InputStream is = JSU.getInputStream(s);
-               if(is==null) return;
-               BufferedReader br = new BufferedReader(new 
InputStreamReader(is)); 
-               try{
-                       parse(br);
-               }finally{
-                       br.close();
-               }
-            } catch (Wrapper e) {
-                throw e.wrapee;
-            } catch (XML.Exn e) {
-                throw new JSExn("error parsing XML: " + e.toString());
-            } catch (IOException e) {
-                throw JSU.handleFountainExn(e);
-            }
-        }
-    }
-
     ////////
     // FONT STUFF
 

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2008-08-28 02:44:12 UTC 
(rev 3099)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2008-08-28 21:41:31 UTC 
(rev 3100)
@@ -7,14 +7,8 @@
 import java.io.IOException;
 
 import org.ibex.crypto.MD5;
-import org.ibex.js.Fountain;
-import org.ibex.js.JS;
-import org.ibex.js.JSDate;
-import org.ibex.js.JSExn;
-import org.ibex.js.JSRegexp;
-import org.ibex.js.JSU;
-import org.ibex.js.XMLRPC;
-import org.ibex.js.Instr;
+import org.ibex.js.*;
+import org.vexi.js.*;
 import org.ibex.util.Cache;
 import org.ibex.util.Callable;
 import org.ibex.util.Encode;
@@ -91,6 +85,7 @@
         case "biscuits": return Resources.biscuits;
         case "bless": return METHOD;
         case "box": return new Box();
+        case "cache": return METHOD;
         case "clone": return METHOD;
         case "crypto": return getSub(name);
         case "crypto.md5": return METHOD;
@@ -102,41 +97,25 @@
         case "file.load": return METHOD;
         case "file.remove": return METHOD;
         case "file.save": return METHOD;
+        case "file.homedir": return VexiJS.fountainForURL("file:" + 
System.getProperty("user.home"));
+        case "file.tempdir": return VexiJS.fountainForURL("file:" + 
System.getProperty("java.io.tempdir"));
         case "js": return getSub(name);
         case "js.eval": return METHOD;
-        case "js.stringify": return METHOD;
+        case "js.stringify": return METHOD; 
         case "log": return getSub(name);
         case "log.debug": return METHOD;
         case "log.info": return METHOD;
         case "log.warn": return METHOD;
         case "log.error": return METHOD;
-        case "math": return vexiMath;
+        case "math": return VexiJS.math;
         case "net": return getSub(name);
         case "net.rpc": return getSub(name);
         case "net.rpc.soap": return METHOD;
         case "net.rpc.xml": return METHOD;
         case "params": return Main.params;
         case "regexp": return METHOD;
-        case "stream": return getSub(name);
-        case "stream.buffer": return METHOD;
-        case "stream.cache": return METHOD;
-        case "stream.multiple": return METHOD;
-        case "stream.nameOf": return METHOD;
-        case "stream.pipe": return METHOD;
-        case "stream.fromString": return METHOD;
-        case "stream.homedir": return Resources.fountainForURL("file:" + 
System.getProperty("user.home"));
-        case "stream.tempdir": return Resources.fountainForURL("file:" + 
System.getProperty("java.io.tempdir"));
-        case "stream.unzip": return METHOD;
-        case "stream.uncab": return METHOD;
-        case "stream.url": return METHOD;
-        case "stream.parse": return getSub(name);
-        case "stream.parse.html": return METHOD;
-        case "stream.parse.xml": return METHOD;
-        case "stream.parse.utf8": return METHOD;
-        case "stream.write": return getSub(name);
-        case "stream.write.xml": return METHOD;
-        case "stream.write.utf8": return METHOD;
-        case "string": return vexiString;
+        case "stream": return VexiJS.stream; 
+        case "string": return VexiJS.string;
         case "thread": return getSub(name);
         case "thread.yield": return METHOD;
         case "thread.sleep": return METHOD;
@@ -254,18 +233,17 @@
         try {
             //#switch(JSU.toString(method))
             case "bless":        return bless_jsthread(target, 
args[0],(args.length<2)?null:args[1]);
+            case "cache": return Resources.cache(args[0]);
             case "date": return new JSDate(args);
             case "file.load": return accessFile(args,false);
             case "file.save": return accessFile(args,true);
-            case "js.eval": return JSU.GLOBAL.call(SC_eval, args);
+            case "js.eval": return Methods.eval(args);
             // FIXME support object dumping
             case "log.debug":    if(args.length<1) JSU.debug(null); else 
JSU.debug(args[0]); return null;
             case "log.info":     if(args.length<1) JSU.info(null); else 
JSU.info(args[0]); return null;
             case "log.warn":     if(args.length<1) JSU.warn(null); else 
JSU.warn(args[0]); return null;
             case "log.error":    if(args.length<1) JSU.error(null); else 
JSU.error(args[0]); return null;
             case "net.rpc.soap": return new SOAP(JSU.toString(args[0]), 
JSU.toString(args[1]), JSU.toString(args[2]));
-            case "stream.buffer": return new 
Fountain.ByteArray(args.length>0?JSU.toInt(args[0]):8192);
-            case "stream.multiple": return Resources.multiple(args);
             //#end
  
             switch (args.length) {
@@ -290,22 +268,9 @@
                     case "crypto.sha1": /* FEATURE */ return null;
                     case "crypto.rc4": /* FEATURE */ return null;
                     case "file.remove": ((Fountain.File)args[0]).remove(); 
return null;
-                    case "js.stringify": return JSU.GLOBAL.call(SC_stringify, 
args);
+                    case "js.stringify": return JSON.marshal(args[0]);
                     case "net.rpc.xml": return new 
XMLRPC(JSU.toString(args[0]), "");
                     case "regexp": return new JSRegexp(args[0], null);
-                    case "stream.cache": return Resources.cache(args[0]);
-                    case "stream.fromString": return new 
Fountain.ByteArray(JSU.toString(args[0]).getBytes());
-                    case "stream.nameOf": return JSU.S(Fountain.nameOf(args));
-                    case "stream.parse.html": throw new JSExn("not implemented 
yet"); //return null;
-                        // FIXME backgrounding
-
-                    case "stream.url": return 
Resources.fountainForURL(JSU.toString(args[0]));
-                    case "stream.unzip": 
-                       try{ return args[0] == null ? null : 
Fountain.newZip((Fountain)args[0]); }
-                       catch(IOException e){ throw new JSExn(e.getMessage()); }
-                    //case "stream.uncab": return a == null ? null : new 
Stream.Cab(a);
-                    case "stream.parse.utf8": return Fountain.parseUTF8(args);
-                    case "stream.write.xml": return Resources.writeXML(args);
                     case "thread.sleep": JSU.sleep(JSU.toInt(args[0])); return 
null;
                     case "ui.browser": 
Platform.newBrowserWindow(JSU.toString(args[0])); return null;
                     case "ui.font.install": Resources.installFont(args[0]); 
return null;
@@ -329,9 +294,6 @@
                 case 2:
                     //#switch(JSU.toString(method))
                     case "regexp": return new JSRegexp(args[0], args[1]);
-                    case "stream.pipe": Fountain.pipe(args); return null;
-                    case "stream.parse.xml": Resources.parseXML(args); return 
null;
-                    case "stream.write.utf8": Fountain.writeUTF8(args); return 
null;
                     //#end
                 case 3:
                     //#switch(JSU.toString(method))
@@ -366,63 +328,9 @@
         // FIXME support file:// via dialog boxes
     }*/
 
-    
-    public static final JS vexiMath = new JS.Immutable() {
-        // why does vexi need its own implementation? 
-        // why not use JSU.MATH directly (and move missing stuff there) 
-        // FEATURE: find a cleaner way to do this,
-            public JS get(JS key) throws JSExn {
-                //#switch(JSU.toString(key))
-                case "isNaN": return METHOD;
-                case "isFinite": return METHOD;
-                case "NaN": return METHOD;
-                case "Infinity": return METHOD;
-                //#end
-                return JSU.MATH.get(key);
-            }
-            public JS call(JS method, JS[] args) throws JSExn {
-                //#switch(JSU.toString(method))
-                case "isNaN": return JSU.GLOBAL.call(method, args);
-                case "isFinite": return JSU.GLOBAL.call(method, args);
-                case "NaN": return JSU.GLOBAL.call(method, args);
-                case "Infinity": return JSU.GLOBAL.call(method, args);
-                //#end
-                return JSU.MATH.call(method, args);
-            }
-    };
 
-    public static final JS vexiString = new JS.Immutable() {
-        // Same remarks as vexiMath
-            public JS get(JS key) throws JSExn {
-                //#switch(JSU.toString(key))
-                case "parseInt": return METHOD;
-                case "parseFloat": return METHOD;
-                case "decodeURI": return METHOD;
-                case "decodeURIComponent": return METHOD;
-                case "encodeURI": return METHOD;
-                case "encodeURIComponent": return METHOD;
-                case "escape": return METHOD;
-                case "unescape": return METHOD;
-                case "fromCharCode": return METHOD;
-                //#end
-                return super.get(key);
-            }
-            public JS call(JS method, JS[] args) throws JSExn {
-                //#switch(JSU.toString(method))
-                case "parseInt": return JSU.GLOBAL.call(method, args);
-                case "parseFloat": return JSU.GLOBAL.call(method, args);
-                case "decodeURI": return JSU.GLOBAL.call(method, args);
-                case "decodeURIComponent": return JSU.GLOBAL.call(method, 
args);
-                case "encodeURI": return JSU.GLOBAL.call(method, args);
-                case "encodeURIComponent": return JSU.GLOBAL.call(method, 
args);
-                case "escape": return JSU.GLOBAL.call(method, args);
-                case "unescape": return JSU.GLOBAL.call(method, args);
-                case "fromCharCode": return JSU.GLOBAL.call(method, args);
-                //#end
-                return super.call(method, args);
-            }
-    };
 
+
     // FEATURE: move this into builtin.vexi
     // From JS thread.
     static private Blessing bless_jsthread(final JS vexi, final JS fountain, 
final JS name) throws JSExn {

Modified: trunk/core/org.vexi.core/src_junit/org/vexi/core/TestResources.java
===================================================================
--- trunk/core/org.vexi.core/src_junit/org/vexi/core/TestResources.java 
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/org/vexi/core/TestResources.java 
2008-08-28 21:41:31 UTC (rev 3100)
@@ -10,6 +10,7 @@
 import org.ibex.js.Fountain;
 import org.ibex.js.JS;
 import org.ibex.js.JSU;
+import org.vexi.js.VexiJS;
 
 import test.Util;
 import testdeployment.NanoHTTPD;
@@ -88,7 +89,7 @@
                }
                
                public void testDownload() throws Exception{
-                       Fountain f = Resources.fountainForURL(URL + 
"test.vexi");
+                       Fountain f = Resources.fountainForArg(URL + 
"test.vexi");
                        Fountain b = (Fountain) f.get(JSU.S("b.txt"));
                        String contents = 
Util.inputStreamAsString(JSU.getInputStream(b));
                        assertEquals("y\n", contents);
@@ -102,7 +103,7 @@
                        // TODO delete cache
                        File installed = new 
File(Resources.DIR_FONTS,"Bitstream Vera Sans.ttf");
                        if(installed.exists() && !installed.delete()) fail();
-                       Fountain f = Resources.fountainForURL(URL + 
"VeraSans.vexi");
+                       Fountain f = Resources.fountainForArg(URL + 
"VeraSans.vexi");
                        JS fontJS = 
Resources.installedFonts.get(JSU.S("Bitstream Vera Sans"));
                        assertNull(fontJS);
                        Resources._installFont(f);

Modified: trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertbiscuit.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertbiscuit.t       
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertbiscuit.t       
2008-08-28 21:41:31 UTC (rev 3100)
@@ -9,7 +9,7 @@
     parser.characters = function(val){};
 
     // Create a biscuit
-       vexi.stream.parse.xml(vexi.biscuits["session"], parser);
+       vexi.stream.parsexml(vexi.biscuits["session"], parser);
     vexi.log.info(x.username);
        assert(x.username == "bob");
        assert(x.password == "letmein");

Modified: trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertempty.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertempty.t 
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/biscuits/assertempty.t 
2008-08-28 21:41:31 UTC (rev 3100)
@@ -2,7 +2,7 @@
 
     // Create a biscuit
     var x = 
-       vexi.stream.parse.utf8(vexi.biscuits["session"]);
+       vexi.stream.utf8reader(vexi.biscuits["session"]).all;
     vexi.log.info(x);
        .util..assertEquals("",x);
     <ui:box/>

Modified: trunk/core/org.vexi.core/src_junit/test/core/biscuits/createbiscuit.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/biscuits/createbiscuit.t       
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/biscuits/createbiscuit.t       
2008-08-28 21:41:31 UTC (rev 3100)
@@ -3,7 +3,7 @@
     // Create a biscuit
     var x = {username:"bob", password:"letmein"};
        var writer = 
-               vexi.stream.write.xml(vexi.biscuits["session"]);
+               vexi.stream.xmlwriter(vexi.biscuits["session"]);
        writer.startElement("obj", x);
        writer.endElement();
        

Modified: trunk/core/org.vexi.core/src_junit/test/core/download/splashtest.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/download/splashtest.t  
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/download/splashtest.t  
2008-08-28 21:41:31 UTC (rev 3100)
@@ -11,7 +11,8 @@
                
                        // Fetch the resource
                        var rr = vexi_world.bless(
-                                
vexi.stream.url("http://localhost:7070/example.vexi";));
+                                 vexi.cache(
+                                   
vexi.stream.url("http://localhost:7070/example.vexi";)));
        
                        // Trap on resource root on new vexi
                        vexi_world[""] ++= function(){return rr;};

Copied: trunk/core/org.vexi.core/src_junit/test/core/general/accessresource.t 
(from rev 3083, 
trunk/core/org.vexi.core/src_junit/test/core/stream/accessresource.t)
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/general/accessresource.t       
                        (rev 0)
+++ trunk/core/org.vexi.core/src_junit/test/core/general/accessresource.t       
2008-08-28 21:41:31 UTC (rev 3100)
@@ -0,0 +1,20 @@
+<vexi xmlns:ui="vexi://ui" xmlns="">
+       
+       // REMARK - is this just a work around for accessing resource files?
+    var stream = vexi[""]["test.xml"];
+    assert(stream!=null);
+    var theName = null;
+    var parser = {};
+    parser.startElement = function(name, attrs){
+       if(name=="person"){
+                  theName = attrs["name"];
+               }
+    };
+    parser.endElement = function(name){};
+    parser.characters = function(val){};
+    vexi.stream.parsexml(stream, parser);
+    .util..assertEquals("denzel washington", theName);
+    
+    <ui:box/>
+               
+</vexi>
\ No newline at end of file

Copied: trunk/core/org.vexi.core/src_junit/test/core/general/test.xml (from rev 
3083, trunk/core/org.vexi.core/src_junit/test/core/stream/test.xml)
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/general/test.xml               
                (rev 0)
+++ trunk/core/org.vexi.core/src_junit/test/core/general/test.xml       
2008-08-28 21:41:31 UTC (rev 3100)
@@ -0,0 +1,3 @@
+<peoplewhoareright>
+ <person name="denzel washington"/>
+</peoplewhoareright>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java 
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java 
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,90 +0,0 @@
-package test.core.stream;
-
-import java.io.File;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.ibex.js.*;
-import org.ibex.util.Callable;
-import org.vexi.core.*;
-
-import test.core.CoreTestCase;
-import test.core.CoreTestSuite;
-import test.core.Util;
-
-/**
- * @author mike
- */
-public class TestStream extends CoreTestSuite{
-
-       
-       
-    public static void main(String[] args) throws Throwable {
-
-       TestStream cts = new TestStream();
-       TestCase t = cts.createTestCase(cts.getResourceDirs(), "progress.t");
-       t.runBare();
-       }
-       
-    public TestStream() {
-               super(TestStream.class);
-       }
-
-    public TestCase createTestCase(String[] resourceDirs, String fileName) {
-       return new TestStreamCase(resourceDirs, fileName);
-    }
-    
-       public static Test suite() {
-               TestSuite suite = (TestSuite) suite(new TestStream());
-       return suite;
-    }
-
-       protected boolean filter(String name) {
-               return super.filter(name) 
-               //&& !name.contains("saveloadxml")
-               //&& !name.contains("saveloadutf8")
-               ;
-       }
-       static private class TestStreamCase extends CoreTestCase{
-
-               public TestStreamCase(String[] resourceDirs, String 
templateFileName) {
-                       super(resourceDirs, templateFileName);
-               }
-               
-               
-               protected void schedule(final Vexi v){
-                       
-                       /////
-                       // REMARK - most tests we just apply the template 
-                       // and the static part and then the not static part
-                       // is executed. For this case we want to pass an
-                       // argument in (a Fountain.File) as it is not possible
-                       // to access one* without a file dialog in vexi.
-                       //
-                       // *except maybe in the tempdir TBD
-                       Scheduler.add(new Callable(){
-                               public Object run(Object o) throws Exception {
-                                       File tmpDir = Util.createTmpDir();
-                                       File save_ = new 
File(tmpDir,"save.txt");
-                                       TestCase.assertTrue(!save_.exists() || 
save_.delete());
-                                       Fountain.File save = new 
Fountain.File(save_.getPath(),true);
-                                       //save.remove();
-                                       Main.SCHEDULER.beforeNonJS();
-                                       try{
-                                               final JS runtest = 
Util.getStatic(v, main, "runtest");
-                                               if(runtest!=null)
-                                                       
Main.SCHEDULER.runInNew(runtest, new JS[]{save});
-                                               else
-                                                       Vexi.resolveString(v, 
main).call(null, new JS[]{new Box()});
-                                       }finally{
-                                               Main.SCHEDULER.afterNonJS();
-                                       }
-                                       return null;
-                               }
-                       });
-
-               }
-       }
-}

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/accessresource.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/accessresource.t        
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/accessresource.t        
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,20 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-       
-       // REMARK - is this just a work around for accessing resource files?
-    var stream = vexi[""]["test.xml"];
-    assert(stream!=null);
-    var theName = null;
-    var parser = {};
-    parser.startElement = function(name, attrs){
-       if(name=="person"){
-                  theName = attrs["name"];
-               }
-    };
-    parser.endElement = function(name){};
-    parser.characters = function(val){};
-    vexi.stream.parse.xml(stream, parser);
-    .util..assertEquals("denzel washington", theName);
-    
-    <ui:box/>
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t       
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t       
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,36 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-       
-       static.ret = null;
-       static.hasException = function(f /*...*/){
-               var exn = false;
-           try{
-               switch(arguments.length-1){
-               case 1: ret=f(arguments[1]); break;
-               case 2: ret=f(arguments[1], arguments[2]); break;
-               }
-           }catch(e){ vexi.log.info(e);exn = true;}
-           return exn;
-       };
-       
-       static.assertBadArgs = function(f /*...*/){
-        assert(hasException.apply(arguments));
-       };
-       
-    static.assertGoodArgs = function(f /*...*/){
-        assert(!hasException.apply(arguments));
-       };
-       
-       static.runtest = function(stream){
-           assertBadArgs(vexi.stream.parse.xml,{}, {});
-           assertBadArgs(vexi.stream.parse.xml,null, {});
-           assertBadArgs(vexi.stream.parse.xml,stream);
-           assertBadArgs(vexi.stream.parse.xml,stream, null);
-           assertBadArgs(vexi.stream.write.xml,{});
-           assertGoodArgs(vexi.stream.parse.xml,stream, {});
-           assertGoodArgs(vexi.stream.write.xml,stream);
-           ret.close(); // as we opened a stream we need to make sure its 
closed
-    };
-    
-    <ui:box/>
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/parsemptyxml.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/parsemptyxml.t  
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/parsemptyxml.t  
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,34 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-       
-       static.runtest = function(instream){
-
-        var parser = {};
-        parser.startElement = function(name, attrs){
-            vexi.log.info("&lt;"+name+">");
-               assert(false);
-       };
-        parser.endElement = function(name){
-            vexi.log.info("&lt;/" + name+">");
-               assert(false);
-        };
-        parser.characters = function(val){
-            vexi.log.info(val);
-               assert(false);
-        };
-        vexi.stream.parse.xml(instream, parser);
-    };
-    
-    <ui:box/>
-    
-    /*
-       vexi.thread = function(){
-               vexi.log.info("Starting file dialog test ...");
-               var outstream = vexi.stream.file.save();
-                       vexi.stream.write.utf8(outstream,"1\n2\n3");
-               
-                       var instream = vexi.stream.file.load();
-                       var x = vexi.stream.parse.utf8(instream);
-                       vexi.log.info(x);
-       };*/
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/progress.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/progress.t      
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/progress.t      
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,27 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-       
-       vexi.thread = function(){
-               var a = vexi.stream.buffer(16);
-               vexi.stream.write.utf8(a,"sausage");
-               var b = vexi.stream.buffer(16);
-               
-               var record = [];
-               
-               a.start++=function(v){
-                   record[record.length]="start";
-                   return;
-               };
-               a.finish++=function(v){
-                   record[record.length]="finish";
-                   return;
-               };
-               
-               vexi.stream.pipe(a,b);
-
-               .util..assertEquals("sausage", vexi.stream.parse.utf8(b));
-               .util..assertEquals("start,finish", record.join(","));
-       };
-       
-    <ui:box/>
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf8.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf8.t  
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf8.t  
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,12 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-    static.runtest = function(outstream){
-       vexi.log.info(outstream);
-               vexi.stream.write.utf8(outstream,"1\n2\n3");
-               var x = vexi.stream.parse.utf8(outstream);
-               .util..assertEquals("1\n2\n3",x);
-               vexi.log.info(x);
-    };
-    
-    <ui:box/>
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf82.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf82.t 
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadutf82.t 
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,17 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-    // REMARK - repeat of saveloadutf8. 
-    // This is to check that the file is deleteable on windows
-    // , which requires that all streams be closed.
-    // Done like this as strangely it wasn't possible to test the file
-    // immediately after executing the test.
-    static.runtest = function(outstream){
-       vexi.log.info(outstream);
-               vexi.stream.write.utf8(outstream,"1\n2\n3");
-               var x = vexi.stream.parse.utf8(outstream);
-               .util..assertEquals("1\n2\n3",x);
-               vexi.log.info(x);
-    };
-    
-    <ui:box/>
-
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadxml.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadxml.t   
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/saveloadxml.t   
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,53 +0,0 @@
-<vexi xmlns:ui="vexi://ui" xmlns="">
-       
-       static.runtest = function(outstream){
-        var writer = vexi.stream.write.xml(outstream);
-        var attrs = {name:"Excelsior",strength:"98",guile:"77"};
-        writer.startElement("hero", attrs);
-        writer.characters("Excelsior is one of the mightiest of all the heros 
...");
-        writer.endElement();
-               
-               var event = function(eventType, arg1, arg2){
-                       return {eventType:eventType,arg1:arg1,arg2:arg2};
-               };
-               
-               var events = [];        
-        var instream = outstream;
-        var parser = {};
-        
-        parser.startElement = function(name, attrs){
-               events[events.length] = event("startElement",name,attrs);
-            vexi.log.info("&lt;"+name+">");
-       };
-        parser.endElement = function(name){
-            events[events.length] = event("endElement",name);
-            vexi.log.info("&lt;/" + name+">");
-        };
-        parser.characters = function(val){
-            events[events.length] = event("characters",val);
-            vexi.log.info(val);
-        };
-        vexi.stream.parse.xml(instream, parser);
-        .util..assertEquals("hero",events[0].arg1);
-        .util..assertEquals("Excelsior",events[0].arg2.name);
-        .util..assertEquals("Excelsior is one of",events[1].arg1.substr(0,19));
-        .util..assertEquals("hero",events[2].arg1);
-        
-        
-        //vexi.log.info(x);
-    };
-    
-    <ui:box/>
-    
-    /*
-       vexi.thread = function(){
-               vexi.log.info("Starting file dialog test ...");
-               var outstream = vexi.stream.file.save();
-                       vexi.stream.write.utf8(outstream,"1\n2\n3");
-               
-                       var instream = vexi.stream.file.load();
-                       var x = vexi.stream.parse.utf8(instream);
-                       vexi.log.info(x);
-       };*/
-               
-</vexi>
\ No newline at end of file

Deleted: trunk/core/org.vexi.core/src_junit/test/core/stream/test.xml
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/test.xml        
2008-08-28 02:44:12 UTC (rev 3099)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/test.xml        
2008-08-28 21:41:31 UTC (rev 3100)
@@ -1,3 +0,0 @@
-<peoplewhoareright>
- <person name="denzel washington"/>
-</peoplewhoareright>
\ No newline at end of file


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 the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to