しつこくRhino

HttpSessionを実装。


Object.prototype.map = function() {
var m = new java.util.HashMap();

for(var i in this) {
if(!this[i].dont_enum) {
m.put(i, this[i]);
}
}

return m;
}

Object.prototype.sess = function() {
var s = new Packages.javax.servlet.http.HttpSession() {
attributes: new java.util.Hashtable(this.map()),
getAttribute: function(k) {return this.attributes.get(k)},
getAttributeNames: function() {return this.attributes.keys()},
setAttribute: function(k, v) {this.attributes.put(k, v)},
toString: function() {return this.attributes.toString()}
}

return s;
}

Object.prototype.map.dont_enum = true;
Object.prototype.sess.dont_enum = true;

s = {x:'X', y:'Y', z:'Z'}.sess();
print(s);