Revision: 2116
          http://vexi.svn.sourceforge.net/vexi/?rev=2116&view=rev
Author:   mkpg2
Date:     2007-09-03 10:27:32 -0700 (Mon, 03 Sep 2007)

Log Message:
-----------
Added argument checking to JSU to encourage consistent exception throwing and 
reduce code size (to be used by all methods not on potentially hot paths).

Used in xml parsing code.

Fix. function.apply() can pass in an arguments object as well now.

Modified Paths:
--------------
    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/test/core/stream/TestStream.java

Added Paths:
-----------
    trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Resources.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Resources.java   2007-09-03 
15:47:23 UTC (rev 2115)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Resources.java   2007-09-03 
17:27:32 UTC (rev 2116)
@@ -436,10 +436,10 @@
        }
        
     }*/
-    public static JS parseUTF8(JS arg0) throws JSExn {
-       if(arg0 == null) return null;
+    public static JS parseUTF8(JS[] args) throws JSExn {
+       if(args == null) return null;
        try {
-               InputStream is = JSU.getInputStream(arg0);
+               InputStream is = JSU.getInputStream(args[0]);
                if(is==null) return SC_;
                try{
                        return JSU.S(new 
String(InputStreamToByteArray.convert(is)));
@@ -463,16 +463,20 @@
                        throw new JSExn(e.getMessage());
                }
        } 
+       
+       static final int[] ARGTYPES_parseXML = new int[]{JSU.FOUNTAIN, JSU.OBJ};
        public static void parseXML(JS[] args) throws JSExn{
-               if(args[0] == null) return;
+               JSU.checkArgs(args, ARGTYPES_parseXML);
                new XMLHelper(args[1]).doParse(args[0]);
                return;
        }
        
-       public static JS writeXML(JS f) throws JSExn {
+       static final int[] ARGTYPES_writeXML = new int[]{JSU.FOUNTAIN};
+       public static JS writeXML(JS[] args) throws JSExn {
+               JSU.checkArgs(args, ARGTYPES_writeXML);
                try{
                        final BufferedWriter out = new BufferedWriter(
-                                       new 
OutputStreamWriter(Fountain.getOutputStream(f)));
+                                       new 
OutputStreamWriter(Fountain.getOutputStream(args[0])));
                        JS writer = new JS.Immutable(){
                                Stack stack = new Basket.Array();
                                

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2007-09-03 15:47:23 UTC 
(rev 2115)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Vexi.jpp 2007-09-03 17:27:32 UTC 
(rev 2116)
@@ -230,10 +230,10 @@
                        case "stream.cache":
                            //try { return args[0] == null ? null : new 
Fountain.CachedStream((Stream)args[0], "resources", true); }
                            //catch (Stream.NotCacheableException e) { throw 
new JSExn("this resource cannot be cached"); }
-                       case "stream.write.xml": return 
Resources.writeXML(args[0]);
+                       case "stream.write.xml": return 
Resources.writeXML(args);
                        case "stream.parse.html": throw new JSExn("not 
implemented yet"); //return null;
                            // FIXME backgrounding
-                       case "stream.parse.utf8": return 
Resources.parseUTF8(args[0]);
+                       case "stream.parse.utf8": return 
Resources.parseUTF8(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.insets":

Modified: trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java 
2007-09-03 15:47:23 UTC (rev 2115)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/TestStream.java 
2007-09-03 17:27:32 UTC (rev 2116)
@@ -28,7 +28,7 @@
     public static void main(String[] args) throws Throwable {
 
        TestStream cts = new TestStream();
-       TestCase t = cts.createTestCase(cts.getResourceDirs(), 
"accessresource.t");
+       TestCase t = cts.createTestCase(cts.getResourceDirs(), "badargs.t");
        t.runBare();
        }
        

Added: trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t
===================================================================
--- trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t               
                (rev 0)
+++ trunk/core/org.vexi.core/src_junit/test/core/stream/badargs.t       
2007-09-03 17:27:32 UTC (rev 2116)
@@ -0,0 +1,34 @@
+<vexi xmlns:ui="vexi://ui" xmlns="">
+       
+       static.hasException = function(f /*...*/){
+               var exn = false;
+           try{
+               switch(arguments.length-1){
+               case 1: f(arguments[1]); break;
+               case 2: 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);
+           assertGoodArgs(vexi.stream.parse.xml,stream, {});
+           assertBadArgs(vexi.stream.write.xml,{});
+           assertGoodArgs(vexi.stream.write.xml,stream);
+    };
+    
+    <ui:box/>
+               
+</vexi>
\ 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: 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
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to