private void handleSessionBindings(NoSqlSession session, HazelcastSessionData o) { Map<String, Object> attrs = o.getAttributeMap(); if (attrs != null) { for (String name : attrs.keySet()) { String attr = name; Object value = attrs.get(name); 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)); } } } }
private Object handleSessionAddition(NoSqlSession session, Object version, HazelcastSessionData sessionData) { if (version == null) { // New session version = new Long(1); sessionData.setCreationTime(session.getCreationTime()); sessionData.setValid(true); } else { version = new Long(((Number) version).longValue() + 1); } sessionData.setVersion(version); sessionData.setAccessed(session.getAccessed()); Set<String> names = session.takeDirty(); if (isSaveAllAttributes()) { // note dirty may include removed names names.addAll(session.getNames()); } for (String name : names) { Object value = session.getAttribute(name); if (value == null) { sessionData.getAttributeMap().remove(name); } else if (value instanceof Serializable) { sessionData.getAttributeMap().put(name, value); } else { LOG.warn("Session attribute [" + name + "] not saved since it's not Serializable"); } } return version; }
Set<String> attributesToSave = session.takeDirty(); if (isNew || isSaveAllAttributes()) { attributesToSave.addAll(session.getNames());