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 <[email protected]> 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<[email protected]> 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: [email protected] > >> For additional commands, e-mail: [email protected] > >> > >> > > > > > > > > -- > > "Hey you! Would you help me to carry the stone?" Pink Floyd > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > > > -- > 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: [email protected] > For additional commands, e-mail: [email protected] > >
