Search in sources :

Example 1 with ExtensionsProvider

use of org.apache.xpath.ExtensionsProvider in project robovm by robovm.

the class FuncExtFunctionAvailable method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    String prefix;
    String namespace;
    String methName;
    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':');
    if (indexOfNSSep < 0) {
        prefix = "";
        namespace = Constants.S_XSLNAMESPACEURL;
        methName = fullName;
    } else {
        prefix = fullName.substring(0, indexOfNSSep);
        namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
        if (null == namespace)
            return XBoolean.S_FALSE;
        methName = fullName.substring(indexOfNSSep + 1);
    }
    if (namespace.equals(Constants.S_XSLNAMESPACEURL)) {
        try {
            if (null == m_functionTable)
                m_functionTable = new FunctionTable();
            return m_functionTable.functionAvailable(methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
        } catch (Exception e) {
            return XBoolean.S_FALSE;
        }
    } else {
        //dml
        ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
        return extProvider.functionAvailable(namespace, methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) FunctionTable(org.apache.xpath.compiler.FunctionTable)

Example 2 with ExtensionsProvider

use of org.apache.xpath.ExtensionsProvider in project j2objc by google.

the class FuncExtFunction method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    if (xctxt.isSecureProcessing())
        throw new javax.xml.transform.TransformerException(XPATHMessages.createXPATHMessage(XPATHErrorResources.ER_EXTENSION_FUNCTION_CANNOT_BE_INVOKED, new Object[] { toString() }));
    XObject result;
    Vector argVec = new Vector();
    int nArgs = m_argVec.size();
    for (int i = 0; i < nArgs; i++) {
        Expression arg = (Expression) m_argVec.elementAt(i);
        XObject xobj = arg.execute(xctxt);
        /*
       * Should cache the arguments for func:function
       */
        xobj.allowDetachToRelease(false);
        argVec.addElement(xobj);
    }
    //dml
    ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
    Object val = extProvider.extFunction(this, argVec);
    if (null != val) {
        result = XObject.create(val, xctxt);
    } else {
        result = new XNull();
    }
    return result;
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) XNull(org.apache.xpath.objects.XNull) Expression(org.apache.xpath.Expression) XObject(org.apache.xpath.objects.XObject) Vector(java.util.Vector) XObject(org.apache.xpath.objects.XObject)

Example 3 with ExtensionsProvider

use of org.apache.xpath.ExtensionsProvider in project j2objc by google.

the class FuncExtFunctionAvailable method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    String prefix;
    String namespace;
    String methName;
    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':');
    if (indexOfNSSep < 0) {
        prefix = "";
        namespace = Constants.S_XSLNAMESPACEURL;
        methName = fullName;
    } else {
        prefix = fullName.substring(0, indexOfNSSep);
        namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
        if (null == namespace)
            return XBoolean.S_FALSE;
        methName = fullName.substring(indexOfNSSep + 1);
    }
    if (namespace.equals(Constants.S_XSLNAMESPACEURL)) {
        try {
            if (null == m_functionTable)
                m_functionTable = new FunctionTable();
            return m_functionTable.functionAvailable(methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
        } catch (Exception e) {
            return XBoolean.S_FALSE;
        }
    } else {
        //dml
        ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
        return extProvider.functionAvailable(namespace, methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) FunctionTable(org.apache.xpath.compiler.FunctionTable)

Example 4 with ExtensionsProvider

use of org.apache.xpath.ExtensionsProvider in project j2objc by google.

the class FuncExtElementAvailable method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    String prefix;
    String namespace;
    String methName;
    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':');
    if (indexOfNSSep < 0) {
        prefix = "";
        namespace = Constants.S_XSLNAMESPACEURL;
        methName = fullName;
    } else {
        prefix = fullName.substring(0, indexOfNSSep);
        namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
        if (null == namespace)
            return XBoolean.S_FALSE;
        methName = fullName.substring(indexOfNSSep + 1);
    }
    if (namespace.equals(Constants.S_XSLNAMESPACEURL) || namespace.equals(Constants.S_BUILTIN_EXTENSIONS_URL)) {
        try {
            TransformerImpl transformer = (TransformerImpl) xctxt.getOwnerObject();
            return transformer.getStylesheet().getAvailableElements().containsKey(new QName(namespace, methName)) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
        } catch (Exception e) {
            return XBoolean.S_FALSE;
        }
    } else {
        //dml
        ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
        return extProvider.elementAvailable(namespace, methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) TransformerImpl(org.apache.xalan.transformer.TransformerImpl) QName(org.apache.xml.utils.QName)

Example 5 with ExtensionsProvider

use of org.apache.xpath.ExtensionsProvider in project robovm by robovm.

the class FuncExtElementAvailable method execute.

/**
   * Execute the function.  The function must return
   * a valid object.
   * @param xctxt The current execution context.
   * @return A valid XObject.
   *
   * @throws javax.xml.transform.TransformerException
   */
public XObject execute(XPathContext xctxt) throws javax.xml.transform.TransformerException {
    String prefix;
    String namespace;
    String methName;
    String fullName = m_arg0.execute(xctxt).str();
    int indexOfNSSep = fullName.indexOf(':');
    if (indexOfNSSep < 0) {
        prefix = "";
        namespace = Constants.S_XSLNAMESPACEURL;
        methName = fullName;
    } else {
        prefix = fullName.substring(0, indexOfNSSep);
        namespace = xctxt.getNamespaceContext().getNamespaceForPrefix(prefix);
        if (null == namespace)
            return XBoolean.S_FALSE;
        methName = fullName.substring(indexOfNSSep + 1);
    }
    if (namespace.equals(Constants.S_XSLNAMESPACEURL) || namespace.equals(Constants.S_BUILTIN_EXTENSIONS_URL)) {
        try {
            TransformerImpl transformer = (TransformerImpl) xctxt.getOwnerObject();
            return transformer.getStylesheet().getAvailableElements().containsKey(new QName(namespace, methName)) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
        } catch (Exception e) {
            return XBoolean.S_FALSE;
        }
    } else {
        //dml
        ExtensionsProvider extProvider = (ExtensionsProvider) xctxt.getOwnerObject();
        return extProvider.elementAvailable(namespace, methName) ? XBoolean.S_TRUE : XBoolean.S_FALSE;
    }
}
Also used : ExtensionsProvider(org.apache.xpath.ExtensionsProvider) TransformerImpl(org.apache.xalan.transformer.TransformerImpl) QName(org.apache.xml.utils.QName)

Aggregations

ExtensionsProvider (org.apache.xpath.ExtensionsProvider)6 Vector (java.util.Vector)2 TransformerImpl (org.apache.xalan.transformer.TransformerImpl)2 QName (org.apache.xml.utils.QName)2 Expression (org.apache.xpath.Expression)2 FunctionTable (org.apache.xpath.compiler.FunctionTable)2 XNull (org.apache.xpath.objects.XNull)2 XObject (org.apache.xpath.objects.XObject)2