FileDocCategorySizeDatePackage
XRTreeFrag.javaAPI DocJava SE 6 API7572Tue Jun 10 00:23:16 BST 2008com.sun.org.apache.xpath.internal.objects

XRTreeFrag

public class XRTreeFrag extends XObject implements Cloneable
This class represents an XPath result tree fragment object, and is capable of converting the RTF to other types, such as a string.
xsl.usage
general

Fields Summary
static final long
serialVersionUID
private DTMXRTreeFrag
m_DTMXRTreeFrag
private int
m_dtmRoot
protected boolean
m_allowRelease
private XMLString
m_xmlStr
Constructors Summary
public XRTreeFrag(int root, XPathContext xctxt, ExpressionNode parent)
Create an XRTreeFrag Object.



         
        
  
    super(null);
    exprSetParent(parent);
    initDTM(root, xctxt);    
  
public XRTreeFrag(int root, XPathContext xctxt)
Create an XRTreeFrag Object.

    super(null); 
   initDTM(root, xctxt); 
  
public XRTreeFrag(Expression expr)
Create an XRTreeFrag Object.

    super(expr);
  
Methods Summary
public voidallowDetachToRelease(boolean allowRelease)
Specify if it's OK for detach to release the iterator for reuse.

param
allowRelease true if it is OK for detach to release this iterator for pooling.

    m_allowRelease = allowRelease;
  
public voidappendToFsb(com.sun.org.apache.xml.internal.utils.FastStringBuffer fsb)
Cast result object to a string.

return
The string this wraps or the empty string if null

    XString xstring = (XString)xstr();
    xstring.appendToFsb(fsb);
  
public com.sun.org.apache.xml.internal.dtm.DTMIteratorasNodeIterator()
Cast result object to a DTMIterator. dml - modified to return an RTFIterator for benefit of EXSLT object-type function in {@link com.sun.org.apache.xalan.internal.lib.ExsltCommon}.

return
The document fragment as a DTMIterator

    return new RTFIterator(m_dtmRoot, m_DTMXRTreeFrag.getXPathContext().getDTMManager());
  
public booleanbool()
Cast result object to a boolean. This always returns true for a RTreeFrag because it is treated like a node-set with a single root node.

return
true

    return true;
  
public org.w3c.dom.NodeListconvertToNodeset()
Cast result object to a nodelist. (special function).

return
The document fragment as a nodelist


    if (m_obj instanceof NodeList)
      return (NodeList) m_obj;
    else
      return new com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList(asNodeIterator());
  
public voiddetach()
Detaches the DTMIterator from the set which it iterated over, releasing any computational resources and placing the iterator in the INVALID state. After detach has been invoked, calls to nextNode or previousNode will raise a runtime exception. In general, detach should only be called once on the object.

    if(m_allowRelease){
    	m_DTMXRTreeFrag.destruct();
      m_obj = null;
    }
  
public booleanequals(com.sun.org.apache.xpath.internal.objects.XObject obj2)
Tell if two objects are functionally equal.

param
obj2 Object to compare this to
return
True if the two objects are equal
throws
javax.xml.transform.TransformerException


    try
    {
      if (XObject.CLASS_NODESET == obj2.getType())
      {
  
        // In order to handle the 'all' semantics of 
        // nodeset comparisons, we always call the 
        // nodeset function.
        return obj2.equals(this);
      }
      else if (XObject.CLASS_BOOLEAN == obj2.getType())
      {
        return bool() == obj2.bool();
      }
      else if (XObject.CLASS_NUMBER == obj2.getType())
      {
        return num() == obj2.num();
      }
      else if (XObject.CLASS_NODESET == obj2.getType())
      {
        return xstr().equals(obj2.xstr());
      }
      else if (XObject.CLASS_STRING == obj2.getType())
      {
        return xstr().equals(obj2.xstr());
      }
      else if (XObject.CLASS_RTREEFRAG == obj2.getType())
      {
  
        // Probably not so good.  Think about this.
        return xstr().equals(obj2.xstr());
      }
      else
      {
        return super.equals(obj2);
      }
    }
    catch(javax.xml.transform.TransformerException te)
    {
      throw new com.sun.org.apache.xml.internal.utils.WrappedRuntimeException(te);
    }
  
public intgetType()
Tell what kind of class this is.

return
type CLASS_RTREEFRAG

    return CLASS_RTREEFRAG;
  
public java.lang.StringgetTypeString()
Given a request type, return the equivalent string. For diagnostic purposes.

return
type string "#RTREEFRAG"

    return "#RTREEFRAG";
  
private final voidinitDTM(int root, com.sun.org.apache.xpath.internal.XPathContext xctxt)

    m_dtmRoot = root;
    final DTM dtm = xctxt.getDTM(root);
    if(dtm != null){
      m_DTMXRTreeFrag = xctxt.getDTMXRTreeFrag(xctxt.getDTMIdentity(dtm));
    }
  
public doublenum()
Cast result object to a number.

return
The result tree fragment as a number or NaN


    XMLString s = xstr();

    return s.toDouble();
  
public java.lang.Objectobject()
Return a java object that's closest to the representation that should be handed to an extension.

return
The object that this class wraps

    if (m_DTMXRTreeFrag.getXPathContext() != null)
      return new com.sun.org.apache.xml.internal.dtm.ref.DTMNodeIterator((DTMIterator)(new com.sun.org.apache.xpath.internal.NodeSetDTM(m_dtmRoot, m_DTMXRTreeFrag.getXPathContext().getDTMManager())));
    else
      return super.object();
  
public intrtf()
Cast result object to a result tree fragment.

return
The document fragment this wraps

    return m_dtmRoot;
  
public java.lang.Stringstr()
Cast result object to a string.

return
The document fragment node data or the empty string.

    String str = m_DTMXRTreeFrag.getDTM().getStringValue(m_dtmRoot).toString();

    return (null == str) ? "" : str;
  
public com.sun.org.apache.xml.internal.utils.XMLStringxstr()
Cast result object to an XMLString.

return
The document fragment node data or the empty string.

  
                      
    
  
    if(null == m_xmlStr)
      m_xmlStr = m_DTMXRTreeFrag.getDTM().getStringValue(m_dtmRoot);
    
    return m_xmlStr;