diff --git a/src/java/grails/plugin/databasesession/SessionProxy.java b/src/java/grails/plugin/databasesession/SessionProxy.java index 814823a..43daa9e 100644 --- a/src/java/grails/plugin/databasesession/SessionProxy.java +++ b/src/java/grails/plugin/databasesession/SessionProxy.java @@ -18,6 +18,7 @@ public class SessionProxy implements HttpSession { private final String _sessionId; private final long _creationTime = System.currentTimeMillis(); private final ServletContext _servletContext; + private final boolean _isNew; private static final HttpSessionContext SESSION_CONTEXT = new HttpSessionContext() { public HttpSession getSession(String sessionId) { @@ -43,10 +44,11 @@ public boolean hasMoreElements() { * @param persister the persister * @param sessionId session id */ - public SessionProxy(final ServletContext servletContext, final Persister persister, String sessionId) { + public SessionProxy(final ServletContext servletContext, final Persister persister, String sessionId, boolean isNew) { _servletContext = servletContext; _persister = persister; _sessionId = sessionId; + _isNew = isNew; } public Object getAttribute(String name) { @@ -172,6 +174,6 @@ public void invalidate() { } public boolean isNew() { - return false; // TODO + return _isNew; } } diff --git a/src/java/grails/plugin/databasesession/SessionProxyFilter.java b/src/java/grails/plugin/databasesession/SessionProxyFilter.java index cfec678..bd543ad 100644 --- a/src/java/grails/plugin/databasesession/SessionProxyFilter.java +++ b/src/java/grails/plugin/databasesession/SessionProxyFilter.java @@ -83,13 +83,13 @@ protected HttpSession proxySession(final boolean create, final HttpServletReques // no session cookie but do create log.debug("No session cookie but create is true, creating session"); sessionId = createSession(request, response); - return new SessionProxy(getServletContext(), persister, sessionId); + return new SessionProxy(getServletContext(), persister, sessionId, true); } if (persister.isValid(sessionId)) { // session cookie and the session is still active log.debug("Session cookie {} found", sessionId); - return new SessionProxy(getServletContext(), persister, sessionId); + return new SessionProxy(getServletContext(), persister, sessionId, false); } if (!create) { @@ -104,7 +104,7 @@ protected HttpSession proxySession(final boolean create, final HttpServletReques log.debug("Session cookie {} found but invalid or old and create is true, creating session", sessionId); persister.invalidate(sessionId); // cleanup if it's too old sessionId = createSession(request, response); - return new SessionProxy(getServletContext(), persister, sessionId); + return new SessionProxy(getServletContext(), persister, sessionId, true); } protected String createSession(final HttpServletRequest request, final HttpServletResponse response) {