X-Git-Url: https://juplo.de/gitweb/?p=examples%2Ffacebook-app;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fyourshouter%2FUserCookieGenerator.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fyourshouter%2FUserCookieGenerator.java;h=48d7078093f9bf4eb0b27fc0bbf662f75a26eb39;hp=0000000000000000000000000000000000000000;hb=02f599692669d48f9865764fda994ad61d203ffb;hpb=931f5c9b9a43acb81775e995a613bd0c5b8aab52
diff --git a/src/main/java/de/juplo/yourshouter/UserCookieGenerator.java b/src/main/java/de/juplo/yourshouter/UserCookieGenerator.java
new file mode 100644
index 0000000..48d7078
--- /dev/null
+++ b/src/main/java/de/juplo/yourshouter/UserCookieGenerator.java
@@ -0,0 +1,100 @@
+package de.juplo.yourshouter;
+
+
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.springframework.web.util.CookieGenerator;
+import org.thymeleaf.util.StringUtils;
+
+
+/**
+ * Utility class for managing the cookie that remembers the user.
+ *
+ * @author Kai Moritz
+ */
+final class UserCookieGenerator
+{
+ private final static Logger LOG =
+ LoggerFactory.getLogger(UserCookieGenerator.class);
+
+ public final static UserCookieGenerator INSTANCE = new UserCookieGenerator();
+
+
+ private final CookieGenerator generator = new CookieGenerator();
+
+
+ /**
+ * Constructs an instance of this class, using user
as the
+ * cookie-name.
+ */
+ private UserCookieGenerator()
+ {
+ generator.setCookieName("user");
+ }
+
+
+ /**
+ * Creates a cookie with the name user
, that stores the ID of
+ * the user for subsequent calls.
+ *
+ * @param user
+ * The ID of the current user
+ * @param response
+ * The {@link HttpServletResponse} to store the cookie in.
+ */
+ public void addCookie(String user, HttpServletResponse response)
+ {
+ LOG.debug("adding cookie {}={}", generator.getCookieName(), user);
+ generator.addCookie(response, user);
+ }
+
+ /**
+ * Removes the cookie with the name user
by storing an empty
+ * string as its value.
+ *
+ * @param response
+ * The {@link HttpServletResponse} to remove the cookie from.
+ */
+ public void removeCookie(HttpServletResponse response)
+ {
+ LOG.debug("removing cookie {}", generator.getCookieName());
+ generator.addCookie(response, "");
+ }
+
+ /**
+ * Reads the current value of the cookie with the name user
.
+ *
+ * @param request
+ * The {@link HttpServletRequest} to read the cookie-value from.
+ * @return
+ * The value of the cookie with the name user
, or
+ * null
, if no cookie by that name can be found or the value
+ * of the cookie is an empty string.
+ */
+ public String readCookieValue(HttpServletRequest request)
+ {
+ String name = generator.getCookieName();
+ Cookie[] cookies = request.getCookies();
+ if (cookies != null)
+ {
+ for (Cookie cookie : cookies)
+ {
+ if (cookie.getName().equals(name))
+ {
+ String value = cookie.getValue();
+ if (!StringUtils.isEmptyOrWhitespace(value))
+ {
+ LOG.debug("found cookie {}={}", name, value);
+ return value;
+ }
+ }
+ }
+ }
+ LOG.debug("cookie \"{}\" not found!", name);
+ return null;
+ }
+}