/*
* $Id: Context.java,v 1.13 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 java.io.OutputStream;
import java.net.URL;
import java.net.MalformedURLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import anvil.Log;
import anvil.core.Any;
import anvil.parser.InputSource;
import anvil.parser.URLInputSource;
import anvil.session.Session;
import anvil.session.SessionContainer;
/**
* class Context
*
* @author: Jani Lehtim�ki
*/
public class Context
{
private Address _address;
private RequestAdapter _adapter;
private HttpServletRequest _request = null;
private HttpServletResponse _response = null;
private OutputStream _output = null;
private Session _session = null;
private Citizen _citizen = null;
private String _resource = null;
private Log _log;
public Context(Address address, String resource)
{
_address = address;
_resource = resource;
}
void init(RequestAdapter adapter, HttpServletRequest request, HttpServletResponse response)
{
_adapter = adapter;
_request = request;
_response = response;
_output = new OutputStreamProxy(_response);
String session_id = adapter.getSession();
if (session_id != null) {
SessionContainer container = _address.getZone().getSessionContainer();
if (container != null) {
_session = container.getSession(session_id);
if (_session != null) {
String citizen =_session.getCitizen();
if (citizen != null) {
Realm realm = _address.getZone().getAuthorization().getRealm();
if (realm != null) {
_citizen = realm.getCitizen(citizen);
}
}
}
}
}
_log = _address.getZone().log();
}
void destroy()
{
_address = null;
_request = null;
_response = null;
_output = null;
_session = null;
_citizen = null;
_adapter = null;
_resource = null;
_log = null;
}
public Log log()
{
return _log;
}
public OutputStream getOutputStream() throws IOException
{
return _output;
}
public Address getAddress()
{
return _address;
}
public Server getServer()
{
return _address.getServer();
}
public String getHostname()
{
return _address.getHostname();
}
public String getPathinfo()
{
return _address.getPathinfo();
}
public String getOriginalPathinfo()
{
return _adapter.getPathinfo();
}
public RequestAdapter getAdapter()
{
return _adapter;
}
public String getResource()
{
return _resource;
}
public void setResource(String resource)
{
_resource = resource;
}
public Zone getZone()
{
return _address.getZone();
}
public URL getURL()
{
return _address.getURL();
}
public HttpServletRequest getRequest()
{
return _request;
}
public HttpServletResponse getResponse()
{
return _response;
}
public String getSessionId()
{
if (_session != null) {
return _session.getId();
} else {
return _adapter.getSession();
}
}
public Session getSession()
{
return _session;
}
public void setSession(Session session)
{
_session = session;
}
public void setCitizen(Citizen citizen)
{
_citizen = citizen;
if (_session != null) {
_session.setCitizen(citizen.getName());
}
}
public Citizen getCitizen()
{
return _citizen;
}
public Session getSession(String session_id)
{
SessionContainer container = getZone().getSessionContainer();
if (container != null) {
return container.getSession(session_id);
} else {
return null;
}
}
public Session createSession()
{
SessionContainer container = getZone().getSessionContainer();
if (container != null) {
SessionPreferences prefs = getZone().getSessionPreferences();
return container.createSession(prefs.getLifetime(), prefs.getTimeout());
} else {
return null;
}
}
}