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

📄 bpelobject.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.compiler.bom;import org.apache.ode.bpel.compiler.api.SourceLocation;import org.apache.ode.utils.DOMUtils;import org.apache.ode.utils.NSContext;import org.apache.ode.utils.stl.CollectionsX;import org.apache.ode.utils.stl.MemberOfFunction;import org.w3c.dom.Attr;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.namespace.QName;import java.net.URI;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Common interface to all BPEL object model (BOM) objects. Provides for * location information (i.e. line numbers) and namespace context (XML namespace * prefix maps). */public class BpelObject implements SourceLocation {    public static final QName ATTR_LINENO = new QName("urn:org.apache.ode.bpel.compiler", "lineno");    private final Element _element;    private final QName _type;    private final NSContext _nsContext;    private List<BpelObject> _children = null;        /** URI of the source document. */     private URI _docURI;        public BpelObject(Element el) {        _element = el;        _type = new QName(el.getNamespaceURI(), el.getLocalName());        _nsContext = new NSContext();                initNSContext(el);    }    public QName getType() {        return _type;    }        public Element getElement() {        return _element;    }    /**     * Get the line number in the BPEL source document where this object is     * defined.     *      * @return line number     */    public int getLineNo() {        return Integer.valueOf(getAttribute(ATTR_LINENO, "-1"));    }    /**     * Get the namespace context for this BPEL object (i.e. prefix-to-namespace     * mapping).     *      * @return namespace context     */    public NSContext getNamespaceContext() {        return _nsContext;    }     /**     * Return the declared extensibility elements. The extensibility elements     * declared as subelements of this BpelObject will be returned with a value     * type of org.w3c.dom.Element. The ones declared as extensibility     * attributes will be returned as a value type of String.     *      * @return extensibility qualified names and the full elements value (String     *         or Element)     */    public Map<QName, Object> getExtensibilityElements() {        // We consider anything that is not in the namespace of this element to be an        // extensibility element/attribute.         HashMap<QName, Object> ee = new HashMap<QName,Object>();        for (BpelObject child  :getChildren()) {            if (child.getType().getNamespaceURI() != null && !child.getType().getNamespaceURI().equals(getType().getNamespaceURI()))                ee.put(child.getType(), child.getElement());        }                NamedNodeMap nnm = getElement().getAttributes();        for (int i = 0; i < nnm.getLength(); ++i) {            Node n = nnm.item(i);            if (n.getNamespaceURI() != null && !n.getNamespaceURI().equals(getType().getNamespaceURI()))                ee.put(new QName(n.getNamespaceURI(), n.getLocalName()), n.getTextContent());        }        return ee;            }    public Element getExtensibilityElement(QName extElName) {        BpelObject e = getFirstChild(extElName);        if (e == null)            return null;        return e.getElement();    }    public Element getFirstExtensibilityElementElement() {    	Element child = null;    	NodeList nl = getElement().getChildNodes();        for (int i = 0; i < nl.getLength(); ++i) {            Node node = nl.item(i);            if (node.getNodeType() == Node.ELEMENT_NODE &&             		!getType().getNamespaceURI().equals(node.getNamespaceURI())) {                child = (Element)node;                break;            }        }        return child;    }        /**     * Is this a BPEL 1.1 object?     * @return     */    public boolean is11() {        return getType().getNamespaceURI() != null &&             (getType().getNamespaceURI().equals(Bpel11QNames.NS_BPEL4WS_2003_03)                    || getType().getNamespaceURI().equals(Bpel11QNames.NS_BPEL4WS_PARTNERLINK_2003_05));     }    public boolean is20Draft() {        return getType().getNamespaceURI() != null &&            (getType().getNamespaceURI().equals(Bpel20QNames.NS_WSBPEL2_0)                    || getType().getNamespaceURI().equals(Bpel20QNames.NS_WSBPEL_PARTNERLINK_2004_03));     }    protected boolean isAttributeSet(String attrname) {        return null != getAttribute(attrname, null);    }        protected <T extends BpelObject> List<T> getChildren(Class<T> cls) {        return CollectionsX.filter(new ArrayList<T>(), getChildren(), cls);    }    protected <T extends BpelObject> T getFirstChild(Class<T> cls) {        List<T> children = getChildren(cls);        if (children.size() == 0)            return null;        return children.get(0);    }        protected List<BpelObject> getChildren(final QName type) {        return CollectionsX.filter(new ArrayList<BpelObject>(), getChildren(), new MemberOfFunction<BpelObject>() {            @Override            public boolean isMember(BpelObject o) {                return o.getType().equals(type);            }        });    }    protected BpelObject getFirstChild(final QName type) {        return CollectionsX.find_if(getChildren(), new MemberOfFunction<BpelObject>() {            @Override            public boolean isMember(BpelObject o) {                return o.getType().equals(type);            }        });    }    protected QName rewriteTargetNS(QName target) {    	return new QName(getType().getNamespaceURI(), target.getLocalPart());    }        protected List<BpelObject> getChildren() {        if (_children == null) {            _children = new ArrayList<BpelObject>();            NodeList nl = _element.getChildNodes();            for (int i = 0; i < nl.getLength(); ++i) {                Node node = nl.item(i);                if (node.getNodeType() == Node.ELEMENT_NODE)                    _children.add(createBpelObject((Element) node));            }        }        return _children;    }    protected BpelObject createBpelObject(Element element) {        return BpelObjectFactory.getInstance().createBpelObject(element,_docURI);    }    protected String getAttribute(QName name, String dflt) {        String val = _element.getAttributeNS(name.getNamespaceURI(), name.getLocalPart());        if (val == null || "".equals(val))            return dflt;        return val;    }        protected String getAttribute(String name, String dflt) {        String val = _element.getAttribute(name);        if (val == null || "".equals(val))            return dflt;        return val;    }        protected String getAttribute(String name) {        return getAttribute(name, null);    }        protected <T> T getAttribute(String attrName, Map<String, T> suppressJoinFailure, T notset) {        String val = getAttribute(attrName, null);        if (val == null || "".equals(val))            return notset;        return suppressJoinFailure.get(val);    }               /**     * Initialize object's namespace context (recursively).     *      * @param el     *            object's associated element.     */    private void initNSContext(Element el) {        if (el.getParentNode() != null && el.getParentNode().getNodeType() == Node.ELEMENT_NODE)            initNSContext((Element) el.getParentNode());        NamedNodeMap attrs = el.getAttributes();        for (int i = 0; i < attrs.getLength(); ++i) {            Attr attr = (Attr) attrs.item(i);            if (!attr.getName().startsWith("xmlns:"))                continue;            String prefix = attr.getLocalName();            String uri = attr.getValue();            _nsContext.register(prefix, uri);        }                Attr dflt = el.getAttributeNode("xmlns");        if (dflt != null) {            _nsContext.register("", dflt.getTextContent());        }            }       public String getTextValue() {         getElement().normalize();        for (Node n = getElement().getFirstChild(); n != null; n = n.getNextSibling())            switch (n.getNodeType()) {            case Node.TEXT_NODE:            case Node.ELEMENT_NODE:            case Node.CDATA_SECTION_NODE:                return n.getNodeValue();            }        return null;    }    @Override    public String toString() {        return DOMUtils.domToString(_element);    }    public int getColumnNo() {        return 0;    }    public String getPath() {        return null;    }    public URI getURI() {        return _docURI;    }    public void setURI(URI uri) {        _docURI = uri;    }}

⌨️ 快捷键说明

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