Search in sources :

Example 1 with OneStepIterator

use of org.apache.xpath.axes.OneStepIterator in project j2objc by google.

the class XObjectFactory method create.

/**
   * Create the right XObject based on the type of the object passed.
   * This function <emph>can</emph> make an XObject that exposes DOM Nodes, NodeLists, and 
   * NodeIterators to the XSLT stylesheet as node-sets.
   *
   * @param val The java object which this object will wrap.
   * @param xctxt The XPath context.
   *
   * @return the right XObject based on the type of the object passed.
   */
public static XObject create(Object val, XPathContext xctxt) {
    XObject result;
    if (val instanceof XObject) {
        result = (XObject) val;
    } else if (val instanceof String) {
        result = new XString((String) val);
    } else if (val instanceof Boolean) {
        result = new XBoolean((Boolean) val);
    } else if (val instanceof Number) {
        result = new XNumber(((Number) val));
    } else if (val instanceof DTM) {
        DTM dtm = (DTM) val;
        try {
            int dtmRoot = dtm.getDocument();
            DTMAxisIterator iter = dtm.getAxisIterator(Axis.SELF);
            iter.setStartNode(dtmRoot);
            DTMIterator iterator = new OneStepIterator(iter, Axis.SELF);
            iterator.setRoot(dtmRoot, xctxt);
            result = new XNodeSet(iterator);
        } catch (Exception ex) {
            throw new org.apache.xml.utils.WrappedRuntimeException(ex);
        }
    } else if (val instanceof DTMAxisIterator) {
        DTMAxisIterator iter = (DTMAxisIterator) val;
        try {
            DTMIterator iterator = new OneStepIterator(iter, Axis.SELF);
            iterator.setRoot(iter.getStartNode(), xctxt);
            result = new XNodeSet(iterator);
        } catch (Exception ex) {
            throw new org.apache.xml.utils.WrappedRuntimeException(ex);
        }
    } else if (val instanceof DTMIterator) {
        result = new XNodeSet((DTMIterator) val);
    } else // might also implement a Node!
    if (val instanceof org.w3c.dom.Node) {
        result = new XNodeSetForDOM((org.w3c.dom.Node) val, xctxt);
    } else // also implement NodeList.
    if (val instanceof org.w3c.dom.NodeList) {
        result = new XNodeSetForDOM((org.w3c.dom.NodeList) val, xctxt);
    } else if (val instanceof org.w3c.dom.traversal.NodeIterator) {
        result = new XNodeSetForDOM((org.w3c.dom.traversal.NodeIterator) val, xctxt);
    } else {
        result = new XObject(val);
    }
    return result;
}
Also used : DTMIterator(org.apache.xml.dtm.DTMIterator) OneStepIterator(org.apache.xpath.axes.OneStepIterator) DTMAxisIterator(org.apache.xml.dtm.DTMAxisIterator) DTM(org.apache.xml.dtm.DTM)

Example 2 with OneStepIterator

use of org.apache.xpath.axes.OneStepIterator in project robovm by robovm.

the class XObjectFactory method create.

/**
   * Create the right XObject based on the type of the object passed.
   * This function <emph>can</emph> make an XObject that exposes DOM Nodes, NodeLists, and 
   * NodeIterators to the XSLT stylesheet as node-sets.
   *
   * @param val The java object which this object will wrap.
   * @param xctxt The XPath context.
   *
   * @return the right XObject based on the type of the object passed.
   */
public static XObject create(Object val, XPathContext xctxt) {
    XObject result;
    if (val instanceof XObject) {
        result = (XObject) val;
    } else if (val instanceof String) {
        result = new XString((String) val);
    } else if (val instanceof Boolean) {
        result = new XBoolean((Boolean) val);
    } else if (val instanceof Number) {
        result = new XNumber(((Number) val));
    } else if (val instanceof DTM) {
        DTM dtm = (DTM) val;
        try {
            int dtmRoot = dtm.getDocument();
            DTMAxisIterator iter = dtm.getAxisIterator(Axis.SELF);
            iter.setStartNode(dtmRoot);
            DTMIterator iterator = new OneStepIterator(iter, Axis.SELF);
            iterator.setRoot(dtmRoot, xctxt);
            result = new XNodeSet(iterator);
        } catch (Exception ex) {
            throw new org.apache.xml.utils.WrappedRuntimeException(ex);
        }
    } else if (val instanceof DTMAxisIterator) {
        DTMAxisIterator iter = (DTMAxisIterator) val;
        try {
            DTMIterator iterator = new OneStepIterator(iter, Axis.SELF);
            iterator.setRoot(iter.getStartNode(), xctxt);
            result = new XNodeSet(iterator);
        } catch (Exception ex) {
            throw new org.apache.xml.utils.WrappedRuntimeException(ex);
        }
    } else if (val instanceof DTMIterator) {
        result = new XNodeSet((DTMIterator) val);
    } else // might also implement a Node!
    if (val instanceof org.w3c.dom.Node) {
        result = new XNodeSetForDOM((org.w3c.dom.Node) val, xctxt);
    } else // also implement NodeList.
    if (val instanceof org.w3c.dom.NodeList) {
        result = new XNodeSetForDOM((org.w3c.dom.NodeList) val, xctxt);
    } else if (val instanceof org.w3c.dom.traversal.NodeIterator) {
        result = new XNodeSetForDOM((org.w3c.dom.traversal.NodeIterator) val, xctxt);
    } else {
        result = new XObject(val);
    }
    return result;
}
Also used : DTMIterator(org.apache.xml.dtm.DTMIterator) OneStepIterator(org.apache.xpath.axes.OneStepIterator) DTMAxisIterator(org.apache.xml.dtm.DTMAxisIterator) DTM(org.apache.xml.dtm.DTM)

Aggregations

DTM (org.apache.xml.dtm.DTM)2 DTMAxisIterator (org.apache.xml.dtm.DTMAxisIterator)2 DTMIterator (org.apache.xml.dtm.DTMIterator)2 OneStepIterator (org.apache.xpath.axes.OneStepIterator)2