package
org.projectapollo.demo.Session.Expiration;
import apollo.*;
import apollo.Log.*;
import apollo.Template.*;
import apollo.Storable.*;
import apollo.Session.*;
import
org.projectapollo.demo.Storable.*;
import java.util.*;
public class
ExpirationBroker extends
PageBroker {
private
Vector AS;
AcceptClause normalEntry;
AcceptClause setExpireTime;
AcceptClause expireNow;
public
ExpirationBroker(ManagerTracker MT, String fquid, PageBroker PB) throws
TemplatePageException {
super(MT,fquid,PB);
MT.getPM().registerTemplatePage(FQUID, new
TemplatePage(MT,this));
AS = new
Vector();
normalEntry= new
AcceptClause("NormalEntry");
setExpireTime= new
AcceptClause("Set
Expire Time");
setExpireTime.addAcceptClause(AcceptClause.STRING, "SetExpireTime",
AcceptClause.REQUIRED);
setExpireTime.addAcceptClause(AcceptClause.INT, "ExpireTime",
AcceptClause.REQUIRED);
expireNow= new
AcceptClause("Expire
Now");
expireNow.addAcceptClause(AcceptClause.STRING, "ExpireNow",
AcceptClause.REQUIRED);
AS.addElement(setExpireTime);
AS.addElement(expireNow);
AS.addElement(normalEntry);
}
public
HTTPResponse render(TransactionTracker TT, HTTPRequest req, WebSession
thisSession) throws
ApolloException {
EntryAssertionManager EAM = new
EntryAssertionManager(MT, AS);
EAM.evaluate(req);
Hashtable RT = new
Hashtable();
if
(EAM.isAccept(expireNow)) {
thisSession.setExpired(true);
RT.put("JSMessage",
"This session is now
expired");
}
if
(EAM.isAccept(setExpireTime)) {
if
(EAM.getInt("ExpireTime")<2000)
{
thisSession.setTimeout(EAM.getInt("ExpireTime"));
}
}
RT.put("CreationDate",
thisSession.getCreationDate());
RT.put("TimeBetweenTransactions",
new
Integer(thisSession.getTimeBetweenTransactions()));
RT.put("Timeout",
new
Integer(thisSession.getTimeout()));
RT.put("TotalTransactions",
new
Integer(thisSession.getTransactions()));
SelectObject soExpireTime = new
SelectObject();
soExpireTime.addOption("1800");
soExpireTime.addOption("180");
soExpireTime.addOption("60");
soExpireTime.addOption("15");
soExpireTime.addOption("5");
soExpireTime.setChoice(Integer.toString(thisSession.getTimeout()));
RT.put("ExpireTime",
soExpireTime);
return
MT.getPM().getPage(FQUID).render(RT,thisSession);
}// end render
}