From a3690b5da51fd6a2c8ba3e9e772fef6006b3622a Mon Sep 17 00:00:00 2001 From: Valentin Kulichenko Date: Wed, 2 Mar 2016 19:05:44 -0800 Subject: [PATCH] # ignite-2749 --- .../apache/ignite/cache/websession/WebSession.java | 21 +++++++++------------ .../ignite/cache/websession/WebSessionFilter.java | 17 +++++++++++------ .../ignite/cache/websession/WebSessionListener.java | 6 ++++-- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSession.java b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSession.java index 496600a..e812b46 100644 --- a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSession.java +++ b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSession.java @@ -94,12 +94,15 @@ class WebSession implements HttpSession, Externalizable { } /** + * @param id Session ID. * @param ses Session. */ - WebSession(HttpSession ses) { + WebSession(String id, HttpSession ses) { + assert id != null; assert ses != null; - id = ses.getId(); + this.id = id; + createTime = ses.getCreationTime(); accessTime = ses.getLastAccessedTime(); maxInactiveInterval = ses.getMaxInactiveInterval(); @@ -117,11 +120,12 @@ class WebSession implements HttpSession, Externalizable { } /** + * @param id Session ID. * @param ses Session. * @param isNew Is new flag. */ - WebSession(HttpSession ses, boolean isNew) { - this(ses); + WebSession(String id, HttpSession ses, boolean isNew) { + this(id, ses); this.isNew = isNew; } @@ -254,13 +258,6 @@ class WebSession implements HttpSession, Externalizable { lsnr.destroySession(id); } - /** - * @param isNew New session flag. - */ - void setNew(boolean isNew) { - this.isNew = isNew; - } - /** {@inheritDoc} */ @Override public boolean isNew() { return isNew; @@ -293,4 +290,4 @@ class WebSession implements HttpSession, Externalizable { @Override public String toString() { return S.toString(WebSession.class, this); } -} \ No newline at end of file +} diff --git a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java index 4a84931..d8b1ddc 100644 --- a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java +++ b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java @@ -338,6 +338,9 @@ public class WebSessionFilter implements Filter { String sesId = httpReq.getRequestedSessionId(); if (sesId != null) { + if (sesIdTransformer != null) + sesId = sesIdTransformer.apply(sesId); + cached = cache.get(sesId); if (cached != null) { @@ -345,7 +348,7 @@ public class WebSessionFilter implements Filter { log.debug("Using cached session for ID: " + sesId); if (cached.isNew()) - cached = new WebSession(cached, false); + cached = new WebSession(cached.getId(), cached, false); } else { if (log.isDebugEnabled()) @@ -386,8 +389,10 @@ public class WebSessionFilter implements Filter { if (ses != null && ses instanceof WebSession) { Collection> updates = ((WebSession)ses).updates(); - if (updates != null) - lsnr.updateAttributes(ses.getId(), updates, ses.getMaxInactiveInterval()); + if (updates != null) { + lsnr.updateAttributes(sesIdTransformer != null ? sesIdTransformer.apply(ses.getId()) : ses.getId(), + updates, ses.getMaxInactiveInterval()); + } } return sesId; @@ -406,7 +411,7 @@ public class WebSessionFilter implements Filter { if (log.isDebugEnabled()) log.debug("Session created: " + sesId); - WebSession cached = new WebSession(ses, true); + WebSession cached = new WebSession(sesId, ses, true); for (int i = 0; i < retries; i++) { try { @@ -428,7 +433,7 @@ public class WebSessionFilter implements Filter { cached = old; if (cached.isNew()) - cached = new WebSession(cached, false); + cached = new WebSession(cached.getId(), cached, false); } break; @@ -502,4 +507,4 @@ public class WebSessionFilter implements Filter { return ses; } } -} \ No newline at end of file +} diff --git a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionListener.java b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionListener.java index b826031..355a9e2 100644 --- a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionListener.java +++ b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionListener.java @@ -186,7 +186,9 @@ class WebSessionListener { if (!entry.exists()) return null; - WebSession ses = new WebSession(entry.getValue()); + WebSession ses0 = entry.getValue(); + + WebSession ses = new WebSession(ses0.getId(), ses0); for (T2 update : updates) { String name = update.get1(); @@ -216,4 +218,4 @@ class WebSessionListener { updates = U.readCollection(in); } } -} \ No newline at end of file +} -- 2.5.4 (Apple Git-61)