/*
* $Id: SessionContainerPreferences.java,v 1.8 2002/09/16 08:05:06 jkl Exp $
*
* Copyright (c) 2002 Njet Communications Ltd. All Rights Reserved.
*
* Use is subject to license terms, as defined in
* Anvil Sofware License, Version 1.1. See LICENSE
* file, or http://njet.org/license-1.1.txt
*/
package anvil.server;
import java.io.IOException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import anvil.session.SessionContainer;
/**
* class SessionContainerPreferences
*
* @author: Jani Lehtim�ki
*/
public class SessionContainerPreferences extends Preferences
{
public static final String[] PREFERENCES = {
"provider", "string",
"checkout", "int",
"idlength", "int",
};
private int _checkout = 30;
private int _id_length = 20;
private String _provider = "anvil.session.basic.BasicSessionContainer";
public SessionContainerPreferences(Zone parent)
{
super(parent);
}
public void setCheckoutFrequency(int checkout)
{
_checkout = checkout;
}
public int getCheckoutFrequency()
{
return _checkout;
}
public void setIdLength(int length)
{
_id_length = length;
}
public int getIdLength()
{
return _id_length;
}
public void setProvider(String provider)
{
if (provider != null) {
_provider = provider;
}
}
public String getProvider()
{
return _provider;
}
public int getType()
{
return SESSION_CONTAINER;
}
public String[] getPreferences()
{
return PREFERENCES;
}
public Object getPreference(String name)
{
if (name.equalsIgnoreCase("checkout")) {
return new Integer(_checkout);
}
if (name.equalsIgnoreCase("idlength")) {
return new Integer(_id_length);
}
if (name.equalsIgnoreCase("provider")) {
return _provider;
}
return super.getPreference(name);
}
public boolean setPreference(String name, String value)
{
if (name.equalsIgnoreCase("checkout")) {
setCheckoutFrequency(ConfigReader.toInt(value));
} else if (name.equalsIgnoreCase("idlength")) {
setIdLength(ConfigReader.toInt(value));
} else if (name.equalsIgnoreCase("provider")) {
setProvider(value);
} else {
return super.setPreference(name, value);
}
return true;
}
public SessionContainer createContainer()
{
try {
SessionContainer container = (SessionContainer)Class.forName(_provider).newInstance();
container.initialize(getParent());
return container;
} catch (ConfigurationError e) {
e.fillInStackTrace();
throw e;
} catch (Throwable t) {
throw new ConfigurationError("Couldn't create session container: " +
_provider + ", reason: " + t.toString());
}
}
}