⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xpath10expressioncompilerimpl.java

📁 bpel执行引擎用来执行bpel业务流程
💻 JAVA
字号:
/* * 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.ode.bpel.elang.xpath10.compiler;import java.util.HashMap;import java.util.Map;import javax.xml.namespace.QName;import org.apache.ode.bpel.compiler.api.CompilationException;import org.apache.ode.bpel.compiler.api.CompilerContext;import org.apache.ode.bpel.compiler.api.ExpressionCompiler;import org.apache.ode.bpel.compiler.bom.Expression;import org.apache.ode.bpel.elang.xpath10.o.OXPath10Expression;import org.apache.ode.utils.msg.MessageBundle;import org.jaxen.saxpath.SAXPathException;import org.jaxen.saxpath.XPathReader;import org.jaxen.saxpath.helpers.XPathReaderFactory;import org.w3c.dom.Node;/** * XPath compiler based on the JAXEN implementation. Supports both 2.0 and 1.1 * BPEL. */public abstract class XPath10ExpressionCompilerImpl implements ExpressionCompiler {    private static final XPathMessages __msgs = MessageBundle.getMessages(XPathMessages.class);    // private HashMap<String,Function> _extensionFunctions = new    // HashMap<String,Function>();    protected CompilerContext _compilerContext;    /** Namespace of the BPEL functions (for v2 to v1 compatibility) . */    private String _bpelNsURI;    protected QName _qnFnGetVariableData;    protected QName _qnFnGetVariableProperty;    protected QName _qnFnGetLinkStatus;    protected Map<String, String> _properties = new HashMap<String, String>();    /**     * Construtor.     *      * @param bpelNsURI     *            the BPEL extension function namespace; varies depending on     *            BPEL version.     */    public XPath10ExpressionCompilerImpl(String bpelNsURI) {        _bpelNsURI = bpelNsURI;        _qnFnGetVariableData = new QName(_bpelNsURI, "getVariableData");        _qnFnGetVariableProperty = new QName(_bpelNsURI, "getVariableProperty");        _qnFnGetLinkStatus = new QName(_bpelNsURI, "getLinkStatus");        _properties.put("runtime-class", "org.apache.ode.bpel.elang.xpath10.runtime.XPath10ExpressionRuntime");            }    /**     * @see org.apache.ode.bpel.compiler.api.ExpressionCompiler#setCompilerContext(org.apache.ode.bpel.compiler.api.CompilerContext)     */    public void setCompilerContext(CompilerContext compilerContext) {        _compilerContext = compilerContext;    }    /**     * @see org.apache.ode.bpel.compiler.api.ExpressionCompiler#getProperties()     */    public Map<String, String> getProperties() {        return _properties;    }    // Dead code    /*     * private void registerExtensionFunction(String name, Class function) { try {     * Function jaxenFunction = (Function)function.newInstance();     * _extensionFunctions.put(name, jaxenFunction); } catch     * (InstantiationException e) { throw new RuntimeException("unexpected error     * creating extension function: " + name, e); } catch     * (IllegalAccessException e) { throw new RuntimeException("unexpected error     * creating extension function: " + name, e); } catch (ClassCastException e) {     * throw new RuntimeException("expected extension function of type " +     * Function.class.getName()); } }     */    /**     * Verifies validity of a xpath expression.     */    protected void doJaxenCompile(OXPath10Expression out, Expression source) throws CompilationException {        String xpathStr;        Node node = source.getExpression();        if (node == null) {            throw new IllegalStateException("XPath string and xpath node are both null");        }        xpathStr = node.getNodeValue();        xpathStr = xpathStr.trim();        if (xpathStr.length() == 0) {        	throw new CompilationException(__msgs.errXPathSyntax(xpathStr));        }        try {            XPathReader reader = XPathReaderFactory.createReader();            JaxenBpelHandler handler = new JaxenBpelHandler(_bpelNsURI, out, source.getNamespaceContext(),                    _compilerContext);            reader.setXPathHandler(handler);            reader.parse(xpathStr);            out.xpath = xpathStr;        } catch (CompilationExceptionWrapper e) {            CompilationException ce = e.getCompilationException();            if (ce == null) {                ce = new CompilationException(__msgs.errUnexpectedCompilationError(e.getMessage()), e);            }            throw ce;        } catch (SAXPathException e) {            throw new CompilationException(__msgs.errXPathSyntax(xpathStr));        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -