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