r9590 - helma-ng/trunk/modules/helma/webapp
[email protected] Wed, 8 Apr 2009 15:13:05 +0200 (CEST)
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", {