001// Copyright 2004, 2005 The Apache Software Foundation 002// 003// Licensed under the Apache License, Version 2.0 (the "License"); 004// you may not use this file except in compliance with the License. 005// You may obtain a copy of the License at 006// 007// http://www.apache.org/licenses/LICENSE-2.0 008// 009// Unless required by applicable law or agreed to in writing, software 010// distributed under the License is distributed on an "AS IS" BASIS, 011// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 012// See the License for the specific language governing permissions and 013// limitations under the License. 014 015package org.apache.tapestry.contrib.ajax; 016 017import java.util.HashMap; 018import java.util.Map; 019 020import javax.servlet.http.HttpSession; 021 022import org.apache.tapestry.BaseComponent; 023import org.apache.tapestry.IRequestCycle; 024 025/** 026 * @author mb 027 * @since 4.0 028 */ 029public abstract class Timeout extends BaseComponent { 030 public abstract int getWarningTime(); 031 public abstract int getAutoProlongTime(); 032 033 public abstract String getWarningMessage(); 034 public abstract String getExpirationMessage(); 035 036 public abstract boolean getDisableWarning(); 037 public abstract boolean getDisableAutoProlong(); 038 039 public abstract String getExpirationFunction(); 040 041 protected HttpSession getSession() 042 { 043 return getPage().getRequestCycle().getRequestContext().getSession(); 044 } 045 046 protected int getSessionTime() 047 { 048 return getSession().getMaxInactiveInterval(); 049 } 050 051 public boolean isInSession() 052 { 053 HttpSession session = getSession(); 054 return session != null; 055 } 056 057 public Map getScriptSymbols() 058 { 059 int nSessionTime = getSessionTime(); 060 int nTimeToMessage = nSessionTime - getWarningTime(); 061 if (nTimeToMessage < 0) 062 nTimeToMessage = 0; 063 int nRemainingTime = nSessionTime - nTimeToMessage; 064 int nAutoProlongTime = nSessionTime - getAutoProlongTime(); 065 066 Map mapSymbols = new HashMap(); 067 mapSymbols.put("confirmTimeout", new Integer(nTimeToMessage*1000)); 068 mapSymbols.put("expirationTimeout", new Integer(nRemainingTime*1000)); 069 mapSymbols.put("prolongSessionPeriod", new Integer(nAutoProlongTime*1000)); 070 mapSymbols.put("confirmMessage", getWarningMessage()); 071 mapSymbols.put("expirationMessage", getExpirationMessage()); 072 mapSymbols.put("disableWarning", new Boolean(getDisableWarning())); 073 mapSymbols.put("disableAutoProlong", new Boolean(getDisableAutoProlong())); 074 mapSymbols.put("expirationFunction", getExpirationFunction()); 075 return mapSymbols; 076 } 077 078 public void renewSession(IRequestCycle cycle) 079 { 080 // calling this method via the XTile service will automatically renew the session 081 // System.out.println("Prolonging session..."); 082 } 083}