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

📄 xmlbeanswsdlbuilder.java

📁 Xfire文件 用于开发web service 的一个开源工具 很好用的
💻 JAVA
字号:
package org.codehaus.xfire.xmlbeans;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import javax.wsdl.WSDLException;import org.apache.xmlbeans.SchemaType;import org.apache.xmlbeans.XmlBeans;import org.apache.xmlbeans.XmlObject;import org.codehaus.xfire.XFireRuntimeException;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.soap.SoapConstants;import org.codehaus.xfire.transport.TransportManager;import org.codehaus.xfire.util.jdom.StaxBuilder;import org.codehaus.xfire.util.stax.FragmentStreamReader;import org.codehaus.xfire.wsdl11.builder.WSDLBuilder;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.xpath.XPath;public class XmlBeansWSDLBuilder    extends WSDLBuilder{    private final static StaxBuilder builder = new StaxBuilder();    private static Map schemas = new HashMap();        private List importedSchemas = new ArrayList();        public XmlBeansWSDLBuilder(Service service, TransportManager transportManager) throws WSDLException    {        super(service, transportManager);    }    public void addDependency(org.codehaus.xfire.wsdl.SchemaType type)    {        if (!hasDependency(type))        {            if (type instanceof XmlBeansType)            {                XmlBeansType xbeanType = (XmlBeansType) type;                Element schema = getSchema(xbeanType);                String ns = xbeanType.getSchemaType().getNamespaceURI();                if (!importedSchemas.contains(schema))                {                    schema.detach();                    setSchema(ns, schema);                                        importedSchemas.add(schema);                }            }        }                super.addDependency(type);    }        public Element getSchema(XmlBeansType xbeanType)    {        SchemaType type = XmlBeans.typeForClass(xbeanType.getTypeClass());        String name = type.getSourceName();        if (name == null) return null;        Element schema = (Element) schemas.get(name);         if (schema != null) return schema;                ClassLoader classLoader = Thread.currentThread().getContextClassLoader();        try        {            XmlObject obj = XmlObject.Factory.parse(classLoader.getResourceAsStream("schemaorg_apache_xmlbeans/src/" + name));                        schema = builder.build(new FragmentStreamReader(obj.newXMLStreamReader())).getRootElement();                        String ns = xbeanType.getSchemaType().getNamespaceURI();            String expr = "//xsd:schema[@targetNamespace='" + ns + "']";            List nodes = getMatches(schema, expr);            if (nodes.size() == 0)            {                return null;            }                        schema = (Element) nodes.get(0);            schemas.put(name, schema);                        return schema;        }        catch (Exception e)        {            throw new XFireRuntimeException("Couldn't load schema.", e);        }    }    private List getMatches(Object doc, String xpath)    {        try        {            XPath path = XPath.newInstance(xpath);            path.addNamespace("xsd", SoapConstants.XSD);            path.addNamespace("s", SoapConstants.XSD);            List result = path.selectNodes(doc);            return result;        }        catch(JDOMException e)        {            throw new XFireRuntimeException("Error evaluating xpath " + xpath, e);        }    }}

⌨️ 快捷键说明

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