[Laszlo-checkins] r10676 - openlaszlo/trunk/WEB-INF/lps/lfc/data

bargull@openlaszlo.org bargull at openlaszlo.org
Wed Aug 13 10:41:57 PDT 2008


Author: bargull
Date: 2008-08-13 10:41:53 -0700 (Wed, 13 Aug 2008)
New Revision: 10676

Modified:
   openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataProvider.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataset.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs
   openlaszlo/trunk/WEB-INF/lps/lfc/data/LzParam.lzs
Log:
Change 20080813-bargull-VxK by bargull at dell--p4--2-53 on 2008-08-13 18:05:22
    in /home/Admin/src/svn/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: change LzDataProvider&LzParam inheritance, update LzParam

New Features:

Bugs Fixed: LPP-6772, LPP-6831

Technical Reviewer: hminsky
QA Reviewer: (pending)
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details:
Per discussion, LzDataProvider and LzParam are now only subclasses of LzEventable instead of LzNode. 
Also removed a lot of code in LzParam which handled the case-insensitivity in earlier Flash versions: 
- removed construct(), createChildren(), both are part of the LzNode structure and now no longer needed
- removed internal method findKey(), not needed anymore
- marked getValueNoCase() as deprecated, actually it didn't work properly anymore since OL3.x
- renamed private attributes "sep" and "dlm" to "separator" and "delimiter" to support our setter-mechanism
Added typing, as usual. 
    

Tests:



Modified: openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataProvider.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataProvider.lzs	2008-08-13 17:25:01 UTC (rev 10675)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataProvider.lzs	2008-08-13 17:41:53 UTC (rev 10676)
@@ -31,19 +31,12 @@
   * @lzxname dataprovider
   */
 
