blob: 6d50ea8ea3a05d788d5b4f1772da1ef96bc852ad [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.context;
import java.io.IOException;
import java.io.Serializable;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.ContentHandler;
import org.xml.sax.ext.LexicalHandler;
import org.apache.excalibur.source.SourceParameters;
import org.apache.cocoon.ProcessingException;
/**
* Interface for a SessionContext.
* This interface describes a SessionContext. The SessionContext is a data
* container containing structured XML which can be retrieved/set by the
* session transformer.
* This interface does not specify how the session context stores the data.
* This is left to the implementation itself, but actually this interface
* is build in the DOM model.
* As this context is used in a web context, all methods must be synchronized.
*
* @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
* @deprecated This block is deprecated and will be removed in future versions.
* @version CVS $Id$
*/
public interface SessionContext
extends Serializable {
/** Set the name of the context.
* This method must be invoked in the init phase.
* In addition a load and a save resource can be provided.
*/
void setup(String value, String loadResource, String saveResource);
/**
* Get the name of the context
*/
String getName();
/**
* Get a document fragment.
* If the node specified by the path exist, its content is returned
* as a DocumentFragment.
* If the node does not exists, <CODE>null</CODE> is returned.
*/
DocumentFragment getXML(String path)
throws ProcessingException ;
/**
* Set a document fragment at the given path.
* The implementation of this method is context specific.
* Usually all children of the node specified by the path are removed
* and the children of the fragment are inserted as new children.
* If the path is not existent it is created.
*/
void setXML(String path, DocumentFragment fragment)
throws ProcessingException;
/**
* Append a document fragment at the given path.
* The implementation of this method is context specific.
* Usually the children of the fragment are appended as new children of the
* node specified by the path.
* If the path is not existent it is created and this method should work
* in the same way as setXML.
*/
void appendXML(String path, DocumentFragment fragment)
throws ProcessingException;
/**
* Remove some content from the context.
* The implementation of this method is context specific.
* Usually this method should remove all children of the node specified
* by the path.
*/
void removeXML(String path)
throws ProcessingException;
/**
* Set a context attribute.
* Attributes over a means to store any data (object) in a session
* context. If <CODE>value</CODE> is <CODE>null</CODE> the attribute is
* removed. If already an attribute exists with the same key, the value
* is overwritten with the new one.
*/
void setAttribute(String key, Object value)
throws ProcessingException;
/**
* Get the value of a context attribute.
* If the attribute is not available return <CODE>null</CODE>.
*/
Object getAttribute(String key)
throws ProcessingException;
/**
* Get the value of a context attribute.
* If the attribute is not available the return the
* <CODE>defaultObject</CODE>.
*/
Object getAttribute(String key, Object defaultObject)
throws ProcessingException;
/**
* Get a copy of the first node specified by the path.
* If the node does not exist, <CODE>null</CODE> is returned.
*/
Node getSingleNode(String path)
throws ProcessingException;
/**
* Get a copy of all nodes specified by the path.
*/
NodeList getNodeList(String path)
throws ProcessingException;
/**
* Set the value of a node. The node is copied before insertion.
*/
void setNode(String path, Node node)
throws ProcessingException;
/**
* Get the value of this node.
* This is similiar to the xsl:value-of function.
* If the node does not exist, <code>null</code> is returned.
*/
String getValueOfNode(String path)
throws ProcessingException;
/**
* Set the value of a node.
* All children of the node are removed beforehand and one single text
* node with the given value is appended to the node.
*/
void setValueOfNode(String path, String value)
throws ProcessingException;
/**
* Stream the XML directly to the handler.
* This streams the contents of getXML() to the given handler without
* creating a DocumentFragment containing a copy of the data.
* If no data is available (if the path does not exist) <code>false</code> is
* returned, otherwise <code>true</code>.
*/
boolean streamXML(String path,
ContentHandler contentHandler,
LexicalHandler lexicalHandler)
throws SAXException, ProcessingException;
/**
* Try to load XML into the context.
* If the context does not provide the ability of loading,
* an exception is thrown.
*/
void loadXML(String path,
SourceParameters parameters)
throws SAXException, ProcessingException, IOException;
/**
* Try to save XML from the context.
* If the context does not provide the ability of saving,
* an exception is thrown.
*/
void saveXML(String path,
SourceParameters parameters)
throws SAXException, ProcessingException, IOException;
}