You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xap-commits@incubator.apache.org by jm...@apache.org on 2007/10/22 19:57:57 UTC

svn commit: r587220 - /incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js

Author: jmargaris
Date: Mon Oct 22 12:57:56 2007
New Revision: 587220

URL: http://svn.apache.org/viewvc?rev=587220&view=rev
Log:
efficiency changes

Modified:
    incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js

Modified: incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js
URL: http://svn.apache.org/viewvc/incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js?rev=587220&r1=587219&r2=587220&view=diff
==============================================================================
--- incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js (original)
+++ incubator/xap/trunk/codebase/src/xap/data/controller/BindingResolver.js Mon Oct 22 12:57:56 2007
@@ -49,6 +49,9 @@
 xap.data.controller.BindingResolver.EQUALS_CHAR = "=";
 /*private static final char[]*/
 xap.data.controller.BindingResolver.ESCAPABLE_CHARACTERS = [xap.data.controller.BindingResolver.ESCAPE_CHAR, xap.data.controller.BindingResolver.DELIMITER_CHAR];
+
+
+xap.data.controller.BindingResolver.PARSER = new xap.util.EscapeSyntaxParser(xap.data.controller.BindingResolver.ESCAPABLE_CHARACTERS, xap.data.controller.BindingResolver.ESCAPABLE_CHARACTERS);
 /**
  * @private ContextStack
 **/
@@ -109,7 +112,7 @@
 	/*int*/
 	var index = 0;
 	/*StringBuffer*/
-	var curToken = null;
+	var curToken = [];
 	/*String*/
 	var parameterName = null;
 	/*String*/
@@ -119,7 +122,10 @@
 	/*String*/
 	var defaultValue = null;
 	/*EscapeSyntaxParser*/
-	var parser = new xap.util.EscapeSyntaxParser(xap.data.controller.BindingResolver.ESCAPABLE_CHARACTERS, xap.data.controller.BindingResolver.ESCAPABLE_CHARACTERS);
+	var parser = xap.data.controller.BindingResolver.PARSER;
+	
+	//TODO instead of looping through manually does it make sense to use index of
+	//to look for either \ or ; along with substring or smoething like that??
 	while (!done) {
 		var curChar = null;
 		/*boolean*/
@@ -129,9 +135,6 @@
 			curChar = xap.data.controller.BindingResolver.DELIMITER_CHAR;
 		} else {
 			curChar = parser.getResolvedCharacter(value, index);
-			if (curToken == null) {
-				curToken = "" ;
-			}
 			if (curChar == xap.util.EscapeSyntaxParser.UNRESOLVED_CHARACTER) {
 					// REGULAR CHARACTER
 				curChar = value.charAt(index);
@@ -147,12 +150,12 @@
 		if (!wasEscapedChar) {
 			if (curChar == xap.data.controller.BindingResolver.DELIMITER_CHAR) {
 				if (parameterName == null) {
-					if (curToken != null) {
-						parameterName = curToken.toString().trim();
+					if (curToken) {
+						parameterName = curToken.join("").trim();
 					}
 				} else {
 					if (curToken != null) {
-						parameterValue = curToken.toString().trim();
+						parameterValue = curToken.join("").trim();
 					}
 				}
 				if (xap.data.bridge.XmlDataTokens.FORMATTER == parameterName ) {
@@ -187,14 +190,14 @@
 						}
 					}
 				}
-				curToken = null;
+				curToken = [];
 				parameterName = null;
 				parameterValue = null;
 				continue;
 			} else {
 				if (parameterName == null && curChar == this.constructor.EQUALS_CHAR) {
-					parameterName = curToken.toString().trim();
-					curToken = null;
+					parameterName = curToken.join("").trim();
+					curToken = [];
 					continue;
 				}
 			}
@@ -202,7 +205,7 @@
 			
 			// The character wasn't handled as a special character, so it
 			// is part of the token currently in progress.
-		curToken += curChar ;
+		curToken.push(curChar) ;
 	}
 	/*Binding*/
 	var binding = xap.data.controller.Binding.createIteratorBinding(this.getContextStack(), dataSourceContainer, select, dataSource, this._session, bindType, defaultValue);