struts-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Chris Pratt <thechrispr...@gmail.com>
Subject Re: Full featured cookie utils out of the box
Date Wed, 26 Aug 2009 17:24:02 GMT
The request object stores retrieved Cookies per request, so there's really
no need for a separate cache.
  (*Chris*)

On Wed, Aug 26, 2009 at 10:13 AM, Xyzr <xyyzzzer@gmail.com> wrote:

>
> Is there any cache per request (in Struts 2) to store fetched cookies?
>
>
> Musachy Barroso wrote:
> >
> > a patch would be welcomed.
> >
> > musachy
> >
> > On Tue, Aug 25, 2009 at 7:51 PM, Xyzr<xyyzzzer@gmail.com> wrote:
> >>
> >> Struts 2 must have full featured cookie utils out of the box. I saw the
> >> current CookieInterceptor, but it's insufficient.
> >>
> >> Needed methods (Cookie is javax.servlet.http.Cookie):
> >> 1) Map<String, Cookie> getCookies(); // where key - cookie name
> >> 2) String getCookie(String cookieName);
> >> 3) setCookie(String cookieName, Cookie cookie); // or "addCookie(...)"
> >> 4) removeCookie(String cookieName);
> >>
> >> I suppose this feature can be implemented either as Interceptor or as
> >> Util
> >> class.
> >>
> >>
> //-----------------------------------------------------------------------------
> >> 1) Implementing as Interceptor:
> >> interface CookiesAware {
> >>        void setCookies(Map<String, Cookie> cookies);
> >>
> >>        // Helpers - methods that return Sets of cookies to be set/remove
> >>        // to/from response. Or these methods can be replaced by custom
> >>        // CookieHashMap that overrides "put", "putAll", "remove" and
> >> "clear"
> >>        // to set/remove cookies to/from response.
> >>        Set<Cookie> getCookiesToSet();
> >>        Set<String> getCookiesToRemove();
> >> }
> >>
> >> class CookiesInterceptor {
> >>        public String intercept(ActionInvocation actionInvocation) {
> >>                Object action = actionInvocation.getAction();
> >>                CookiesAware cookiesAware = null;
> >>                if (action instanceof CookiesAware)
> >>                {
> >>                        HttpServletRequest request =
> >> ServletActionContext.getRequest();
> >>                        Map<String, Cookie> cookies = new HashMap<String,
> >> Cookie>();
> >>                        for (Cookie cookie : request.getCookies()) {
> >>                                cookies.put(cookie.getName(), cookie);
> >>                        }
> >>                        cookiesAware = (CookiesAware) action;
> >>                        cookiesAware.setCookies(cookies);
> >>                }
> >>
> >>                String actionResult = actionInvocation.invoke();
> >>
> >>                if (cookiesAware != null) {
> >>                        HttpServletResponse response =
> >> ServletActionContext.getResponse();
> >>
> >>                        Set<Cookie> cookiesToSet =
> >> cookiesAware.getCookiesToSet();
> >>                        if (cookiesToSet != null)
> >>                                for (Cookie cookie : cookiesToSet) {
> >>                                        response.addCookie(cookie);
> >>                                }
> >>                        }
> >>
> >>                        Set<String> cookiesToRemove =
> >> cookiesAware.getCookiesToRemove();
> >>                        if (cookiesToRemove != null) {
> >>                                for (String cookieName : cookiesToRemove)
> >> {
> >>                                        Cookie cookie = new
> >> Cookie(cookieName, "");
> >>                                        cookie.setMaxAge(0);
> >>                                        response.addCookie(cookie);
> >>                                }
> >>                        }
> >>                }
> >>
> >>                return actionResult;
> >>        }
> >> }
> >>
> >>
> //-----------------------------------------------------------------------------
> >> 2) Implementing as Utility class:
> >> // Use code from CookiesInterceptor
> >> class abstract CookieUtils {
> >>        public static Map<String, Cookie> getCookies() {...}
> >>        public static String getCookie(String cookieName) {...}
> >>        public static void setCookie(String cookieName, Cookie cookie)
> >> {...}
> >>        public static void removeCookie(String cookieName) {...}
> >> }
> >> --
> >> View this message in context:
> >>
> http://www.nabble.com/Full-featured-cookie-utils-out-of-the-box-tp25145716p25145716.html
> >> Sent from the Struts - Dev mailing list archive at Nabble.com.
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> >> For additional commands, e-mail: dev-help@struts.apache.org
> >>
> >>
> >
> >
> >
> > --
> > "Hey you! Would you help me to carry the stone?" Pink Floyd
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> > For additional commands, e-mail: dev-help@struts.apache.org
> >
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Full-featured-cookie-utils-out-of-the-box-tp25145716p25151460.html
> Sent from the Struts - Dev mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@struts.apache.org
> For additional commands, e-mail: dev-help@struts.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message