/* * Copyright 2000-2016 Vaadin Ltd. * * 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.vaadin.tests.components.ui; import com.vaadin.server.CustomizedSystemMessages; import com.vaadin.server.SystemMessages; import com.vaadin.server.SystemMessagesInfo; import com.vaadin.server.SystemMessagesProvider; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Label; public class TimeoutRedirectResetsOnActivity extends AbstractReindeerTestUI { private int maxActiveInterval = 15; private int timeoutOverhead = 15; @Override protected void setup(VaadinRequest request) { setupTimeout(request); Label startedLabel = new Label(); startedLabel.setValue(String.valueOf(System.currentTimeMillis())); startedLabel.setId("startedTime"); Label originalLabel = new Label(); originalLabel.setId("originalExpireTime"); originalLabel.setValue(String.valueOf(getExpireTime())); final Label expiresLabel = new Label(); expiresLabel.setId("actualExpireTime"); Button button = new Button("Reset", new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { expiresLabel.setValue(String.valueOf(getExpireTime())); } }); button.setId("reset"); addComponent(button); addComponent(startedLabel); addComponent(originalLabel); addComponent(expiresLabel); } private long getExpireTime() { return System.currentTimeMillis() + (maxActiveInterval + timeoutOverhead) * 1000; } private void setupTimeout(VaadinRequest request) { request.getService() .setSystemMessagesProvider(new SystemMessagesProvider() { @Override public SystemMessages getSystemMessages( SystemMessagesInfo systemMessagesInfo) { CustomizedSystemMessages msgs = new CustomizedSystemMessages(); msgs.setSessionExpiredMessage(null); msgs.setSessionExpiredCaption(null); msgs.setSessionExpiredNotificationEnabled(true); msgs.setSessionExpiredURL("http://example.com/"); return msgs; } }); /* * NOTE: in practice, this means a timeout after 25 seconds, because of * implementation details in * com.vaadin.server.communication.MetadataWriter */ getSession().getSession().setMaxInactiveInterval(maxActiveInterval); } @Override protected String getTestDescription() { return "The timeout redirect timer should reset if there's activity between the client and server."; } @Override @SuppressWarnings("boxing") protected Integer getTicketNumber() { return 12446; } }