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 org.apache.tapestry.BaseComponent;
021 import org.apache.tapestry.IRequestCycle;
022 import org.apache.tapestry.web.WebRequest;
023 import org.apache.tapestry.web.WebSession;
024
025 /**
026 * @author mb
027 * @since 4.0
028 */
029 public abstract class Timeout extends BaseComponent
030 {
031
032 public abstract int getWarningTime();
033
034 public abstract int getAutoProlongTime();
035
036 public abstract String getWarningMessage();
037
038 public abstract String getExpirationMessage();
039
040 public abstract boolean getDisableWarning();
041
042 public abstract boolean getDisableAutoProlong();
043
044 public abstract String getExpirationFunction();
045
046 public abstract WebRequest getRequest();
047
048 protected WebSession getSession()
049 {
050 return getRequest().getSession(true);
051 }
052
053 protected int getSessionTime()
054 {
055 return getSession().getMaxInactiveInterval();
056 }
057
058 public boolean isInSession()
059 {
060 return getRequest().getSession(false) != null;
061 }
062
063 public Map getScriptSymbols()
064 {
065 int nSessionTime = getSessionTime();
066 int nTimeToMessage = nSessionTime - getWarningTime();
067 if (nTimeToMessage < 0) nTimeToMessage = 0;
068 int nRemainingTime = nSessionTime - nTimeToMessage;
069 int nAutoProlongTime = nSessionTime - getAutoProlongTime();
070
071 Map mapSymbols = new HashMap();
072 mapSymbols.put("confirmTimeout", new Integer(nTimeToMessage * 1000));
073 mapSymbols.put("expirationTimeout", new Integer(nRemainingTime * 1000));
074 mapSymbols.put("prolongSessionPeriod", new Integer(
075 nAutoProlongTime * 1000));
076 mapSymbols.put("confirmMessage", getWarningMessage());
077 mapSymbols.put("expirationMessage", getExpirationMessage());
078 mapSymbols.put("disableWarning", new Boolean(getDisableWarning()));
079 mapSymbols.put("disableAutoProlong", new Boolean(
080 getDisableAutoProlong()));
081 mapSymbols.put("expirationFunction", getExpirationFunction());
082 return mapSymbols;
083 }
084
085 public void renewSession(IRequestCycle cycle)
086 {
087 // calling this method via the XTile service will automatically renew
088 // the session
089 // System.out.println("Prolonging session...");
090 }
091 }