blob: 18a581e564e84e6f33fe98743ed5714917282b02 [file] [log] [blame]
/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Xalan" and "Apache Software Foundation" must
* not be used to endorse or promote products derived from this
* software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* nor may "Apache" appear in their name, without prior written
* permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation and was
* originally based on software copyright (c) 1999, Lotus
* Development Corporation., http://www.lotus.com. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.xpath.objects;
import java.io.PrintStream;
import java.net.URL;
import javax.xml.transform.TransformerException;
import org.apache.xml.dtm.DTM;
import org.apache.xml.dtm.DTMIterator;
import org.apache.xml.dtm.XType;
import org.apache.xml.utils.FastStringBuffer;
import org.apache.xml.utils.QName;
import org.apache.xml.utils.XMLString;
import org.apache.xpath.Expression;
import org.apache.xpath.ExpressionNode;
import org.apache.xpath.ExpressionOwner;
import org.apache.xpath.NodeSetDTM;
import org.apache.xpath.VariableComposeState;
import org.apache.xpath.XPathContext;
import org.apache.xpath.XPathVisitor;
import org.apache.xpath.parser.Node;
import org.apache.xpath.parser.Token;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.NodeList;
import org.w3c.dom.traversal.NodeIterator;
import org.xml.sax.ContentHandler;
import org.xml.sax.SAXException;
/**
* The responsibility of enclosing_type is to .
*
* Created Jul 18, 2002
* @author sboag
*/
public class XSequenceSingleton extends XObject implements XSequence
{
XObject m_xobject;
int m_pos = 0;
/**
* Constructor for XSequenceSingleton.
* @param obj
*/
public XSequenceSingleton(XObject obj)
{
m_xobject=obj;
}
/**
* @see org.apache.xml.dtm.XSequence#getTypes()
*/
public int getTypes()
{
return m_xobject.getType();
}
/**
* @see org.apache.xml.dtm.XSequence#next()
*/
public XObject next()
{
if(m_pos == 0)
{
m_pos++;
return this;
}
else
return null;
}
/**
* @see org.apache.xml.dtm.XSequence#previous()
*/
public XObject previous()
{
if(m_pos == 1)
{
m_pos--;
return this;
}
else
return null;
}
/**
* @see org.apache.xml.dtm.XSequence#getCurrent()
*/
public XObject getCurrent()
{
if(m_pos == 0)
{
return this;
}
else
return null;
}
/**
* @see org.apache.xml.dtm.XSequence#isFresh()
*/
public boolean isFresh()
{
return (m_pos == 0);
}
/**
* At this level, assume that the contained type is always an
* atomic type.
* @see org.apache.xml.dtm.XSequence#getTypeNS()
*/
public String getTypeNS()
{
return XType.XMLSCHEMA_DATATYPE_NAMESPACE;
}
/**
* At this level, assume that the contained type is always an
* atomic type.
* @see org.apache.xml.dtm.XSequence#getTypeLocalName()
*/
public String getTypeLocalName()
{
if(m_pos != 0)
return null;
// For now, I'm going to do this ssslllloooowwww.
return XType.getLocalNameFromType(m_xobject.getType());
}
/**
* @see org.apache.xml.dtm.XSequence#isSchemaType(String, String)
*/
public boolean isSchemaType(String namespace, String localname)
{
String uri = getTypeNS();
String thisname = getTypeLocalName();
if(null == namespace)
return false;
return uri.equals(uri) && thisname.equals(localname);
}
/**
* @see org.apache.xml.dtm.XSequence#setShouldCache(boolean)
*/
public void setShouldCache(boolean b)
{
}
/**
* @see org.apache.xml.dtm.XSequence#getIsRandomAccess()
*/
public boolean getIsRandomAccess()
{
return true; // as far as it goes.
}
/**
* @see org.apache.xml.dtm.XSequence#isMutable()
*/
public boolean isMutable()
{
return false;
}
/**
* @see org.apache.xml.dtm.XSequence#getCurrentPos()
*/
public int getCurrentPos()
{
return m_pos;
}
/**
* @see org.apache.xml.dtm.XSequence#setCurrentPos(int)
*/
public void setCurrentPos(int i)
{
m_pos = i;
}
/**
* @see org.apache.xml.dtm.XSequence#getLength()
*/
public int getLength()
{
return (null == m_xobject) ? 0 : 1;
}
/**
* @see org.apache.xml.dtm.XSequence#isSingletonOrEmpty()
*/
public boolean isSingletonOrEmpty()
{
return true;
}
/**
* @see org.apache.xpath.objects.XObject#getType()
*/
public int getType()
{
if(m_pos != 0)
return XType.SEQ;
return m_xobject.getType();
}
/**
* @see org.apache.xml.dtm.XSequence#isPureNodeSequence()
*/
public boolean isPureNodeSequence()
{
return false;
}
/**
* @see java.lang.Object#clone()
*/
public Object clone() throws CloneNotSupportedException
{
return super.clone();
}
/**
* @see org.apache.xpath.objects.XObject#allowDetachToRelease(boolean)
*/
public void allowDetachToRelease(boolean allowRelease)
{
m_xobject.allowDetachToRelease(allowRelease);
}
/**
* @see org.apache.xpath.objects.XObject#appendToFsb(FastStringBuffer)
*/
public void appendToFsb(FastStringBuffer fsb)
{
m_xobject.appendToFsb(fsb);
}
/**
* @see org.apache.xpath.objects.XObject#bool()
*/
public boolean bool() throws TransformerException
{
return m_xobject.bool();
}
/**
* @see org.apache.xpath.objects.XObject#boolWithSideEffects()
*/
public boolean boolWithSideEffects() throws TransformerException
{
return m_xobject.boolWithSideEffects();
}
/**
* @see org.apache.xpath.XPathVisitable#callVisitors(ExpressionOwner, XPathVisitor)
*/
public void callVisitors(ExpressionOwner owner, XPathVisitor visitor)
{
m_xobject.callVisitors(owner, visitor);
}
/**
* @see org.apache.xpath.objects.XObject#castToType(int, XPathContext)
*/
public Object castToType(int t, XPathContext support)
throws TransformerException
{
return m_xobject.castToType(t, support);
}
/**
* @see org.apache.xpath.Expression#deepEquals(Expression)
*/
public boolean deepEquals(Expression expr)
{
return m_xobject.deepEquals(expr);
}
/**
* @see org.apache.xpath.objects.XObject#destruct()
*/
public void destruct()
{
m_xobject.destruct();
}
/**
* @see org.apache.xpath.objects.XObject#detach()
*/
public void detach()
{
m_xobject.detach();
}
/**
* @see org.apache.xpath.objects.XObject#dispatchCharactersEvents(ContentHandler)
*/
public void dispatchCharactersEvents(ContentHandler ch) throws SAXException
{
m_xobject.dispatchCharactersEvents(ch);
}
/**
* @see org.apache.xpath.objects.XObject#equals(XObject)
*/
public boolean equals(XObject obj2)
{
return m_xobject.equals(obj2);
}
/**
* @see org.apache.xpath.objects.XObject#error(int, Object[])
*/
protected void error(int msg, Object[] args) throws TransformerException
{
m_xobject.error(msg, args);
}
/**
* @see org.apache.xpath.objects.XObject#error(int)
*/
protected void error(int msg) throws TransformerException
{
m_xobject.error(msg);
}
/**
* @see org.apache.xpath.Expression#execute(XPathContext)
*/
public XObject execute(XPathContext xctxt) throws TransformerException
{
return m_xobject.execute(xctxt);
}
/**
* @see org.apache.xpath.Expression#fixupVariables(VariableComposeState)
*/
public void fixupVariables(VariableComposeState vcs)
{
m_xobject.fixupVariables(vcs);
}
/**
* @see org.apache.xpath.objects.XObject#getFresh()
*/
public XObject getFresh()
{
return m_xobject.getFresh();
}
/**
* @see org.apache.xpath.objects.XObject#getTypeString()
*/
public String getTypeString()
{
return m_xobject.getTypeString();
}
/**
* @see org.apache.xpath.objects.XObject#greaterThan(XObject)
*/
public boolean greaterThan(XObject obj2) throws TransformerException
{
return m_xobject.greaterThan(obj2);
}
/**
* @see org.apache.xpath.objects.XObject#greaterThanOrEqual(XObject)
*/
public boolean greaterThanOrEqual(XObject obj2) throws TransformerException
{
return m_xobject.greaterThanOrEqual(obj2);
}
/**
* @see org.apache.xpath.parser.SimpleNode#isPathExprReduced()
*/
public boolean isPathExprReduced()
{
return m_xobject.isPathExprReduced();
}
/**
* @see org.apache.xpath.objects.XObject#iter()
*/
public DTMIterator iter() throws TransformerException
{
return m_xobject.iter();
}
/**
* @see org.apache.xpath.objects.XObject#lessThan(XObject)
*/
public boolean lessThan(XObject obj2) throws TransformerException
{
return m_xobject.lessThan(obj2);
}
/**
* @see org.apache.xpath.objects.XObject#lessThanOrEqual(XObject)
*/
public boolean lessThanOrEqual(XObject obj2) throws TransformerException
{
return m_xobject.lessThanOrEqual(obj2);
}
/**
* @see org.apache.xpath.objects.XObject#mutableNodeset()
*/
public NodeSetDTM mutableNodeset() throws TransformerException
{
return m_xobject.mutableNodeset();
}
/**
* @see org.apache.xpath.objects.XObject#nodelist()
*/
public NodeList nodelist() throws TransformerException
{
return m_xobject.nodelist();
}
/**
* @see org.apache.xpath.objects.XObject#nodeset()
*/
public NodeIterator nodeset() throws TransformerException
{
return m_xobject.nodeset();
}
/**
* @see org.apache.xpath.objects.XObject#notEquals(XObject)
*/
public boolean notEquals(XObject obj2) throws TransformerException
{
return m_xobject.notEquals(obj2);
}
/**
* @see org.apache.xpath.objects.XObject#num()
*/
public double num() throws TransformerException
{
return m_xobject.num();
}
/**
* @see org.apache.xpath.objects.XObject#numWithSideEffects()
*/
public double numWithSideEffects() throws TransformerException
{
return m_xobject.numWithSideEffects();
}
/**
* @see org.apache.xpath.objects.XObject#object()
*/
public Object object()
{
return m_xobject.object();
}
/**
* @see org.apache.xpath.objects.XObject#reset()
*/
public void reset()
{
m_xobject.reset();
}
/**
* @see org.apache.xpath.objects.XObject#rtf()
*/
public int rtf()
{
return m_xobject.rtf();
}
/**
* @see org.apache.xpath.objects.XObject#rtf(XPathContext)
*/
public int rtf(XPathContext support)
{
return m_xobject.rtf(support);
}
/**
* @see org.apache.xpath.objects.XObject#rtree()
*/
public DocumentFragment rtree()
{
return m_xobject.rtree();
}
/**
* @see org.apache.xpath.objects.XObject#rtree(XPathContext)
*/
public DocumentFragment rtree(XPathContext support)
{
return m_xobject.rtree(support);
}
/**
* @see org.apache.xpath.objects.XObject#str()
*/
public String str()
{
return m_xobject.str();
}
/**
* @see java.lang.Object#toString()
*/
public String toString()
{
return m_xobject.toString();
}
/**
* @see org.apache.xpath.objects.XObject#xseq()
*/
public XSequence xseq()
{
return m_xobject.xseq();
}
/**
* @see org.apache.xpath.objects.XObject#xstr()
*/
public XMLString xstr()
{
return m_xobject.xstr();
}
/**
* @see org.apache.xpath.Expression#asIterator(XPathContext, int)
*/
public DTMIterator asIterator(XPathContext xctxt, int contextNode)
throws TransformerException
{
return m_xobject.asIterator(xctxt, contextNode);
}
/**
* @see org.apache.xpath.Expression#asIteratorRaw(XPathContext, int)
*/
public DTMIterator asIteratorRaw(XPathContext xctxt, int contextNode)
throws TransformerException
{
return m_xobject.asIteratorRaw(xctxt, contextNode);
}
/**
* @see org.apache.xpath.Expression#asNode(XPathContext)
*/
public int asNode(XPathContext xctxt) throws TransformerException
{
return m_xobject.asNode(xctxt);
}
/**
* @see org.apache.xpath.Expression#assertion(boolean, String)
*/
public void assertion(boolean b, String msg)
{
m_xobject.assertion(b, msg);
}
/**
* @see org.apache.xpath.Expression#bool(XPathContext)
*/
public boolean bool(XPathContext xctxt) throws TransformerException
{
return m_xobject.bool(xctxt);
}
/**
* @see org.apache.xpath.Expression#canTraverseOutsideSubtree()
*/
public boolean canTraverseOutsideSubtree()
{
return m_xobject.canTraverseOutsideSubtree();
}
/**
* @see org.apache.xpath.Expression#cloneDeep()
*/
public Object cloneDeep() throws CloneNotSupportedException
{
return m_xobject.cloneDeep();
}
/**
* @see org.apache.xpath.Expression#error(XPathContext, int, Object[])
*/
public void error(XPathContext xctxt, int msg, Object[] args)
throws TransformerException
{
m_xobject.error(xctxt, msg, args);
}
/**
* @see org.apache.xpath.Expression#execute(XPathContext, boolean)
*/
public XObject execute(XPathContext xctxt, boolean destructiveOK)
throws TransformerException
{
return m_xobject.execute(xctxt, destructiveOK);
}
/**
* @see org.apache.xpath.Expression#execute(XPathContext, int, DTM, int)
*/
public XObject execute(
XPathContext xctxt,
int currentNode,
DTM dtm,
int expType)
throws TransformerException
{
return m_xobject.execute(xctxt, currentNode, dtm, expType);
}
/**
* @see org.apache.xpath.Expression#execute(XPathContext, int)
*/
public XObject execute(XPathContext xctxt, int currentNode)
throws TransformerException
{
return m_xobject.execute(xctxt, currentNode);
}
/**
* @see org.apache.xpath.Expression#executeCharsToContentHandler(XPathContext, ContentHandler)
*/
public void executeCharsToContentHandler(
XPathContext xctxt,
ContentHandler handler)
throws TransformerException, SAXException
{
m_xobject.executeCharsToContentHandler(xctxt, handler);
}
/**
* @see org.apache.xpath.ExpressionNode#exprAddChild(ExpressionNode, int)
*/
public void exprAddChild(ExpressionNode n, int i)
{
m_xobject.exprAddChild(n, i);
}
/**
* @see org.apache.xpath.ExpressionNode#exprGetChild(int)
*/
public ExpressionNode exprGetChild(int i)
{
return m_xobject.exprGetChild(i);
}
/**
* @see org.apache.xpath.ExpressionNode#exprGetNumChildren()
*/
public int exprGetNumChildren()
{
return m_xobject.exprGetNumChildren();
}
/**
* @see org.apache.xpath.ExpressionNode#exprGetParent()
*/
public ExpressionNode exprGetParent()
{
return m_xobject.exprGetParent();
}
/**
* @see org.apache.xpath.ExpressionNode#exprSetParent(ExpressionNode)
*/
public void exprSetParent(ExpressionNode n)
{
m_xobject.exprSetParent(n);
}
/**
* @see javax.xml.transform.SourceLocator#getColumnNumber()
*/
public int getColumnNumber()
{
return m_xobject.getColumnNumber();
}
/**
* @see org.apache.xpath.Expression#getExpressionOwner()
*/
public ExpressionNode getExpressionOwner()
{
return m_xobject.getExpressionOwner();
}
/**
* @see javax.xml.transform.SourceLocator#getLineNumber()
*/
public int getLineNumber()
{
return m_xobject.getLineNumber();
}
/**
* @see javax.xml.transform.SourceLocator#getPublicId()
*/
public String getPublicId()
{
return m_xobject.getPublicId();
}
/**
* @see javax.xml.transform.SourceLocator#getSystemId()
*/
public String getSystemId()
{
return m_xobject.getSystemId();
}
/**
* @see org.apache.xpath.Expression#isNodesetExpr()
*/
public boolean isNodesetExpr()
{
return m_xobject.isNodesetExpr();
}
/**
* @see org.apache.xpath.Expression#isStableNumber()
*/
public boolean isStableNumber()
{
return m_xobject.isStableNumber();
}
/**
* @see org.apache.xpath.Expression#num(XPathContext)
*/
public double num(XPathContext xctxt) throws TransformerException
{
return m_xobject.num(xctxt);
}
/**
* @see org.apache.xpath.Expression#warn(XPathContext, int, Object[])
*/
public void warn(XPathContext xctxt, int msg, Object[] args)
throws TransformerException
{
m_xobject.warn(xctxt, msg, args);
}
/**
* @see org.apache.xpath.Expression#xstr(XPathContext)
*/
public XMLString xstr(XPathContext xctxt) throws TransformerException
{
return m_xobject.xstr(xctxt);
}
/**
* @see org.apache.xpath.parser.SimpleNode#dump(String, PrintStream)
*/
public void dump(String prefix, PrintStream ps)
{
m_xobject.dump(prefix, ps);
}
/**
* @see org.apache.xpath.parser.SimpleNode#dump(String)
*/
public void dump(String prefix)
{
m_xobject.dump(prefix);
}
/**
* @see org.apache.xpath.parser.SimpleNode#toString(String)
*/
public String toString(String prefix)
{
return m_xobject.toString(prefix);
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode()
{
return m_xobject.hashCode();
}
/**
* @see java.lang.Object#equals(Object)
*/
public boolean equals(Object arg0)
{
return m_xobject.equals(arg0);
}
}