diff --git a/core/src/main/java/org/acegisecurity/ui/savedrequest/SavedRequest.java b/core/src/main/java/org/acegisecurity/ui/savedrequest/SavedRequest.java index 57034d9186..53b4d47d0f 100644 --- a/core/src/main/java/org/acegisecurity/ui/savedrequest/SavedRequest.java +++ b/core/src/main/java/org/acegisecurity/ui/savedrequest/SavedRequest.java @@ -17,12 +17,12 @@ package org.acegisecurity.ui.savedrequest; import org.acegisecurity.util.PortResolver; import org.acegisecurity.util.UrlUtils; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.springframework.util.Assert; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; @@ -31,18 +31,15 @@ import java.util.List; import java.util.Locale; import java.util.Map; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; - /** * Represents central information from a HttpServletRequest.

This class is used by {@link * org.acegisecurity.ui.AbstractProcessingFilter} and {@link org.acegisecurity.wrapper.SavedRequestAwareWrapper} to * reproduce the request after successful authentication. An instance of this class is stored at the time of an * authentication exception by {@link org.acegisecurity.ui.ExceptionTranslationFilter}.

- *

IMPLEMENTATION NOTE: It is assumed that this object is accessed only from the context of a single + *

IMPLEMENTATION NOTE: It is assumed that this object is accessed only from the context of a single * thread, so no synchronization around internal collection classes is performed.

- *

This class is based on code in Apache Tomcat.

+ *

This class is based on code in Apache Tomcat.

* * @author Craig McClanahan * @author Andrey Grebnev @@ -133,7 +130,7 @@ public class SavedRequest implements java.io.Serializable { //~ Methods ======================================================================================================== private void addCookie(Cookie cookie) { - cookies.add(cookie); + cookies.add(new SavedCookie(cookie)); } private void addHeader(String name, String value) { @@ -161,7 +158,6 @@ public class SavedRequest implements java.io.Serializable { * * @param request DOCUMENT ME! * @param portResolver DOCUMENT ME! - * * @return DOCUMENT ME! */ public boolean doesRequestMatch(HttpServletRequest request, PortResolver portResolver) { @@ -180,7 +176,8 @@ public class SavedRequest implements java.io.Serializable { return false; } - if (!propertyEquals("serverPort", new Integer(this.serverPort), new Integer(portResolver.getServerPort(request)))) { + if (!propertyEquals("serverPort", new Integer(this.serverPort), new Integer(portResolver.getServerPort(request)))) + { return false; } @@ -212,7 +209,12 @@ public class SavedRequest implements java.io.Serializable { } public List getCookies() { - return cookies; + List cookieList = new ArrayList(cookies.size()); + for (Iterator iterator = cookies.iterator(); iterator.hasNext();) { + SavedCookie savedCookie = (SavedCookie) iterator.next(); + cookieList.add(savedCookie.getCookie()); + } + return cookieList; } /**