blob: d74256f77741e22132db66fa98f60193b01f38fb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.webapps.session;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.Session;
import org.apache.cocoon.xml.XMLConsumer;
import org.w3c.dom.DocumentFragment;
import org.xml.sax.SAXException;
/**
*
* This is the session manager component.
*
* The main purpose of this component is creating and termination sessions
*
* @author <a href="mailto:cziegeler@apache.org">Carsten Ziegeler</a>
* @deprecated This block is deprecated and will be removed in future versions.
* @version CVS $Id$
*/
public interface SessionManager {
/** Avalon role */
String ROLE = SessionManager.class.getName();;
/**
* Create a new session for the user.
* A new session is created for this user. If the user has already a session,
* no new session is created and the old one is returned.
*/
Session createSession();
/**
* Get the session for the current user.
* If the user has no session right now, <CODE>null</CODE> is returned.
* If createFlag is true, the session is created if it does not exist.
*/
Session getSession(boolean createFlag);
/**
* Terminate the current session.
* If the user has a session, this session is terminated and all of its
* data is deleted.
* @param force If this is set to true the session is terminated, if
* it is set to false, the session is only terminated
* if no session context is available.
*/
void terminateSession(boolean force)
throws ProcessingException;
/**
* Get information from the context.
* A document fragment containg the xml data stored in the session context
* with the given name is returned. If the information is not available,
* <CODE>null</CODE> is returned.
* @param contextName The name of the public context.
* @param path XPath expression specifying which data to get.
* @return A DocumentFragment containing the data or <CODE>null</CODE>
*/
DocumentFragment getContextFragment(String contextName,
String path)
throws ProcessingException;
/**
* Stream public context data.
* The document fragment containing the data from a path in the
* given context is streamed to the consumer.
*
* @param contextName The name of the public context.
* @param path XPath expression specifying which data to get.
*
* @return If the data is available <code>true</code> is returned,
* otherwise <code>false</code> is returned.
*/
boolean streamContextFragment(String contextName,
String path,
XMLConsumer consumer)
throws SAXException, ProcessingException;
/**
* Set data in a public context.
* The document fragment containing the data is set at the given path in the
* public session context.
*
* @param contextName The name of the public context.
* @param path XPath expression specifying where to set the data.
* @param fragment The DocumentFragment containing the data.
*
*/
void setContextFragment(String contextName,
String path,
DocumentFragment fragment)
throws ProcessingException;
/**
* Append data in a public context.
* The document fragment containing the data is appended at the given
* path in the public session context.
*
* @param contextName The name of the public context.
* @param path XPath expression specifying where to append the data.
* @param fragment The DocumentFragment containing the data.
*
*/
void appendContextFragment(String contextName,
String path,
DocumentFragment fragment)
throws ProcessingException;
/**
* Merge data in a public context.
* The document fragment containing the data is merged at the given
* path in the public session context.
*
* @param contextName The name of the public context.
* @param path XPath expression specifying where to merge the data.
* @param fragment The DocumentFragment containing the data.
*
*/
void mergeContextFragment(String contextName,
String path,
DocumentFragment fragment)
throws ProcessingException;
/**
* Remove data in a public context.
* The data specified by the path is removed from the public session context.
*
* @param contextName The name of the public context.
* @param path XPath expression specifying where to merge the data.
*
*/
void removeContextFragment(String contextName,
String path)
throws ProcessingException;
}