r9590 - helma-ng/trunk/modules/helma/webapp

[email protected]
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090408131305.C3ECC3D0D6@mia>
Author: hannes
Date: 2009-04-08 15:13:05 +0200 (Wed, 08 Apr 2009)
New Revision: 9590

Modified:
   helma-ng/trunk/modules/helma/webapp/request.js
Log:
implementing headers and cookies getter for the request obejct

Details at http://dev.helma.org/trac/helma/changeset/9590

Modified: helma-ng/trunk/modules/helma/webapp/request.js
===================================================================
--- helma-ng/trunk/modules/helma/webapp/request.js	2009-04-08 13:13:04 UTC (rev 9589)
+++ helma-ng/trunk/modules/helma/webapp/request.js	2009-04-08 13:13:05 UTC (rev 9590)
@@ -28,8 +28,14 @@
 
     define("cookies", {
         getter: function() {
-            if (!cookies)
+            if (!cookies) {
                 cookies = new ScriptableMap();
+                (servletRequest.getCookies() || []).map(function mapCookie(servletCookie) {
+                    return new Cookie(servletCookie);
+                }).forEach(function addCookie(cookie) {
+                    cookies[cookie.name] = cookie;
+                });
+            }
             return cookies;
         }
     });
@@ -44,9 +50,15 @@
 
     define("headers", {
         getter: function() {
-            if (!headers)
+            if (!headers) {
                 headers = new ScriptableMap();
-            return params;
+                var names = servletRequest.getHeaderNames();
+                while (names.hasMoreElements()) {
+                    let name = names.nextElement()
+                    headers[name] = servletRequest.getHeader(name);
+                }
+            }
+            return headers;
         }
     });
 
@@ -55,6 +67,16 @@
             return servletRequest.getHeader(name);
         }
     });
+
+    define("getHeaders", {
+        value: function getHeaders(name) {
+            var headers = [];
+            var servletHeaders = servletRequest.getHeaders(name);
+            while (servletHeaders.hasMoreElements())
+                headers.push(servletHeaders.nextElement());
+            return headers;
+        }
+    });
 }
 
 function Session(servletRequest) {
@@ -84,6 +106,144 @@
 
 }
 
+function Cookie(servletCookie) {
+
+    var name, path, maxAge, domain, comment, isSecure, value, version;
+    var define = bindArguments(Object.defineProperty, this);
+
+    function getCookie() {
+        return servletCookie;
+    }
+
+    define("name", {
+        getter: function() {
+            if (!name)
+                name = getCookie().getName();
+            return name;
+        },
+
+        setter: function(value) {
+            if (value) {
+                name = value;
+                getCookie().setName(name);
+            }
+            return name;
+        }
+    });
+
+    define("value", {
+        getter: function() {
+            if (!value)
+                value = getCookie().getValue();
+            return value;
+        },
+
+        setter: function(val) {
+            if (val) {
+                value = val;
+                getCookie().setValue(value);
+            }
+            return value;
+        }
+    });
+
+    define("domain", {
+        getter: function() {
+            if (!domain)
+                domain = getCookie().getDomain();
+            return domain;
+        },
+
+        setter: function(value) {
+            if (value) {
+                domain = value;
+                getCookie().setDomain(domain);
+            }
+            return domain;
+        }
+    });
+
+    define("path", {
+        getter: function() {
+            if (!path)
+                path = getCookie().getPath();
+            return path;
+        },
+
+        setter: function(value) {
+            if (value) {
+                path = value;
+                getCookie().setPath(path);
+            }
+            return path;
+        }
+    });
+
+    define("maxAge", {
+        getter: function() {
+            if (!maxAge)
+                maxAge = getCookie().getMaxAge();
+            return maxAge;
+        },
+
+        setter: function(value) {
+            if (value) {
+                maxAge = value;
+                getCookie().setMaxAge(maxAge);
+            }
+            return maxAge;
+        }
+    });
+
+    define("comment", {
+        getter: function() {
+            if (!comment)
+                comment = getCookie().getComment();
+            return comment;
+        },
+
+        setter: function(value) {
+            if (value) {
+                comment = value;
+                getCookie().setComment(comment);
+            }
+            return comment;
+        }
+    });
+
+    define("isSecure", {
+        getter: function() {
+            if (!isSecure)
+                isSecure = getCookie().getSecure();
+            return isSecure;
+        },
+
+        setter: function(value) {
+            if (value) {
+                isSecure = value;
+                getCookie().setSecure(isSecure);
+            }
+            return isSecure;
+        }
+    });
+
+    define("version", {
+        getter: function() {
+            if (!version)
+                version = getCookie().getVersion();
+            return version;
+        },
+
+        setter: function(value) {
+            if (value) {
+                version = value;
+                getCookie().setVersion(version);
+            }
+            return version;
+        }
+    });
+}
+
 var defineRequestProperty = bindArguments(Object.defineProperty, Request.prototype);
 
 defineRequestProperty("isGet", {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.