Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/java/grails/plugin/databasesession/SessionProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down Expand Up @@ -172,6 +174,6 @@ public void invalidate() {
}

public boolean isNew() {
return false; // TODO
return _isNew;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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) {
Expand Down