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 015 package org.apache.tapestry.contrib.ajax; 016 017 import java.util.HashMap; 018 import java.util.Map; 019 020 import javax.servlet.http.HttpSession; 021 022 import org.apache.tapestry.BaseComponent; 023 import org.apache.tapestry.IRequestCycle; 024 025 /** 026 * @author mb 027 * @since 4.0 028 */ 029 public 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 }