-class LzDataProvider extends LzNode {
+class LzDataProvider extends LzEventable {
 
-    function LzDataProvider ( parent:* = null, attrs:* = null, children:* = null, instcall:*  = null) {
-        super(parent,attrs,children,instcall);
-    }  
+    function LzDataProvider () {
+        super();
+    }
 
-    /** @access private
-     * @modifiers override 
-     */
-    static var tagname = 'dataprovider';
-/** @access private */
-    static var attributes = new LzInheritedHash(LzNode.attributes);
-
     /**
      * Executes the given DataRequest
      * @access public
@@ -54,4 +47,4 @@
     }
 }
 
-lz[LzDataProvider.tagname] = LzDataProvider;  // publish
+lz.DataProvider = LzDataProvider;  // publish

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataset.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataset.lzs	2008-08-13 17:25:01 UTC (rev 10675)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/data/LzDataset.lzs	2008-08-13 17:41:53 UTC (rev 10676)
@@ -178,7 +178,7 @@
 /** An LzParams object which holds query key-value pairs.
     @type LzParam
  */
-var params = null;
+var params :LzParam = null;
 
 /** When true, the server will preserve namespace prefixes
   * on data node names and attribute names
@@ -420,9 +420,9 @@
   * dataset.
   * @return LzParam: The request parameters for the dataset.
   */
-function getParams (){
+function getParams () :LzParam {
     if (this.params == null) {
-        new LzParam ( this , { name : "params" } );
+        this.params = new LzParam();
     }
 
     return this.params;
@@ -526,7 +526,7 @@
         if (s instanceof  LzParam){
             this.querystring = s.toString();
         } else {
-            var p = new LzParam ( this );
+            var p = new LzParam ();
             for ( var n in s ) {
                 p.setValue( n, s[n], true );
             }
@@ -615,7 +615,7 @@
 function setQueryParam( key , val ) {
     this.querystring = null;
     if ( ! this.params ){
-        new LzParam ( this , { name : "params" } );
+        this.params = new LzParam();
     }
     this.params.setValue( key, val );
 
@@ -636,10 +636,7 @@
 function setQueryParams( o ) {
     this.querystring = null;
     if ( ! this.params ){
-        //new LzParam ( this , { name : "params" } );
-        // [todo 2006-06 hqm] this.params does not seem to be getting set
-        // in IE -- temporary patch here to work around 
-        this.params = new LzParam ( this , { name : "params" } );
+        this.params = new LzParam();
     }
 
     if ( o ) {
@@ -724,7 +721,7 @@
     // values. Note, this is independent of the query portion of the
     // this.src URL. 
     if (this.querystring) {
-        dreq.queryparams = new LzParam(this);
+        dreq.queryparams = new LzParam();
         dreq.queryparams.addObject(LzParam.parseQueryString(this.querystring));
     } else {
         // otherwise, use the this.params value
@@ -905,7 +902,7 @@
   */
 function setHeader ( k , val ){ 
     if ( !this.headers ) {
-        this.headers = new LzParam( this );
+        this.headers = new LzParam();
     }
 
     this.headers.setValue( k , val );

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs	2008-08-13 17:25:01 UTC (rev 10675)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs	2008-08-13 17:41:53 UTC (rev 10676)
@@ -27,8 +27,8 @@
   */
 class LzHTTPDataProvider extends LzDataProvider {
 
-    function LzHTTPDataProvider ( parent:* = null, attrs:* = null, children:* = null, instcall:*  = null) {
-        super(parent,attrs,children,instcall);
+    function LzHTTPDataProvider () {
+        super();
     }  
 
     /** @access private
@@ -332,7 +332,6 @@
         dreq.responseheaders = headers;
         dreq.rawdata = dreq.loader.getResponse();
         dreq.onstatus.sendEvent( dreq );
-
     }
 }
 lz.HTTPDataProvider = LzHTTPDataProvider;  // publish

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/data/LzParam.lzs
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/data/LzParam.lzs	2008-08-13 17:25:01 UTC (rev 10675)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/data/LzParam.lzs	2008-08-13 17:41:53 UTC (rev 10676)
@@ -35,32 +35,22 @@
   * 
   * @lzxname params
   */
-class LzParam extends LzNode {
+class LzParam extends LzEventable {
 
-/** @access private
-  * @modifiers override 
-  */
-static var tagname = 'params';
 /** @access private */
-  static var attributes = new LzInheritedHash(LzNode.attributes);
+var d :Object = null;
 
-  // FIXME: [2008-03-12 ptw] WTF is this supposed to be doing?
-//undefine all setters but name and id
-//setters.$hasdefaultattrs = -1;
-
+// default separator and delimiter
 /** @access private */
-var d:Object = null;
+var delimiter :String = "&";
+/** @access private */
+var separator :String = "=";
 
-
 /**
   * @access private
   */
-    function LzParam ( parent:* = null, attrs:* = null, children:* = null, instcall:*  = null) {
-        super(parent,attrs,children,instcall);
-    }  
-
-override function construct ( parent , args ){
-    super.construct.apply(this, arguments);
+function LzParam () {
+    super();
     this.d = {};
 }
 
@@ -68,7 +58,7 @@
   * Parse a URL query string, returns an object with key-value pairs
   * @return Object
   */
-static function parseQueryString ( query:String ) :Object {
+static function parseQueryString (query:String) :Object {
   var parameters:Array = query.split('&');
   var queries:Object = {};
   for (var i:int = 0; i < parameters.length; ++i) {
@@ -76,7 +66,7 @@
     var value:String = '';
     var n:int = key.indexOf('=');
     if (n > 0) {
-      value = unescape(key.substring(n+1));
+      value = unescape(key.substring(n + 1));
       key = key.substring(0, n);
     }
     queries[key] = value;
@@ -89,33 +79,19 @@
   * @return Object
   * @deprecated: Use LzParam.parseQueryString() instead
   */
-function parseQueryString ( query ) {
+function parseQueryString (query:String) :Object {
     if ($debug) {
-        Debug.info (this, ".parseQueryString is deprecated. Use LzParam.parseQueryString instead");
+        Debug.info(this, ".parseQueryString is deprecated. Use LzParam.parseQueryString instead");
     }
-    return LzParam.parseQueryString (query);
+    return LzParam.parseQueryString(query);
 }
 
-
 /**
-  * @access private
-  */
-override function createChildren ( children ){
-    //Debug.write( "got children: " + children );
-}
-
-// default separator and delimiter
-/** @access private */
-var dlm = "&";
-/** @access private */
-var sep = "=";
-
-/**
   * Adds a series of name/value pairs from an object
   * @param Object o: An object containing name/value pairs to add
   */
-function addObject(o) {
-    for ( var n in o ) {
+function addObject (o:Object) :void {
+    for (var n:String in o) {
         this.setValue( n, o[n] );
     }
 }
@@ -125,12 +101,12 @@
   * @keywords deprecated: Argument is deprecated
   * @return LzParam
   */
-function clone(arg=null) {
-    if (arg && $debug) {
-        Debug.info("%w.%s is deprecated. Do not pass as argument to clone()", this, arguments.callee);
+function clone (arg=null) :LzParam {
+    if ($debug) {
+        if (arg) Debug.info("%w.%s is deprecated. Do not pass as argument to clone()", this, arguments.callee);
     }
-    var o = new LzParam();
-    for ( var n in this.d ) {
+    var o:LzParam = new LzParam();
+    for (var n:String in this.d) {
         o.d[ n ] = this.d[ n ].concat();
     }
     return o;
@@ -142,13 +118,19 @@
   * @param String name: The name of the value to remove.  If null, removes 
   * all values
   */
-function remove( name = null) {
-    if ( null == name ) {
+function remove (name:String? = null) :void {
+    if (name == null) {
         this.d = {};
-    } else if ( null != this.d[ name ] ) {
-        var i = this.findKey( name );
-        if ( i != null ) {
-            this.d[ name ].splice ( i , 2 );
+    } else {
+        var a:Array = this.d[ name ];
+        if (a != null) {
+            // bwcomp: remove only first entry
+            // TODO: [20080813 anba] is this what we expect?
+            a.shift();
+            if (! a.length) {
+                // remove empty arrays
+                delete this.d[ name ];
+            }
         }
     }
 }
@@ -160,22 +142,10 @@
   * @param String val: The value to set
   * @param Boolean enc: If true, URI-encodes the value
   */
-function setValue(name, val, enc = null) {
+function setValue (name:String, val:String, enc:Boolean = false) :void {
     if (enc) val = encodeURIComponent(val);
-    var a = this.d[ name ];
-    if ( a == null ) {
-        // add first pair
-        this.d[ name ] = [name, val];
-    } else {
-        var i = this.findKey( name );
-        if (null != i) {
-            // replace existing value
-            a[i + 1] = val;
-        } else {
-            // add new value
-            a.push(name, val);
-        }
-    }
+    // replace existing value
+    this.d[ name ] = [ val ];
 }
 
 
@@ -185,15 +155,15 @@
   * @param String val: The value to set
   * @param Boolean enc: If true, URI-encodes the value
   */
-function addValue(name, val, enc=false) {
-    if ( enc ) val = encodeURIComponent( val );
-    var a = this.d[ name ];
-    if ( a == null ) {
-        // add first pair
-        this.d[ name ] = [ name, val ];
+function addValue (name:String, val:String, enc:Boolean = false) :void {
+    if (enc) val = encodeURIComponent( val );
+    var a:Array = this.d[ name ];
+    if (a == null) {
+        // add first 
+        this.d[ name ] = [ val ];
     } else {
         // add new value
-        a.push( name, val );
+        a.push( val );
     }
 }
 
@@ -203,10 +173,10 @@
   * @param String name: The name to look up - must evaluate to a string
   * @return String: The value for the specified name
   */
-function getValue(name) {
-    var i = this.findKey(name);
-    if (null != i) {
-        return this.d[name][i + 1];
+function getValue (name:String) :String? {
+    var a:Array = this.d[name];
+    if (a != null) {
+        return a[ 0 ];
     }
 }
 
@@ -215,18 +185,18 @@
   * Get a value by name irrespective of case.
   * @param String name: The name to look up - must evaluate to a string
   * @return [String]: An array of values that case-insensitively match name
+  * @keywords deprecated
   */
-function getValueNoCase(name) {
-    var a = this.d[name];
-    if ( a.length ){
-        if ( a.length == 2 ) {
-            return a[ 1 ];
-        }else {
-            var r =[];
-            for ( var i = 1; i < a.length; i +=2 ){
-                r.push( a[ i ] );
-            }
-            return r;
+function getValueNoCase (name:String) :* {
+    if ($debug) {
+        Debug.info("%w.%s is deprecated.", this, arguments.callee);
+    }
+    var a:Array = this.d[ name ];
+    if (a != null) {
+        if (a.length == 1) {
+            return a[ 0 ];
+        } else {
+            return a.concat();
         }
     }
 }
@@ -236,47 +206,31 @@
   * Get a list of all names, not necessarily in order
   * @return [String]: A list of keys
   */
-function getNames() {
-    var o = [];
-    for (var n in this.d) {
-        var a = this.d[n];
-        for (var i = 0; i < a.length; i += 2) {
-            if (null != a[i]) {
-                o.push(a[i]);
-            }
-        }
+function getNames () :Array {
+    var o:Array = [];
+    for (var n:String in this.d) {
+        o.push(n);
     }
     return o;
 }
 
 
-//----------------------------------------------------------------------------- // Get offset for specified name in the hash value.
-//
 /** @access private */
-// @param name: The name to set - must evaluate to a string
-// @return i: The offset found
-//-----------------------------------------------------------------------------
-function findKey( name ) {
-    var a = this.d[name];
-    if (a != null) {
-        for (var i = 0; i < a.length; i += 2) {
-            if (name == a[ i ]) {
-                return i;
-            }   
-        }
-    }
-}
+function $lzc$set_delimiter(d:String) :void { this.setDelimiter(d); }
 
 
+/** @access private */
+function $lzc$set_separator(s:String) :void { this.setSeparator(s); }
 
+
 /**
   * Set delimiter string used between records in serialize();
   * @param String d: String to use as delimiter
   * @return String: Old delimiter
   */
-function setDelimiter(d) {
-    var o = this.dlm;
-    this.dlm = d;
+function setDelimiter (d:String) :String {
+    var o:String = this.delimiter;
+    this.delimiter = d;
     return o;
 }
 
@@ -288,9 +242,9 @@
   * @param String s: String to use as separator
   * @return String : Old separator
   */
-function setSeparator(s) {
-    var o = this.sep;
-    this.sep = s;
+function setSeparator (s:String) :String {
+    var o:String = this.separator;
+    this.separator = s;
     return o;
 }
 
@@ -299,7 +253,7 @@
   * Returns a string representation using the current separator and delimiter 
   * @return String: All names and values for this object
   */
-override function toString() {
+function toString () :String {
     return this.serialize();
 }
 
@@ -310,20 +264,19 @@
   * @param Boolean uriencode: If true, uri-encode values
   * @return: String representation of parameters
   */
-function serialize( sep = null, delim = null, uriencode = null ){
-    var sep = sep == null ? this.sep : sep;
-    var dlm = delim == null ? this.dlm : delim;
+function serialize (sep:String? = null, delim:String? = null, uriencode:Boolean = false) :String {
+    var sep:String = sep == null ? this.separator : sep;
+    var dlm:String = delim == null ? this.delimiter : delim;
 
-    var o = "";
+    var o:String = "";
 
-    var c = false;
-    for ( var mk in this.d ){
-        var n = this.d[ mk ];
+    var c:Boolean = false;
+    for (var mk:String in this.d) {
+        var n:Array = this.d[ mk ];
         if (n != null) {
-            for ( var i = 0; i < n.length; i+=2 ) {
+            for (var i:int = 0; i < n.length; ++i) {
                 if ( c ) o += dlm;
-                o += n[ i ] + sep ;
-                o += uriencode? encodeURIComponent( n[ i + 1 ] ) : n[ i + 1 ];
+                o += mk + sep + (uriencode ? encodeURIComponent( n[i] ) : n[i]);
                 c = true;
             }
         }
@@ -334,4 +287,4 @@
 
 } // End of LzParam
 
-lz[LzParam.tagname] = LzParam;  // publish
+lz.Param = LzParam;  // publish



More information about the Laszlo-checkins mailing list