/*
* Copyright 2011-2014 Eric F. Savage, code@efsavage.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.ajah.servlet.util;
import javax.servlet.ServletRequest;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.java.Log;
import com.ajah.util.AjahUtils;
/**
* Class for utilities that deal with {@link Cookie}s.
*
* @author Eric F. Savage <code@efsavage.com>
*
*/
@Log
public class CookieUtils {
/**
* Clears all cookies by setting {@link Cookie#setMaxAge(int)} to 0;
*
* @param request
* Request to get cookies from, required.
* @param response
* Response to set updated cookies on, required.
*/
public static void clearAllCookies(final HttpServletRequest request, final HttpServletResponse response) {
AjahUtils.requireParam(request, "request");
AjahUtils.requireParam(response, "response");
if (request.getCookies() == null) {
log.finest("No cookies to clear");
return;
}
for (final Cookie cookie : request.getCookies()) {
cookie.setMaxAge(0);
cookie.setDomain(request.getServerName());
cookie.setPath("/");
response.addCookie(cookie);
log.finest("Cleared cookie: " + cookie.getName());
}
}
/**
* Clears a cookies by setting its {@link Cookie#setMaxAge(int)} to 0;
*
* @param cookieName
* The name of the cookie to clear
* @param response
* Response to set updated cookies on, required.
* @param request
*/
public static void clearCookie(final String cookieName, final HttpServletRequest request, final HttpServletResponse response) {
AjahUtils.requireParam(cookieName, "cookieName");
AjahUtils.requireParam(request, "request");
AjahUtils.requireParam(response, "response");
final Cookie cookie = getCookie(request, cookieName);
if (cookie != null) {
cookie.setMaxAge(0);
response.addCookie(cookie);
}
}
/**
* Finds a cookie by name and returns it if found.
*
* @param request
* Request to look for cookies on, required.
* @param name
* Name of cookies to look for, required.
* @return Cookie if found, otherwise null.
*/
public static Cookie getCookie(final HttpServletRequest request, final String name) {
AjahUtils.requireParam(request, "request");
AjahUtils.requireParam(name, "name");
final Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (final Cookie cookie : cookies) {
if (cookie.getName().equals(name)) {
return cookie;
}
}
}
return null;
}
/**
* Alternate signature for
* {@link CookieUtils#getCookie(HttpServletRequest, String)}.
*
* @param request
* Request to look for cookies on, required.
* @param name
* Name of cookies to look for, required.
* @return Cookie if found, otherwise null.
*/
public static Cookie getCookie(final ServletRequest request, final String name) {
return getCookie((HttpServletRequest) request, name);
}
}