diff options
author | Greg Wilkins | 2012-03-19 06:22:02 +0000 |
---|---|---|
committer | Greg Wilkins | 2012-03-19 06:22:02 +0000 |
commit | d8b1d80e4e2326f13e82bf02c1ae1587c51dd8c4 (patch) | |
tree | b504037065670ddec79cd136b8d935daeb0f48a8 /jetty-nosql | |
parent | 4b2d976f249028b214c3d6497ebb01b945e96333 (diff) | |
parent | 7e3b8bcfd4bcd96c199986720fa0aa0e6553b291 (diff) | |
download | org.eclipse.jetty.project-d8b1d80e4e2326f13e82bf02c1ae1587c51dd8c4.tar.gz org.eclipse.jetty.project-d8b1d80e4e2326f13e82bf02c1ae1587c51dd8c4.tar.xz org.eclipse.jetty.project-d8b1d80e4e2326f13e82bf02c1ae1587c51dd8c4.zip |
Merge remote-tracking branch 'origin/master' into jetty-8
Conflicts:
jetty-spdy/spdy-jetty-http-webapp/pom.xml
jetty-spdy/spdy-jetty-http/pom.xml
jetty-spdy/spdy-jetty/pom.xml
Diffstat (limited to 'jetty-nosql')
-rw-r--r-- | jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionManager.java | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionManager.java b/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionManager.java index e4eab9e057..5fb218df2d 100644 --- a/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionManager.java +++ b/jetty-nosql/src/main/java/org/eclipse/jetty/nosql/mongodb/MongoSessionManager.java @@ -245,21 +245,37 @@ public class MongoSessionManager extends NoSqlSessionManager { for (String name : attrs.keySet()) { - if ( __METADATA.equals(name) ) + if (__METADATA.equals(name)) { continue; } - + String attr = decodeName(name); Object value = decodeValue(attrs.get(name)); - session.doPutOrRemove(attr,value); - session.bindValue(attr,value); + + if (attrs.keySet().contains(name)) + { + session.doPutOrRemove(attr,value); + session.bindValue(attr,value); + } + else + { + session.doPutOrRemove(attr,value); + } + } + // cleanup, remove values from session, that don't exist in data anymore: + for (String name : session.getNames()) + { + if (!attrs.keySet().contains(name)) + { + session.doPutOrRemove(name,null); + session.unbindValue(name,session.getAttribute(name)); + } } } session.didActivate(); - - + return version; } catch (Exception e) |