package com.vaadin.tests.minitutorials.v70; import javax.servlet.http.Cookie; import com.vaadin.server.VaadinRequest; import com.vaadin.server.VaadinService; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Notification; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.v7.ui.TextField; /** * Tutorial example for * https://vaadin.com/wiki/-/wiki/Main/Setting%20and%20reading%20Cookies */ public class CookieMonsterUI extends UI { private static final String NAME_COOKIE = "name"; @Override protected void init(VaadinRequest request) { final VerticalLayout layout = new VerticalLayout(); layout.setMargin(true); setContent(layout); final TextField nameField = new TextField(); layout.addComponent(nameField); // Read previously stored cookie value Cookie nameCookie = getCookieByName(NAME_COOKIE); if (getCookieByName(NAME_COOKIE) != null) { nameField.setValue(nameCookie.getValue()); } Button button = new Button("Store name in cookie"); button.addClickListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { String name = nameField.getValue(); // See if name cookie is already set Cookie nameCookie = getCookieByName(NAME_COOKIE); if (nameCookie != null) { String oldName = nameCookie.getValue(); nameCookie.setValue(name); Notification.show("Updated name in cookie from " + oldName + " to " + name); } else { // Create a new cookie nameCookie = new Cookie(NAME_COOKIE, name); nameCookie.setComment( "Cookie for storing the name of the user"); Notification.show("Stored name " + name + " in cookie"); } // Make cookie expire in 2 minutes nameCookie.setMaxAge(120); // Set the cookie path. nameCookie.setPath( VaadinService.getCurrentRequest().getContextPath()); // Save cookie VaadinService.getCurrentResponse().addCookie(nameCookie); } }); layout.addComponent(button); } private Cookie getCookieByName(String name) { // Fetch all cookies from the request Cookie[] cookies = VaadinService.getCurrentRequest().getCookies(); // Iterate to find a cookie by its name for (Cookie cookie : cookies) { if (name.equals(cookie.getName())) { return cookie; } } return null; } }