[
  {
    "path": ".gitignore",
    "content": "# Compiled source #\n###################\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.so\n\n# Packages #\n############\n# it's better to unpack these files and commit the raw source\n# git has its own built in compression methods\n*.7z\n*.dmg\n*.gz\n*.iso\n*.jar\n*.rar\n*.tar\n*.zip\n\n# Logs and databases #\n######################\n*.log\n*.sql\n*.sqlite\n\n# OS generated files #\n######################\n.DS_Store?\nehthumbs.db\nIcon?\nThumbs.db\n\n# Custom #\n######################\ntarget\nbin\nclasses\n*.ipr\n*.iws\n*.iml\n.svn\n.classpath\n.project\n.idea\n\nsrc/site/markdown/*.*\n.DS_Store\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: java\njdk:\n  - oraclejdk7\n"
  },
  {
    "path": "README.md",
    "content": "# soap-ws [![Build Status](http://img.shields.io/travis/reficio/soap-ws.svg)](http://travis-ci.org/reficio/soap-ws)\n\n## A lightweight and easy-to-use Java library to handle SOAP on a purely XML level.\n\n### Intro\nWelcome to soap-ws! This is a lightweight and easy-to-use Java library that wraps Spring-WS and enables handling SOAP on a purely XML level. soap-ws is based on four main abstractions:\n\n* WsdlParser can easily parse your WSDL and produce SoapBuilders,\n* SoapBuilder can generate SOAP messages directly in the XML format, \n* SoapClient can be used to transmit a SOAP message over HTTP(s) to a web-service endpoint, \n* SoapServer can be leveraged to process SOAP messages and and respond to them. \n\nAll of that requires no generation of stubs - everything happens directly in XML having -  is the provider.\n\n\n### Why should you use soap-ws?\nRead this carefully and check if you know what we are talking about.\n\n* Have you ever had problems with the versioning of web-service endpoints? Have you ever had to address the problem how to deal with many versions of the same classes generated from two versions of the same WSDL in one code base? Did you try to prefix the classes, change the package, or do any other mambo-jumbo tricks that are clearly against the best-practices of software design?\n* Have you every tried to chain and orchestrate a few web-service invocations applying some XSLT transformation to the consecutive responses forwarding them to the next endpoint? Have you ever seen how cumbersome it is using Java generated ws clients/servers?\n* Have you ever had to re-generate the ws-stubs, recompile and redeploy you application because of a tiny change in the WSDL?\n* Have you every been confused why you generate all these domain and stub classes to invoke one simple web-service operation and to get a plain response that could be processed with XSTL one-liner?\n* Have you ever had to had to send a simple XML message to a SOAP server in a fire and forget mode?\n* Have you ever had to expose a mock SOAP endpoint that would respond to the request sending a sample response -let's say in an unit test?\n* Have you ever had to download a hierarchical WSDL file with hierarchical XSD schemas and store it on your local hard drive with all the import and includes fixed properly so that you can reuse it locally?\n* Have you ever…\n\nYes, that's what soap-ws can do for you. But it can do much more, just dive in and check the plethora of stuff that we have implemented.\n\n### What is supported?\n* supports WSDL 1.1\n* supports SOAP 1.1 and 1.2\n* supports all four WS flavors: rpc-encoded, rpc-literal, document-literal and document-encoded\n* supports SSL and basic-authentication\n* supports SOCKS, HTTP and HTTPS proxies\n* supports SpringFramework\n* supports JUnit, Spock and Arquillian\n\n\n### Main features\n\nsoap-builder:\n\n* fetch, parse and store WSDL (hierarchical WSDLs and XSDs supported)\n* generate a soap XML message on the basis of the imported WSDL \n\nsoap-client:\n\n* communication and message handling purely in the XML format\n* basic authentication and SSL support\n* HTTP(s) and SOCKS proxy support, with/without basic authentication \n\nsoap-server:\n\n* endpoint exposition - communication and message handling purely in the XML format\n* extensive operation matcher - validate and match a request to a BindingOperation from the WSDL\n* auto-responder - respond to a soap request with a sample content\n* HTTP and HTTPS support\n\n### License\nThe project is open-source and distributed under the Apache license, Version 2.0.\nOne module (soap-legacy) is distributed under the LGPL 2.1 license (see the Note).\nYou can confidently use soap-ws in your commercial project.\n\n\n## User Guide\n\n### Quick-start\n\n#### Add soap-ws to your maven project\nIn order to use soap-ws in your project you have to declare soap-ws in the dependencies section of your pom.xml. You can mix and match soap-builder, soap-client, soap-server artifacts, depending on the fact what you want to achieve.\n```xml\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>1.0.0-SNAPSHOT</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>1.0.0-SNAPSHOT</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>1.0.0-SNAPSHOT</version>\n        </dependency>\n    </dependencies>\n```\nsoap-ws is not yet located in the central maven repo, thus you also have to add an additional repository to your config.\n```xml\n    <repositories>\n        <repository>\n            <id>reficio</id>\n            <url>http://repo.reficio.org/maven/</url>\n        </repository>\n    </repositories>\n```\n\nIf you are a Gradle user you probably know how to do it :)\n\n#### Consume a Web-Serivce in 60 seconds\nLet's consume the CurrencyConverter Web-Service. Thanks to the fluent builders the API is straigtforward and intuitive. \nDoes it need any explanation? Welcome to soap-ws :)\n```java\n\tWsdl wsdl = Wsdl.parse(\"http://www.webservicex.net/CurrencyConvertor.asmx?WSDL\");\n    \n    SoapBuilder builder = wsdl.binding()\n    \t.localPart(\"CurrencyConvertorSoap\")\n    \t.find();\n    SoapOperation operation = builder.operation()\n    \t.soapAction(\"http://www.webserviceX.NET/ConversionRate\")\n    \t.find();\n    Request request = builder.buildInputMessage(operation)\n    \n    SoapClient client = SoapClient.builder()\n    \t.endpointUrl(\"http://www.webservicex.net/CurrencyConvertor.asmx\")\n    \t.build();\n    String response = client.post(request);\n```\n\n\n#### Provide a Web-Service in 60 seconds\nLet's provide the CurrencyConverter Web-Service that returns random results (compliant with the schema!).\n```java\n\tWsdl wsdl = Wsdl.parse(\"http://www.webservicex.net/CurrencyConvertor.asmx?WSDL\");\n\tSoapBuilder builder = wsdl.binding()\n    \t.localPart(\"CurrencyConvertorSoap\")\n    \t.find();\n    \t\n    SoapServer server = SoapServer.builder()\n    \t.httpPort(9090)\n   \t\t.build();\n    server.registerRequestResponder(\"/currencyConvertor\", new AutoResponder(builder));\n    server.start();\n``` \n\nThat's more or less what you need to generate a SOAP message and consume/provide a Web-Service.\n\n### API\nLet's have a closer look at the API and the main abstractions.\n\n#### SoapBuilder\nSoapBuilder interface describes the features of generation of XML SOAP messages. An instance of the SoapBuilder class is always bound to a specific wsdl file and one of its bindings. There can be more bindings in one WSDL file - in order to handle all of theme an instance of SoapBuilder is needed for every binding. \nThe simplest way to construct an instance of the Wsdl is to call the static factory method \"parse\", passing the URL of the WSDL file (1).\n```java\n    Wsdl wsdl = Wsdl.parse(wsdlUrl);  // (1)\n        \n\tList<QName> bindings = wsdl.getBindings(); // (2)\n\tSoapBuilder builder = wsdl.binding().localPart(\"CurrencyConvertorSoap\").find(); // (3)\n\twsdl.printBindings(); // (4)\n    \n    List<SoapOperation> operations = builder.getOperations(); // (5)\n\tSoapOperation operation = builder.operation().name(\"ConversionRate\").find();  // (6)\n    \n```\nWsdl.parse(wsdlUrl) reads the specified WSDL file recursively, fetching all included WSDL and XSD files and constructs an underlying javax.wsdl.Definition object that is the Java-based representation of the WSDL (see WSDL4j to read more about the Definitoin object).\n\nIn order to generate a SOAP message you have to specify the Binding. To check what binding are defined in the WSDL invoke the getBindings() method (2). You can also use the binding finder, just call the binding() method and add additional parameters such as localPart(\"\"), etc. Then invoke builder to get an instance of the SoapBuilder(). \nFinally, you can invoke the printBindings() method that will print all the  binding to the stdout (just as a quick hack) (4).\n\nThe last step is to generate a SOAP message using the SoapBuilder. In order to do it though you have to specify the SOAP operation. In order to get the list of operations specified in that binding just invoke the getOperations() method on the SoapBuilder object (5). You can also use the SOAP operation finder - just call the operation() method and chain additional parameters such as name(), etc. Then call find() and get a reference to the Soap Operation.\n\nNow you are all set. To generate a SOAP message in the XML format just invoke one of the methods defined in the SoapBuilder interface specifiying the SoapOperation. You can also build generic empty messages invoking buildEmptyMessage or buildFault:\n```java\n\tpublic interface SoapBuilder {\n\n\t\tString buildInputMessage(SoapOperation operation);\n    \tString buildInputMessage(SoapOperation operation, SoapContext context);\n\n\t    String buildOutputMessage(SoapOperation operation);\n    \tString buildOutputMessage(SoapOperation operation, SoapContext context);\n\n\t    String buildFault(String code, String message);\n    \tString buildFault(String code, String message, SoapContext context);\n\n\t    String buildEmptyFault();\n    \tString buildEmptyFault(SoapContext context);\n\t    String buildEmptyMessage();\n\n\t\t// (…)\n\t}\n```\n\nLast, but not least. In most of the cases, you can relay on the default settings of the SoapContext that specifies how messages are generated, but if you would like to change it you have to populate the SoapContext object and pass it either to the Wsdl (from that moment on, SoapBuilder will use this context as the default one), or to single methods, changing the context of the generation for the time span of a single method invocation. In order to populate a SoapContext object use the fluent builder presented below.\n```java\n    SoapContext context = SoapContext.builder()\n        .alwaysBuildHeaders(true)\n        .buildOptional(true)\n        .exampleContent(true)\n        .typeComment(true)\n        .skipComments(false)\n        .build();\n```\n\n#### SoapClient\nYou can create an instance of a soap-client using a fluent builder. If you want to use a plain HTTP connection without tweaking any advance options you are good to go with the following snippet:\n```java\n    SoapClient client = SoapClient.builder()\n        .endpointUrl(\"http://example.com/endpoint\")\n        .build();\n```\nThen, you can send a SOAP envelope (as a String) invoking the post() method:\n```java\n    client.post(soapAction, envelope);\n```\n\nYou can also skip the SOAPAction header and send the envelope only:\n```java\n    client.post(envelope);\n```\n\n\n#### SoapServer\nUse a similar builder to create an instance of the soap-server. \n```java\n    SoapServer server = SoapServer.builder()\n                    .httpPort(8080)\n                    .build();\n```\nYou can start and stop the server using start/stop methods\n```java\n    server.start();\n    server.stop();\n```\n\nNow we would like to turn our server into a mock server that responds to request generating a sample content that is complaint with the schema of the operation that is being invoked.\nTo do that we have to create an AutoResponder and register it under the given context path.\nAutoresponder requires a populated SoapBuilder instance (that contains the WSDL and the binding name which it should use). Keep in mind the there can be only one binding under one context path;\n```java\n    String contextPath = \"/exampleEndpoint\";\n    AutoResponder responder = new AutoResponder(soapBuilder);\n    server.registerResponder(contextPath, responder);\n```\nFrom that moment our server will respond to request send to the \"exampleEndpoint\" context path.\n\nIf you would like to handle the request yourself you just have to implement the RequestResponder interface. \n```java\n    public interface RequestResponder {\n        java.xml.Source respond(SoapMessage request);\n    }\n```\n\nIt may be a bit cumbersome, as it is not that easy to match an XML request to the binding and operation, that is the reason why we provided an AbstractResponder that does all of that backstage.\n```java\n    public abstract class AbstractResponder implements RequestResponder {\n     \t// (…)\n     \t\n     \t/**\n     \t* Abstract method that should be implemented by overriding classes.\n     \t* This method is invoked whenever a request is send by the client.\n     \t* InvokedOperation may be passed to a SoapBuilder to construct the\n     \t* response to the request that was sent by the client.\n     \t*\n     \t* @param invokedOperation operation from the binding that is matched to the SOAP message\n     \t* @param message          SOAP message passed by the client\n     \t* @return response in the XML source format containing the whole SOAP envelope\n     \t*/\n    \tpublic abstract Source respond(SoapOperation invokedOperation, SoapMessage message);\n    }\n```\n\nAbstractResponder does all the hard work for you to match the message to the BindingOperation from the WSDL. If it find it the respond() operation is invoked, if not a SOAP fault is send back to the client saying the operation has not been found.\nAbstractResponder uses our implementation of the SoapOperationMatcher that matches the request to the operation in the following way:  \n\n* SOAP Action mapping\n* RCP bindings are matched using single top-level tag with the name of the invoked operation\n* Document bindings are matched by input types and then by input names\n \nHaving the SoapOperation object provided by the AbstractResponder you can easily generate and modify the response that you create using SoapBuilder that available in the responder as a instance field called builder.\n\nThat's a lot of stuff. I hope you enjoyed it! Have a look at the examples located in the soap-examples project. Try it out now and leave send us some feedback!\n\n### Project modules\n* soap-builder - responsible for the generation of SOAP XML messages.\n* soap-client - responsible for the communication with a SOAP endpoint.\n* soap-server - responsible for exposing SOAP endpoints and handling the requests.\n* soap-it - contains integration tests - tests soap-client and soap-server in many tricky ways.\n* soap-examples - contains a few example how to use soap-ws.\n* soap-legacy - legacy code extracted from 3rd party projects\n\n### Example usage\n\n#### Generate and post a SOAP message\n```java\n\tWsdl wsdl = Wsdl.parse(\"http://www.webservicex.net/CurrencyConvertor.asmx?WSDL\");\n    \n    SoapBuilder builder = wsdl.binding()\n    \t.localPart(\"CurrencyConvertorSoap\")\n    \t.find();\n    SoapOperation operation = builder.operation()\n    \t.soapAction(\"http://www.webserviceX.NET/ConversionRate\")\n    \t.find();\n    Request request = builder.buildInputMessage(operation)\n    \n    SoapClient client = SoapClient.builder()\n    \t.endpointUrl(\"http://www.webservicex.net/CurrencyConvertor.asmx\")\n    \t.build();\n    String response = client.post(request);\n```\n\n#### Create a SoapServer\n```java\n\tSoapServer server = SoapServer.builder()\n            .httpPort(9090)\n            .build();\n    server.start();\n```\n\n#### Create a SoapServer with AutoResponder (great to unit test web-services)\n```java\n\tSoapServer server = SoapServer.builder()\n            .httpPort(9090)\n            .build();\n    server.start();\n\n    URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/\", \"wsdl/stockquote-service.wsdl\");\n    Wsdl wsdl = Wsdl.parse(wsdlUrl);\n    SoapBuilder builder = wsdl.binding().localPart(\"StockQuoteSoapBinding\").find();\n    AutoResponder responder = new AutoResponder(builder);\n\n    server.registerRequestResponder(\"/service\", responder);\n    server.stop();\n```\n\n#### Create a SoapServer with a custom responder\n```java\n\tSoapServer server = SoapServer.builder()\n            .httpPort(9090)\n            .build();\n    server.start();\n\n    URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/\", \"wsdl/stockquote-service.wsdl\");\n    Wsdl wsdl = Wsdl.parse(wsdlUrl);\n    final SoapBuilder builder = wsdl.binding().localPart(\"StockQuoteSoapBinding\").find();\n    \n    AbstractResponder customResponder = new AbstractResponder(builder) {\n        @Override\n        public Source respond(SoapOperation invokedOperation, SoapMessage message) {\n            try {\n                // build the response using builder\n                String response = builder.buildOutputMessage(invokedOperation);\n                // here you can tweak the response -> for example with XSLT\n                //...\n                return XmlUtils.xmlStringToSource(response);\n            } catch (Exception e) {\n                // will automatically generate SOAP-FAULT\n                throw new RuntimeException(\"my custom error\", e);\n            }\n        }\n    };\n\n    server.registerRequestResponder(\"/service\", customResponder);\n```\n\nYou can find all these working examples in the soap-examples project. Enjoy!\n\n#### Spring example\nSpring configuration:\n```xml\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <beans xmlns=\"http://www.springframework.org/schema/beans\"\n           xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n           xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n        <!-- wsdl part (locally referenced wsdl) -->\n        <bean id=\"wsdlResource\" class=\"org.springframework.core.io.ClassPathResource\">\n            <constructor-arg>\n                <value>wsdl/currency-convertor.wsdl</value>\n            </constructor-arg>\n        </bean>\n\n        <bean id=\"wsdlUrl\" class=\"java.net.URL\" factory-bean=\"wsdlResource\" factory-method=\"getURL\"/>\n\n        <!-- uncomment to use the local wsdl\" -->\n        <!--<bean id=\"wsdl\" class=\"org.reficio.ws.builder.core.Wsdl\" factory-method=\"parse\">-->\n        <!--<constructor-arg ref=\"wsdlUrl\"/>-->\n        <!--</bean>-->\n\n        <!-- wsdl part (remote wsdl) -->\n        <bean id=\"wsdl\" class=\"org.reficio.ws.builder.core.Wsdl\" factory-method=\"parse\">\n            <constructor-arg>\n                <value>http://www.webservicex.net/CurrencyConvertor.asmx?WSDL</value>\n            </constructor-arg>\n        </bean>\n\n\n        <!-- soap-builder part -->\n        <bean id=\"soapContext\" class=\"org.reficio.ws.SoapContext\">\n            <constructor-arg name=\"exampleContent\" type=\"boolean\" value=\"true\"/>\n            <constructor-arg name=\"typeComments\" type=\"boolean\" value=\"true\"/>\n            <constructor-arg name=\"buildOptional\" type=\"boolean\" value=\"true\"/>\n            <constructor-arg name=\"alwaysBuildHeaders\" type=\"boolean\" value=\"true\"/>\n            <constructor-arg name=\"valueComments\" type=\"boolean\" value=\"true\"/>\n        </bean>\n\n        <bean id=\"soapBuilder\" class=\"org.reficio.ws.builder.SoapBuilder\" factory-bean=\"wsdl\" factory-method=\"getBuilder\">\n            <constructor-arg name=\"bindingName\">\n                <value>{http://www.webserviceX.NET/}CurrencyConvertorSoap</value>\n            </constructor-arg>\n            <constructor-arg name=\"context\" ref=\"soapContext\"/>\n        </bean>\n\n        <!-- security part -->\n        <bean id=\"securityFactory\" class=\"org.reficio.ws.client.core.SecurityFactory\">\n            <property name=\"authUsername\" value=\"tom\"/>\n            <property name=\"authPassword\" value=\"007\"/>\n            <property name=\"authMethod\" value=\"basic\"/>\n            <property name=\"strictHostVerification\" value=\"true\"/>\n            <property name=\"sslContextProtocol\" value=\"SSLv3\"/>\n        </bean>\n\n        <bean id=\"security\" class=\"org.reficio.ws.client.core.Security\" factory-bean=\"securityFactory\" factory-method=\"create\"/>\n\n        <!-- soap-client part -->\n        <bean id=\"soapClientFactory\" class=\"org.reficio.ws.client.core.SoapClientFactory\">\n            <property name=\"endpointUri\" value=\"http://localhost:8778/currencyConverter/soap\"/>\n            <property name=\"endpointSecurity\" ref=\"security\"/>\n        </bean>\n\n        <bean id=\"soapClient\" class=\"org.reficio.ws.client.core.SoapClient\" factory-bean=\"soapClientFactory\" factory-method=\"create\"/>\n\n\n        <!-- soap-server part -->\n        <bean id=\"autoResponder\" class=\"org.reficio.ws.server.responder.AutoResponder\">\n            <constructor-arg ref=\"soapBuilder\"/>\n        </bean>\n\n        <bean id=\"soapServerFactory\" class=\"org.reficio.ws.server.core.SoapServerFactory\">\n            <property name=\"httpPort\" value=\"8778\"/>\n            <property name=\"responders\">\n                <map>\n                    <entry key=\"/currencyConverter/soap\" value-ref=\"autoResponder\"/>\n                </map>\n            </property>\n        </bean>\n\n        <bean id=\"soapServer\" factory-bean=\"soapServerFactory\" factory-method=\"create\" init-method=\"start\"/>\n    </beans>\n```\n\nThen you can inject the beans to your code, for example in such a way:\n```java\n\t@Autowired\n    private SoapBuilder builder;\n\n    @Autowired\n    private SoapClient client;\n\n    @Autowired\n    private SoapServer server;\n```\n\n\n## Last but not least\n\n### How can I hack around?\n* GitHub -> https://github.com/reficio/soap-ws\n* Jenkins -> https://reficio.ci.cloudbees.com/job/soap-ws/\n* Site -> http://projects.reficio.org/soap-ws/1.0.0-SNAPSHOT/manual.html\n\n### Who's behind it?\nTom Bujok [tom.bujok@gmail.com]\n\n### History\nThis project was initially developed at centeractive ag for the purposes of the\nopen-sphere project. The library has been successfully incorporated into open-sphere\nand that initial version could be found in the centeractive's repository at github.\n\nCurrently the project is developed and maintained solely by Tom Bujok at reficio.org\n\n### Note\nThis project contains classes extracted from the soapUI code base by centeractive ag\nin October 2011. They are located in the soap-legacy module. Every extracted class is\nannotated with an comment to fulfill the requirements of the LGPL 2.1 license under\nwhich soapUI is released. That is also the reason why soap-legacy module is\nreleased under LGPL 2.1 license. All other soap-ws modules are released under Apache\nv.2 license. The main reason behind the class extraction was to separate the code that\nis responsible for the generation of the SOAP messages from the rest of the soapUI's\ncode that is tightly coupled with other modules, such as soapUI's graphical user\ninterface, etc. The goal was to create an open-source java project whose main\nresponsibility is to handle SOAP message generation and SOAP transmission purely on\nan XML level.\n\ncenteractive ag would like to express strong appreciation to SmartBear Software and\nto the whole team of soapUI's developers for creating soapUI and for releasing its\nsource code under a free and open-source license. centeractive ag extracted and\nmodified some parts of the soapUI's code in good faith, making every effort not\nto impair any existing functionality and to supplement it according to our\nrequirements, applying best practices of software design.\n\n\n[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/reficio/soap-ws/trend.png)](https://bitdeli.com/free \"Bitdeli Badge\")\n\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-ws</artifactId>\n    <packaging>pom</packaging>\n    <version>1.0.0-SNAPSHOT</version>\n    <name>soap-ws</name>\n    <description>\n        soap-ws is a lightweight and easy-to-use Java library to handle SOAP message generation and SOAP message transmission\n        on a purely XML level. With the usage of this library within few lines of code you can easily import your WSDL and generate\n        SOAP messages directly in an XML format. Then you can use the SoapClient to transmit this message over HTTP(s) to a web-service\n        endpoint. Finally, you can run SoapServer to receive SOAP messages and and respond to them. And all of that requires no classes\n        or stubs generation - everything happens directly in an XML format.\n    </description>\n    <url>http://projects.reficio.org/soap-ws/${project.version}</url>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n\n        <gmaven.version>1.5</gmaven.version>\n        <gmaven.provider.selection>2.0</gmaven.provider.selection>\n        <groovy.version>2.1.2</groovy.version>\n    </properties>\n\n    <modules>\n        <module>soap-common</module>\n        <module>soap-legacy</module>\n        <module>soap-builder</module>\n        <module>soap-client</module>\n        <module>soap-server</module>\n        <module>soap-it</module>\n        <module>soap-examples</module>\n        <module>soap-test</module>\n    </modules>\n\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n\n    <inceptionYear>2012</inceptionYear>\n    <developers>\n        <developer>\n            <id>tom.bujok</id>\n            <name>Tom Bujok</name>\n            <email>tom.bujok@gmail.com</email>\n            <organization>reficio</organization>\n            <organizationUrl>http://www.reficio.org</organizationUrl>\n            <roles>\n                <role>project lead</role>\n                <role>developer</role>\n            </roles>\n            <timezone>+1</timezone>\n        </developer>\n    </developers>\n\n    <issueManagement>\n        <system>github</system>\n        <url>https://github.com/reficio/soap-ws/issues</url>\n    </issueManagement>\n\n    <scm>\n        <connection>scm:git:git://github.com/reficio/soap-ws.git</connection>\n        <developerConnection>scm:git:git@github.com:reficio/soap-ws.git</developerConnection>\n        <url>http://github.com/reficio/soap-ws</url>\n    </scm>\n\n    <ciManagement>\n        <system>jenkins</system>\n        <url>https://reficio.ci.cloudbees.com/job/soap-ws/</url>\n    </ciManagement>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.apache.commons</groupId>\n                <artifactId>commons-lang3</artifactId>\n                <version>3.1</version>\n            </dependency>\n            <dependency>\n                <groupId>commons-io</groupId>\n                <artifactId>commons-io</artifactId>\n                <version>2.3</version>\n            </dependency>\n            <dependency>\n                <groupId>commons-logging</groupId>\n                <artifactId>commons-logging</artifactId>\n                <version>1.1.1</version>\n            </dependency>\n            <dependency>\n                <groupId>commons-codec</groupId>\n                <artifactId>commons-codec</artifactId>\n                <version>1.6</version>\n            </dependency>\n            <dependency>\n                <groupId>log4j</groupId>\n                <artifactId>log4j</artifactId>\n                <version>1.2.17</version>\n            </dependency>\n            <dependency>\n                <groupId>junit</groupId>\n                <artifactId>junit</artifactId>\n                <version>4.11</version>\n            </dependency>\n            <dependency>\n                <groupId>org.spockframework</groupId>\n                <artifactId>spock-core</artifactId>\n                <version>0.7-groovy-2.0</version>\n            </dependency>\n            <dependency>\n                <groupId>com.googlecode.guava-osgi</groupId>\n                <artifactId>guava-osgi</artifactId>\n                <version>11.0.1</version>\n            </dependency>\n            <dependency>\n                <groupId>org.apache.ws.commons.schema</groupId>\n                <artifactId>XmlSchema</artifactId>\n                <version>1.4.5</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.codehaus.gmaven.runtime</groupId>\n                <artifactId>gmaven-runtime-2.0</artifactId>\n                <version>${gmaven.version}</version>\n                <exclusions>\n                    <exclusion>\n                        <groupId>org.codehaus.groovy</groupId>\n                        <artifactId>groovy-all</artifactId>\n                    </exclusion>\n                </exclusions>\n            </dependency>\n            <dependency>\n                <groupId>org.codehaus.groovy</groupId>\n                <artifactId>groovy-all</artifactId>\n                <version>${groovy.version}</version>\n            </dependency>\n\n        </dependencies>\n    </dependencyManagement>\n\n    <build>\n        <plugins>\n            <plugin>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>2.5.1</version>\n                <configuration>\n                    <source>1.6</source>\n                    <target>1.6</target>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n            </plugin>\n\n            <plugin>\n                <groupId>org.codehaus.gmaven</groupId>\n                <artifactId>gmaven-plugin</artifactId>\n                <version>${gmaven.version}</version>\n                <configuration>\n                    <source/>\n                    <providerSelection>${gmaven.provider.selection}</providerSelection>\n                    <sourceEncoding>UTF-8</sourceEncoding>\n                </configuration>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>generateStubs</goal>\n                            <goal>compile</goal>\n                            <goal>generateTestStubs</goal>\n                            <goal>testCompile</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <dependencies>\n                    <dependency>\n                        <groupId>org.codehaus.groovy</groupId>\n                        <artifactId>groovy-all</artifactId>\n                        <version>${groovy.version}</version>\n                    </dependency>\n                </dependencies>\n            </plugin>\n            <!--<plugin>-->\n            <!--<groupId>org.spockframework</groupId>-->\n            <!--<artifactId>spock-maven</artifactId>-->\n            <!--<version>0.7-groovy-2.0</version>-->\n            <!--&lt;!&ndash;<executions>&ndash;&gt;-->\n            <!--&lt;!&ndash;<execution>&ndash;&gt;-->\n            <!--&lt;!&ndash;<goals>&ndash;&gt;-->\n            <!--&lt;!&ndash;<goal>find-specs</goal>&ndash;&gt;-->\n            <!--&lt;!&ndash;</goals>&ndash;&gt;-->\n            <!--&lt;!&ndash;</execution>&ndash;&gt;-->\n            <!--&lt;!&ndash;</executions>&ndash;&gt;-->\n            <!--</plugin>-->\n\n\n            <plugin>\n                <groupId>com.mycila.maven-license-plugin</groupId>\n                <artifactId>maven-license-plugin</artifactId>\n                <version>1.10.b1</version>\n                <configuration>\n                    <strictCheck>true</strictCheck>\n                    <basedir>${basedir}</basedir>\n                    <header>src/main/resources/license.txt</header>\n                    <quiet>false</quiet>\n                    <failIfMissing>true</failIfMissing>\n                    <aggregate>false</aggregate>\n                    <includes>\n                        <include>src/**</include>\n                        <include>**/test/**</include>\n                    </includes>\n                    <excludes>\n                        <exclude>target/**</exclude>\n                        <exclude>**/resources/**</exclude>\n                        <exclude>.clover/**</exclude>\n                    </excludes>\n                    <useDefaultExcludes>true</useDefaultExcludes>\n                    <mapping>\n                        <jwc>XML_STYLE</jwc>\n                        <application>XML_STYLE</application>\n                        <myFileExtension>JAVADOC_STYLE</myFileExtension>\n                    </mapping>\n                    <useDefaultMapping>true</useDefaultMapping>\n                    <properties>\n                        <year>${project.inceptionYear}-2013</year>\n                        <company>Reficio (TM) - Reestablish your software!</company>\n                    </properties>\n                    <encoding>UTF-8</encoding>\n                </configuration>\n                <executions>\n                    <execution>\n                        <phase>compile</phase>\n                        <goals>\n                            <goal>check</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.felix</groupId>\n                <artifactId>maven-bundle-plugin</artifactId>\n                <version>2.3.4</version>\n                <extensions>true</extensions>\n                <inherited>true</inherited>\n                <configuration>\n                    <instructions>\n                        <Implementation-Title>${project.artifactId}</Implementation-Title>\n                        <Implementation-Version>${project.version}</Implementation-Version>\n                        <Bundle-Name>${project.artifactId}</Bundle-Name>\n                        <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>\n                        <!--\n                        <Export-Package>{local-packages};version=${project.version};-noimport:=true</Export-Package>\n                        -->\n                        <Import-Package>*</Import-Package>\n                        <Private-Package>!*</Private-Package>\n                        <_versionpolicy-impl>[$(version;==;$(@)),$(version;=+;$(@)))</_versionpolicy-impl>\n                        <_versionpolicy-uses>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy-uses>\n                        <_versionpolicy>[$(version;==;$(@)),$(version;+;$(@)))</_versionpolicy>\n                        <_failok>false</_failok>\n                    </instructions>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-jar-plugin</artifactId>\n                <version>2.3.1</version>\n                <executions>\n                    <execution>\n                        <goals>\n                            <goal>test-jar</goal>\n                        </goals>\n                        <!--<phase>compile</phase>-->\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-source-plugin</artifactId>\n                <version>2.1.2</version>\n                <executions>\n                    <execution>\n                        <id>attach-sources</id>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.8.1</version>\n                <executions>\n                    <execution>\n                        <id>attach-javadocs</id>\n                        <goals>\n                            <goal>jar</goal>\n                        </goals>\n                    </execution>\n                </executions>\n                <configuration>\n                    <quiet>true</quiet>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <dependencies>\n                    <dependency>\n                        <groupId>org.apache.maven.doxia</groupId>\n                        <artifactId>doxia-module-markdown</artifactId>\n                        <version>1.3</version>\n                    </dependency>\n                </dependencies>\n                <configuration>\n                    <reportPlugins>\n                        <plugin>\n                            <groupId>org.apache.maven.plugins</groupId>\n                            <artifactId>maven-project-info-reports-plugin</artifactId>\n                            <version>2.2</version>\n                            <configuration>\n                                <dependencyDetailsEnabled>false</dependencyDetailsEnabled>\n                                <dependencyLocationsEnabled>false</dependencyLocationsEnabled>\n                            </configuration>\n                            <reports>\n                                <report>index</report>\n                                <report>project-team</report>\n                                <report>help</report>\n                                <report>cim</report>\n                                <report>issue-tracking</report>\n                                <report>license</report>\n                                <report>scm</report>\n                                <report>summary</report>\n                            </reports>\n                        </plugin>\n                        <plugin>\n                            <groupId>org.apache.maven.plugins</groupId>\n                            <artifactId>maven-javadoc-plugin</artifactId>\n                            <version>2.8.1</version>\n                        </plugin>\n                        <plugin>\n                            <groupId>org.apache.maven.plugins</groupId>\n                            <artifactId>maven-jxr-plugin</artifactId>\n                            <version>2.2</version>\n                            <configuration>\n                                <aggregate>true</aggregate>\n                            </configuration>\n                            <reportSets>\n                                <reportSet>\n                                    <reports>\n                                        <report>jxr</report>\n                                        <report>test-jxr</report>\n                                    </reports>\n                                </reportSet>\n                            </reportSets>\n                        </plugin>\n                        <plugin>\n                            <!-- marker to add clover report -->\n                            <groupId>com.atlassian.maven.plugins</groupId>\n                            <artifactId>maven-clover2-plugin</artifactId>\n                            <version>3.1.7</version>\n                            <configuration>\n                                <cloverMergeDatabase>${user.home}/clover/soap-ws/cloverMerged.db</cloverMergeDatabase>\n                            </configuration>\n                        </plugin>\n                    </reportPlugins>\n                </configuration>\n            </plugin>\n        </plugins>\n\n        <extensions>\n            <extension>\n                <groupId>org.apache.maven.wagon</groupId>\n                <artifactId>wagon-ftp</artifactId>\n                <version>2.2</version>\n            </extension>\n            <extension>\n                <groupId>org.apache.maven.wagon</groupId>\n                <artifactId>wagon-ssh</artifactId>\n                <version>2.2</version>\n            </extension>\n        </extensions>\n    </build>\n\n    <repositories>\n        <repository>\n            <id>reficio</id>\n            <url>http://repo.reficio.org/maven/</url>\n        </repository>\n        <repository>\n            <id>eviware</id>\n            <url>http://www.eviware.com/repository/maven2/</url>\n        </repository>\n        <repository>\n            <id>jboss</id>\n            <url>https://repository.jboss.org/nexus/content/repositories/deprecated/</url>\n        </repository>\n        <repository>\n            <id>servicemix</id>\n            <url>http://svn.apache.org/repos/asf/servicemix/m2-repo/</url>\n        </repository>\n\n    </repositories>\n\n    <profiles>\n        <profile>\n            <id>clover</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>com.atlassian.maven.plugins</groupId>\n                        <artifactId>maven-clover2-plugin</artifactId>\n                        <version>3.1.7</version>\n                        <configuration>\n                            <cloverMergeDatabase>${user.home}/clover/soap-ws/cloverMerged.db</cloverMergeDatabase>\n                            <generateHtml>true</generateHtml>\n                            <generateXml>true</generateXml>\n                            <includesAllSourceRoots>true</includesAllSourceRoots>\n                            <includesTestSourceRoots>true</includesTestSourceRoots>\n                        </configuration>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>site</id>\n            <activation>\n                <!-- invoke only on top-level project -->\n                <file>\n                    <exists>README.md</exists>\n                </file>\n            </activation>\n            <build>\n                <plugins>\n                    <plugin>\n                        <artifactId>maven-antrun-plugin</artifactId>\n                        <version>1.7</version>\n                        <executions>\n                            <execution>\n                                <id>modify-markdown</id>\n                                <phase>pre-site</phase>\n                                <configuration>\n                                    <failOnError>false</failOnError>\n                                    <target>\n\n                                        <copy todir=\"${basedir}/src/site/markdown\">\n                                            <fileset dir=\"${basedir}\" includes=\"README.md\"/>\n                                        </copy>\n\n                                        <move file=\"${basedir}/src/site/markdown/README.md\"\n                                              tofile=\"${basedir}/src/site/markdown/manual.md\"/>\n\n                                        <replaceregexp file=\"${basedir}/src/site/markdown/manual.md\"\n                                                       match=\"```.*\"\n                                                       replace=\"\"\n                                                       byline=\"true\"/>\n\n                                    </target>\n                                </configuration>\n                                <goals>\n                                    <goal>run</goal>\n                                </goals>\n                            </execution>\n                            <execution>\n                                <id>default-cli</id>\n                                <configuration>\n                                    <tasks>\n                                        <echo message=\"Running ANT for deploying the site...\"/>\n                                        <property name=\"project_folder\" value=\"/var/www/projects/${project.artifactId}\"/>\n                                        <property name=\"version_folder\" value=\"${project_folder}/${project.version}\"/>\n                                        <property name=\"site_tgz\" value=\"${project.artifactId}-${project.version}-site.tgz\"/>\n                                        <tar destfile=\"target/${site_tgz}\" basedir=\"target/site\" compression=\"gzip\"/>\n                                        <echo message=\"Creating folder for the site ${version_folder}\"/>\n                                        <sshexec host=\"${reficio.server}\"\n                                                 username=\"${reficio.usr}\"\n                                                 password=\"${reficio.pwd}\"\n                                                 verbose=\"false\"\n                                                 command=\"mkdir -p ${version_folder}\"/>\n                                        <echo message=\"Uploading compressed site ${site_tgz}\"/>\n                                        <scp file=\"target/${site_tgz}\" todir=\"${reficio.usr}@${reficio.server}:${project_folder}/\"\n                                             password=\"${reficio.pwd}\" verbose=\"false\"/>\n                                        <echo message=\"Extracting compressed site and cleaning up\"/>\n                                        <sshexec host=\"${reficio.server}\"\n                                                 username=\"${reficio.usr}\"\n                                                 password=\"${reficio.pwd}\"\n                                                 verbose=\"false\"\n                                                 command=\"rm -rf ${version_folder}/*; tar -C ${version_folder} -xf ${project_folder}/${site_tgz}; rm ${project_folder}/${project.artifactId}-${project.version}-site.tgz\"/>\n                                    </tasks>\n                                </configuration>\n                                <goals>\n                                    <goal>run</goal>\n                                </goals>\n                            </execution>\n                        </executions>\n                        <dependencies>\n                            <dependency>\n                                <groupId>org.apache.ant</groupId>\n                                <artifactId>ant-jsch</artifactId>\n                                <version>1.8.4</version>\n                            </dependency>\n                            <dependency>\n                                <groupId>com.jcraft</groupId>\n                                <artifactId>jsch</artifactId>\n                                <version>0.1.48</version>\n                            </dependency>\n                        </dependencies>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n        <profile>\n            <id>findbugs</id>\n            <build>\n                <plugins>\n                    <plugin>\n                        <groupId>org.codehaus.mojo</groupId>\n                        <artifactId>findbugs-maven-plugin</artifactId>\n                        <version>2.4.0</version>\n                        <executions>\n                            <execution>\n                                <id>findbugs</id>\n                                <phase>compile</phase>\n                                <goals>\n                                    <goal>findbugs</goal>\n                                </goals>\n                                <configuration>\n                                    <xmlOutput>true</xmlOutput>\n                                    <excludeFilterFile>src/main/resources/findbugs-exclude.xml</excludeFilterFile>\n                                </configuration>\n                            </execution>\n                        </executions>\n                    </plugin>\n                </plugins>\n            </build>\n        </profile>\n\n    </profiles>\n\n    <distributionManagement>\n        <repository>\n            <id>reficio</id>\n            <name>Reficio Maven Repository</name>\n            <url>scp://${reficio.server}/var/www/repo/maven</url>\n        </repository>\n    </distributionManagement>\n\n</project>\n"
  },
  {
    "path": "soap-builder/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-builder</artifactId>\n    <packaging>bundle</packaging>\n    <name>soap-builder - XML based SOAP message generator</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <licenses>\n        <license>\n            <name>The Apache Software License, Version 2.0</name>\n            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>\n            <distribution>repo</distribution>\n        </license>\n    </licenses>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-common</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-legacy</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/SoapBuilder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.reficio.ws.SoapContext;\n\nimport javax.wsdl.Binding;\nimport javax.xml.namespace.QName;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapBuilder {\n\n    List<SoapOperation> getOperations();\n\n    SoapOperationFinder operation();\n\n    SoapContext getContext();\n\n    SoapOperationBuilder getOperationBuilder(SoapOperation operation);\n\n    String buildInputMessage(SoapOperation operation);\n\n    String buildInputMessage(SoapOperation operation, SoapContext context);\n\n    String buildOutputMessage(SoapOperation operation);\n\n    String buildOutputMessage(SoapOperation operation, SoapContext context);\n\n    String buildFault(String code, String message);\n\n    String buildFault(String code, String message, SoapContext context);\n\n    String buildEmptyFault();\n\n    String buildEmptyFault(SoapContext context);\n\n    String buildEmptyMessage();\n\n    String buildEmptyMessage(SoapContext context);\n\n    QName getBindingName();\n\n    Binding getBinding();\n\n    List<String> getServiceUrls();\n\n    void validateInputMessage(SoapOperation operation, String message);\n\n    void validateInputMessage(SoapOperation operation, String message, boolean strict);\n\n    void validateOutputMessage(SoapOperation operation, String message);\n\n    void validateOutputMessage(SoapOperation operation, String message, boolean strict);\n\n    boolean isRpc();\n\n    boolean isInputSoapEncoded(SoapOperation operation);\n\n    boolean isOutputSoapEncoded(SoapOperation operation);\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/SoapBuilderFinder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.reficio.ws.SoapContext;\n\nimport javax.xml.namespace.QName;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\n\npublic interface SoapBuilderFinder {\n\n    SoapBuilderFinder name(String name);\n\n    SoapBuilderFinder name(QName name);\n\n    SoapBuilderFinder namespaceURI(String namespaceURI);\n\n    SoapBuilderFinder localPart(String localPart);\n\n    SoapBuilderFinder prefix(String prefix);\n\n    SoapBuilder find();\n\n    SoapBuilder find(SoapContext context);\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/SoapOperation.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport javax.xml.namespace.QName;\n\n/**\n * Wrapper object that represents one operation from a WSDL's binding\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapOperation {\n\n    QName getBindingName();\n\n    String getOperationName();\n\n    String getOperationInputName();\n\n    String getOperationOutputName();\n\n    String getSoapAction();\n\n    boolean isRpc();\n\n    boolean isInputSoapEncoded();\n\n    boolean isOutputSoapEncoded();\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/SoapOperationBuilder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.reficio.ws.SoapContext;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapOperationBuilder extends SoapOperation {\n\n    void setContext(SoapContext context);\n\n    SoapContext getContext();\n\n    String buildInputMessage();\n\n    String buildInputMessage(SoapContext context);\n\n    String buildOutputMessage();\n\n    String buildOutputMessage(SoapContext context);\n\n    String buildFault(String code, String message);\n\n    String buildFault(String code, String message, SoapContext context);\n\n    String buildEmptyFault();\n\n    String buildEmptyFault(SoapContext context);\n\n    String buildEmptyMessage();\n\n    String buildEmptyMessage(SoapContext context);\n\n    void validateInputMessage(String message);\n\n    void validateInputMessage(String message, boolean strict);\n\n    void validateOutputMessage(String message);\n\n    void validateOutputMessage(String message, boolean strict);\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/SoapOperationFinder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.reficio.ws.SoapContext;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapOperationFinder {\n\n    SoapOperationFinder name(String operationName);\n\n    SoapOperationFinder soapAction(String soapAction);\n\n    SoapOperationFinder inputName(String inputName);\n\n    SoapOperationFinder outputName(String inputName);\n\n    SoapOperationBuilder find();\n\n    SoapOperationBuilder find(SoapContext context);\n\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/core/SoapBuilderImpl.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder.core;\n\n\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.SoapOperationBuilder;\nimport org.reficio.ws.builder.SoapOperationFinder;\nimport org.reficio.ws.legacy.SoapLegacyFacade;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.wsdl.Port;\nimport javax.wsdl.Service;\nimport javax.xml.namespace.QName;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\nclass SoapBuilderImpl implements SoapBuilder {\n\n    private final SoapLegacyFacade soapFacade;\n    private final Binding binding;\n    private final SoapContext context;\n    private final List<String> serviceUrls;\n\n    SoapBuilderImpl(SoapLegacyFacade soapFacade, Binding binding, SoapContext context) {\n        this.soapFacade = soapFacade;\n        this.binding = binding;\n        this.context = context;\n        this.serviceUrls = new ArrayList<String>();\n        initializeServiceUrls();\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void initializeServiceUrls() {\n        for (Service service : soapFacade.getServices()) {\n            for (Port port : (Collection<Port>) service.getPorts().values()) {\n                String address = SoapLegacyFacade.getSoapEndpoint(port);\n                if (address != null) {\n                    serviceUrls.add(address);\n                }\n            }\n        }\n    }\n\n    public BindingOperation getBindingOperation(SoapOperation op) {\n        BindingOperation operation = binding.getBindingOperation(op.getOperationName(),\n                op.getOperationInputName(), op.getOperationOutputName());\n        if (operation == null) {\n            throw new SoapBuilderException(\"Operation not found\");\n        }\n        return operation;\n    }\n\n    @Override\n    @SuppressWarnings(\"unchecked\")\n    public List<SoapOperation> getOperations() {\n        List<SoapOperation> operationNames = new ArrayList<SoapOperation>();\n        for (BindingOperation operation : (List<BindingOperation>) binding.getBindingOperations()) {\n            operationNames.add(SoapOperationImpl.create(this, binding, operation));\n        }\n        return operationNames;\n    }\n\n    @Override\n    public SoapContext getContext() {\n        return context;\n    }\n\n    @Override\n    public SoapOperationBuilder getOperationBuilder(SoapOperation operation) {\n        BindingOperation bindingOperation = getBindingOperation(operation);\n        return SoapOperationImpl.create(this, binding, bindingOperation);\n    }\n\n    @Override\n    public SoapOperationFinder operation() {\n        return new SoapOperationFinderImpl(this, binding);\n    }\n\n    @Override\n    public String buildInputMessage(SoapOperation operation) {\n        return buildInputMessage(operation, context);\n    }\n\n    @Override\n    public String buildInputMessage(SoapOperation operation, SoapContext context) {\n        try {\n            return soapFacade.buildSoapMessageFromInput(binding, getBindingOperation(operation), context);\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    @Override\n    public String buildOutputMessage(SoapOperation operation) {\n        return buildOutputMessage(operation, context);\n    }\n\n    @Override\n    public String buildOutputMessage(SoapOperation operation, SoapContext context) {\n        try {\n            return soapFacade.buildSoapMessageFromOutput(binding, getBindingOperation(operation), context);\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    @Override\n    public String buildFault(String code, String message) {\n        return soapFacade.buildFault(code, message, binding, context);\n    }\n\n    @Override\n    public String buildFault(String code, String message, SoapContext context) {\n        return soapFacade.buildFault(code, message, binding, context);\n    }\n\n    @Override\n    public String buildEmptyFault() {\n        return soapFacade.buildEmptyFault(binding, context);\n    }\n\n    @Override\n    public String buildEmptyFault(SoapContext context) {\n        return soapFacade.buildEmptyFault(binding, context);\n    }\n\n    @Override\n    public String buildEmptyMessage() {\n        return soapFacade.buildEmptyMessage(binding, context);\n    }\n\n    @Override\n    public String buildEmptyMessage(SoapContext context) {\n        return soapFacade.buildEmptyMessage(binding, context);\n    }\n\n    @Override\n    public QName getBindingName() {\n        return binding.getQName();\n    }\n\n    @Override\n    public Binding getBinding() {\n        return binding;\n    }\n\n    @Override\n    public List<String> getServiceUrls() {\n        return new ArrayList<String>(serviceUrls);\n    }\n\n    @Override\n    public void validateInputMessage(SoapOperation operation, String message) {\n        BindingOperation bindingOperation = getBindingOperation(operation);\n        soapFacade.validateSoapRequestMessage(binding, bindingOperation, message, false);\n    }\n\n    @Override\n    public void validateInputMessage(SoapOperation operation, String message, boolean strict) {\n        BindingOperation bindingOperation = getBindingOperation(operation);\n        soapFacade.validateSoapRequestMessage(binding, bindingOperation, message, strict);\n    }\n\n    @Override\n    public void validateOutputMessage(SoapOperation operation, String message) {\n        BindingOperation bindingOperation = getBindingOperation(operation);\n        soapFacade.validateSoapResponseMessage(binding, bindingOperation, message, false);\n    }\n\n    @Override\n    public void validateOutputMessage(SoapOperation operation, String message, boolean strict) {\n        BindingOperation bindingOperation = getBindingOperation(operation);\n        soapFacade.validateSoapResponseMessage(binding, bindingOperation, message, strict);\n    }\n\n    @Override\n    public boolean isRpc() {\n        return SoapLegacyFacade.isRpc(binding);\n    }\n\n    @Override\n    public boolean isInputSoapEncoded(SoapOperation operation) {\n        return soapFacade.isInputSoapEncoded(getBindingOperation(operation));\n    }\n\n    @Override\n    public boolean isOutputSoapEncoded(SoapOperation operation) {\n        return soapFacade.isOutputSoapEncoded(getBindingOperation(operation));\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/core/SoapOperationFinderImpl.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder.core;\n\nimport com.google.common.base.Preconditions;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperationBuilder;\nimport org.reficio.ws.builder.SoapOperationFinder;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\nclass SoapOperationFinderImpl implements SoapOperationFinder {\n\n    private final Binding binding;\n\n    private String operationName;\n    private String operationInputName;\n    private String operationOutputName;\n    private String soapAction;\n    private SoapBuilder builder;\n\n    SoapOperationFinderImpl(SoapBuilder builder, Binding binding) {\n        this.binding = binding;\n        this.builder = builder;\n    }\n\n    @Override\n    public SoapOperationFinder name(String operationName) {\n        Preconditions.checkNotNull(operationName);\n        this.operationName = operationName;\n        return this;\n    }\n\n    @Override\n    public SoapOperationFinder soapAction(String soapAction) {\n        Preconditions.checkNotNull(soapAction);\n        this.soapAction = soapAction;\n        return this;\n    }\n\n    @Override\n    public SoapOperationFinder inputName(String inputName) {\n        Preconditions.checkNotNull(inputName);\n        this.operationInputName = inputName;\n        return this;\n    }\n\n    @Override\n    public SoapOperationFinder outputName(String outputName) {\n        Preconditions.checkNotNull(outputName);\n        this.operationOutputName = outputName;\n        return this;\n    }\n\n    @Override\n    @SuppressWarnings(\"unchecked\")\n    public SoapOperationBuilder find() {\n        validateInput();\n        List<SoapOperationBuilder> found = new ArrayList<SoapOperationBuilder>();\n        for (BindingOperation operation : (List<BindingOperation>) binding.getBindingOperations()) {\n            boolean condition = true;\n            condition &= checkOperationName(operation);\n            condition &= checkSoapAction(operation);\n            condition &= checkOperationInputName(operation);\n            condition &= checkOperationOutputName(operation);\n            if(condition) {\n                found.add(SoapOperationImpl.create(builder, binding, operation));\n                if(found.size() > 1) {\n                    throw new SoapBuilderException(\"Operation not unique - found more than one operation\");\n                }\n            }\n        }\n        if(found.isEmpty()) {\n            throw new SoapBuilderException(\"Found no operations\");\n        }\n        return found.iterator().next();\n    }\n\n    @Override\n    public SoapOperationBuilder find(SoapContext context) {\n        SoapOperationBuilder builder = find();\n        builder.setContext(context);\n        return builder;\n    }\n\n    private void validateInput() {\n        boolean failed = true;\n        failed &= this.operationName == null;\n        failed &= this.soapAction == null;\n        failed &= this.operationInputName == null;\n        failed &= this.operationOutputName == null;\n        if(failed) {\n            throw new IllegalArgumentException(\"All finder properties cannot be null\");\n        }\n    }\n\n    private boolean checkOperationName(BindingOperation op) {\n        if (this.operationName != null) {\n            return this.operationName.equals(op.getOperation().getName());\n        }\n        return true;\n    }\n\n    private boolean checkSoapAction(BindingOperation op) {\n        if (this.soapAction != null) {\n            return this.soapAction.equals(SoapUtils.getSOAPActionUri(op));\n        }\n        return true;\n    }\n\n    private boolean checkOperationInputName(BindingOperation op) {\n        if (this.operationInputName != null) {\n            return this.operationInputName.equals(op.getOperation().getInput().getName());\n        }\n        return true;\n    }\n\n    private boolean checkOperationOutputName(BindingOperation op) {\n        if (this.operationOutputName != null) {\n            return this.operationOutputName.equals(op.getOperation().getOutput().getName());\n        }\n        return true;\n    }\n\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/core/SoapOperationImpl.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder.core;\n\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.SoapOperationBuilder;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.xml.namespace.QName;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\nclass SoapOperationImpl implements SoapOperation, SoapOperationBuilder {\n\n    private final QName bindingName;\n    private final String operationName;\n    private final String operationInputName;\n    private final String operationOutputName;\n    private final String soapAction;\n    private final SoapBuilder builder;\n    private SoapContext context;\n\n    SoapOperationImpl(SoapBuilder builder, QName bindingName, String operationName, String operationInputName,\n                      String operationOutputName, String soapAction) {\n\n        this.builder = builder;\n        this.bindingName = bindingName;\n        this.operationName = operationName;\n        this.operationInputName = operationInputName;\n        this.operationOutputName = operationOutputName;\n        this.soapAction = soapAction;\n        this.context = builder.getContext();\n    }\n\n    public QName getBindingName() {\n        return bindingName;\n    }\n\n    public String getOperationName() {\n        return operationName;\n    }\n\n    public String getOperationInputName() {\n        return operationInputName;\n    }\n\n    public String getOperationOutputName() {\n        return operationOutputName;\n    }\n\n    public String getSoapAction() {\n        return soapAction;\n    }\n\n    @Override\n    public boolean isRpc() {\n        return builder.isRpc();\n    }\n\n    @Override\n    public boolean isInputSoapEncoded() {\n        return builder.isInputSoapEncoded(this);\n    }\n\n    @Override\n    public boolean isOutputSoapEncoded() {\n        return builder.isOutputSoapEncoded(this);\n    }\n\n    static SoapOperationBuilder create(SoapBuilder builder, Binding binding, BindingOperation operation) {\n        String soapAction = SoapUtils.getSOAPActionUri(operation);\n        return create(builder, binding, operation, soapAction);\n    }\n\n    static SoapOperationBuilder create(SoapBuilder builder, Binding binding, BindingOperation operation, String soapAction) {\n        String bindingInputName = operation.getBindingInput() != null ? operation.getBindingInput().getName() : null;\n        String bindingOutputName = operation.getBindingOutput() != null ? operation.getBindingOutput().getName() : null;\n        return new SoapOperationImpl(builder, binding.getQName(), operation.getName(), bindingInputName, bindingOutputName,\n                SoapUtils.normalizeSoapAction(soapAction));\n    }\n\n    public String toString() {\n        return String.format(\"bindingName=[%s] operationName=[%s] operationInputName=[%s] operationOutputName=[%s] soapAction=[%s]\",\n                bindingName.toString(), operationName, operationInputName, operationOutputName, soapAction);\n    }\n\n    @Override\n    public void setContext(SoapContext context) {\n        this.context = context;\n    }\n\n    @Override\n    public SoapContext getContext() {\n        return builder.getContext();\n    }\n\n    @Override\n    public String buildInputMessage() {\n        return builder.buildInputMessage(this, context);\n    }\n\n    @Override\n    public String buildInputMessage(SoapContext context) {\n        return builder.buildInputMessage(this, context);\n    }\n\n    @Override\n    public String buildOutputMessage() {\n        return builder.buildOutputMessage(this, context);\n    }\n\n    @Override\n    public String buildOutputMessage(SoapContext context) {\n        return builder.buildOutputMessage(this, context);\n    }\n\n    @Override\n    public String buildFault(String code, String message) {\n        return builder.buildFault(code, message, context);\n    }\n\n    @Override\n    public String buildFault(String code, String message, SoapContext context) {\n        return builder.buildFault(code, message, context);\n    }\n\n    @Override\n    public String buildEmptyFault() {\n        return builder.buildEmptyFault(context);\n    }\n\n    @Override\n    public String buildEmptyFault(SoapContext context) {\n        return builder.buildEmptyFault(context);\n    }\n\n    @Override\n    public String buildEmptyMessage() {\n        return builder.buildEmptyMessage(context);\n    }\n\n    @Override\n    public String buildEmptyMessage(SoapContext context) {\n        return builder.buildEmptyMessage(context);\n    }\n\n    @Override\n    public void validateInputMessage(String message) {\n        builder.validateInputMessage(this, message);\n    }\n\n    @Override\n    public void validateInputMessage(String message, boolean strict) {\n        builder.validateInputMessage(this, message, strict);\n    }\n\n    @Override\n    public void validateOutputMessage(String message) {\n        builder.validateOutputMessage(this, message);\n    }\n\n    @Override\n    public void validateOutputMessage(String message, boolean strict) {\n        builder.validateOutputMessage(this, message, strict);\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/core/SoapUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder.core;\n\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperationBuilder;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.wsdl.extensions.ExtensibilityElement;\nimport javax.wsdl.extensions.soap.SOAPOperation;\nimport javax.wsdl.extensions.soap12.SOAP12Operation;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapUtils {\n\n    // removes \"\" from soap action\n    public static String normalizeSoapAction(String soapAction) {\n        String normalizedSoapAction = \"\";\n        if (soapAction != null && soapAction.length() > 0) {\n            normalizedSoapAction = soapAction;\n            if (soapAction.charAt(0) == '\"' && soapAction.charAt(soapAction.length() - 1) == '\"') {\n                normalizedSoapAction = soapAction.substring(1, soapAction.length() - 1).trim();\n            }\n        }\n        return normalizedSoapAction;\n    }\n\n    public static String getSOAPActionUri(BindingOperation operation) {\n        List extensions = operation.getExtensibilityElements();\n        if (extensions != null) {\n            for (int i = 0; i < extensions.size(); i++) {\n                ExtensibilityElement extElement = (ExtensibilityElement) extensions.get(i);\n                if (extElement instanceof SOAPOperation) {\n                    SOAPOperation soapOp = (SOAPOperation) extElement;\n                    return soapOp.getSoapActionURI();\n                } else if (extElement instanceof SOAP12Operation) {\n                    SOAP12Operation soapOp = (SOAP12Operation) extElement;\n                    return soapOp.getSoapActionURI();\n                }\n            }\n        }\n        return null;\n    }\n\n    public static SoapOperationBuilder createOperation(SoapBuilder builder, Binding binding, BindingOperation operation, String soapAction) {\n        return SoapOperationImpl.create(builder, binding, operation, soapAction);\n    }\n}\n"
  },
  {
    "path": "soap-builder/src/main/java/org/reficio/ws/builder/core/Wsdl.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder.core;\n\nimport com.google.common.base.Preconditions;\nimport org.apache.commons.lang3.StringUtils;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapBuilderFinder;\nimport org.reficio.ws.legacy.SoapLegacyFacade;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.WSDLException;\nimport javax.xml.namespace.QName;\nimport java.io.File;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic final class Wsdl {\n\n    private final URL wsdlUrl;\n    private final SoapLegacyFacade soapFacade;\n\n    private Wsdl(URL wsdlUrl) {\n        try {\n            this.wsdlUrl = wsdlUrl;\n            this.soapFacade = new SoapLegacyFacade(wsdlUrl);\n        } catch (WSDLException e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public static Wsdl parse(URL wsdlUrl) {\n        Preconditions.checkNotNull(wsdlUrl, \"URL of the WSDL cannot be null\");\n        return new Wsdl(wsdlUrl);\n    }\n\n    public static Wsdl parse(String wsdlUrl) {\n        Preconditions.checkNotNull(wsdlUrl, \"URL of the WSDL cannot be null\");\n        try {\n            return new Wsdl(new URL(wsdlUrl));\n        } catch (MalformedURLException e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public List<QName> getBindings() {\n        return soapFacade.getBindingNames();\n    }\n\n    public SoapBuilderFinder binding() {\n        return new SoapBuilderFinderImpl();\n    }\n\n    public URL saveWsdl(File rootWsdl) {\n        return soapFacade.saveWsdl(rootWsdl.getName(), rootWsdl.getParentFile());\n    }\n\n    public static URL saveWsdl(URL wsdlUrl, File rootWsdl) {\n        return SoapLegacyFacade.saveWsdl(wsdlUrl, rootWsdl.getName(), rootWsdl.getParentFile());\n    }\n\n    public void printBindings() {\n        System.out.println(wsdlUrl);\n        for (QName bindingName : soapFacade.getBindingNames()) {\n            System.out.println(\"\\t\" + bindingName.toString());\n        }\n    }\n\n    class SoapBuilderFinderImpl implements SoapBuilderFinder {\n        SoapBuilderFinderImpl() {\n        }\n\n        private String namespaceURI;\n        private String localPart;\n        private String prefix;\n\n        @Override\n        public SoapBuilderFinder name(String name) {\n            return name(QName.valueOf(name));\n        }\n\n        @Override\n        public SoapBuilderFinder name(QName name) {\n            this.namespaceURI = name.getNamespaceURI();\n            this.localPart = name.getLocalPart();\n            this.prefix = name.getPrefix();\n            return this;\n        }\n\n        @Override\n        public SoapBuilderFinder namespaceURI(String namespaceURI) {\n            this.namespaceURI = namespaceURI;\n            return this;\n        }\n\n        @Override\n        public SoapBuilderFinder localPart(String localPart) {\n            this.localPart = localPart;\n            return this;\n        }\n\n        @Override\n        public SoapBuilderFinder prefix(String prefix) {\n            this.prefix = prefix;\n            return this;\n        }\n\n        @Override\n        public SoapBuilder find() {\n            validate();\n            return getBuilder(getBindingName(), SoapContext.DEFAULT);\n        }\n\n        @Override\n        public SoapBuilder find(SoapContext context) {\n            validate();\n            return getBuilder(getBindingName(), context);\n        }\n\n        private QName getBindingName() {\n            List<QName> result = new ArrayList<QName>();\n            for (QName bindingName : soapFacade.getBindingNames()) {\n                if (bindingName.getLocalPart().equals(localPart)) {\n                    if (namespaceURI != null) {\n                        if (!bindingName.getNamespaceURI().equals(namespaceURI)) {\n                            continue;\n                        }\n                    }\n                    if (prefix != null) {\n                        if (!bindingName.getPrefix().equals(prefix)) {\n                            continue;\n                        }\n                    }\n                    result.add(bindingName);\n                }\n            }\n            if (result.isEmpty()) {\n                throw new SoapBuilderException(\"Binding not found\");\n            }\n            if (result.size() > 1) {\n                throw new SoapBuilderException(\"Found more than one binding \" + result);\n            }\n            return result.iterator().next();\n        }\n\n        private void validate() {\n            if (StringUtils.isBlank(localPart)) {\n                throw new SoapBuilderException(\"Specify at least localPart of the binding's QName\");\n            }\n        }\n    }\n\n    public SoapBuilder getBuilder(String bindingName) {\n        return getBuilder(bindingName, SoapContext.DEFAULT);\n    }\n\n    public SoapBuilder getBuilder(String bindingName, SoapContext context) {\n        Preconditions.checkNotNull(bindingName, \"BindingName cannot be null\");\n        return getBuilder(QName.valueOf(bindingName), context);\n    }\n\n    public SoapBuilder getBuilder(QName bindingName) {\n        return getBuilder(bindingName, SoapContext.DEFAULT);\n    }\n\n    public SoapBuilder getBuilder(QName bindingName, SoapContext context) {\n        Preconditions.checkNotNull(bindingName, \"BindingName cannot be null\");\n        Preconditions.checkNotNull(context, \"SoapContext cannot be null\");\n        Binding binding = soapFacade.getBindingByName(bindingName);\n        return new SoapBuilderImpl(soapFacade, binding, context);\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/XMLSchema.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- XML Schema schema for XML Schemas: Part 1: Structures -->\n<!-- Note this schema is NOT the normative structures schema. -->\n<!-- The prose copy in the structures REC is the normative -->\n<!-- version (which shouldn't differ from this one except for -->\n<!-- this comment and entity expansions, but just in case -->\n<!DOCTYPE xs:schema PUBLIC \"-//W3C//DTD XMLSCHEMA 200102//EN\"\n        \"/opt/workspaces/reficio/soap-ws/soap-builder/src/main/resources/xsds/XMLSchema.xsd\" [\n\n<!-- provide ID type information even for parsers which only read the\n     internal subset -->\n<!ATTLIST xs:schema          id  ID  #IMPLIED>\n<!ATTLIST xs:complexType     id  ID  #IMPLIED>\n<!ATTLIST xs:complexContent  id  ID  #IMPLIED>\n<!ATTLIST xs:simpleContent   id  ID  #IMPLIED>\n<!ATTLIST xs:extension       id  ID  #IMPLIED>\n<!ATTLIST xs:element         id  ID  #IMPLIED>\n<!ATTLIST xs:group           id  ID  #IMPLIED> \n<!ATTLIST xs:all             id  ID  #IMPLIED>\n<!ATTLIST xs:choice          id  ID  #IMPLIED>\n<!ATTLIST xs:sequence        id  ID  #IMPLIED>\n<!ATTLIST xs:any             id  ID  #IMPLIED>\n<!ATTLIST xs:anyAttribute    id  ID  #IMPLIED>\n<!ATTLIST xs:attribute       id  ID  #IMPLIED>\n<!ATTLIST xs:attributeGroup  id  ID  #IMPLIED>\n<!ATTLIST xs:unique          id  ID  #IMPLIED>\n<!ATTLIST xs:key             id  ID  #IMPLIED>\n<!ATTLIST xs:keyref          id  ID  #IMPLIED>\n<!ATTLIST xs:selector        id  ID  #IMPLIED>\n<!ATTLIST xs:field           id  ID  #IMPLIED>\n<!ATTLIST xs:include         id  ID  #IMPLIED>\n<!ATTLIST xs:import          id  ID  #IMPLIED>\n<!ATTLIST xs:redefine        id  ID  #IMPLIED>\n<!ATTLIST xs:notation        id  ID  #IMPLIED>\n<!--\n     keep this schema XML1.0 DTD valid\n  -->\n        <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>\n\n        <!ELEMENT hfp:hasFacet EMPTY>\n        <!ATTLIST hfp:hasFacet\n                name NMTOKEN #REQUIRED>\n\n        <!ELEMENT hfp:hasProperty EMPTY>\n        <!ATTLIST hfp:hasProperty\n                name NMTOKEN #REQUIRED\n                value CDATA #REQUIRED>\n<!--\n        Make sure that processors that do not read the external\n        subset will know about the various IDs we declare\n  -->\n        <!ATTLIST xs:simpleType id ID #IMPLIED>\n        <!ATTLIST xs:maxExclusive id ID #IMPLIED>\n        <!ATTLIST xs:minExclusive id ID #IMPLIED>\n        <!ATTLIST xs:maxInclusive id ID #IMPLIED>\n        <!ATTLIST xs:minInclusive id ID #IMPLIED>\n        <!ATTLIST xs:totalDigits id ID #IMPLIED>\n        <!ATTLIST xs:fractionDigits id ID #IMPLIED>\n        <!ATTLIST xs:length id ID #IMPLIED>\n        <!ATTLIST xs:minLength id ID #IMPLIED>\n        <!ATTLIST xs:maxLength id ID #IMPLIED>\n        <!ATTLIST xs:enumeration id ID #IMPLIED>\n        <!ATTLIST xs:pattern id ID #IMPLIED>\n        <!ATTLIST xs:appinfo id ID #IMPLIED>\n        <!ATTLIST xs:documentation id ID #IMPLIED>\n        <!ATTLIST xs:list id ID #IMPLIED>\n        <!ATTLIST xs:union id ID #IMPLIED>\n        ]>\n<xs:schema targetNamespace=\"http://www.w3.org/2001/XMLSchema\" blockDefault=\"#all\" elementFormDefault=\"qualified\" version=\"1.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xml:lang=\"EN\" xmlns:hfp=\"http://www.w3.org/2001/XMLSchema-hasFacetAndProperty\">\n <xs:annotation>\n  <xs:documentation>\n    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp \n    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp \n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html\">\n   The schema corresponding to this document is normative,\n   with respect to the syntactic constraints it expresses in the\n   XML Schema language.  The documentation (within &lt;documentation&gt; elements)\n   below, is not normative, but rather highlights important aspects of\n   the W3C Recommendation of which this is a part</xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n   <xs:documentation>\n   The simpleType element and all of its members are defined\n      towards the end of this schema document</xs:documentation>\n </xs:annotation>\n\n<!--\n <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"http://www.w3.org/2001/xml.xsd\">\n   <xs:annotation>\n     <xs:documentation>\n       Get access to the xml: attribute groups for xml:lang\n       as declared on 'schema' and 'documentation' below\n     </xs:documentation>\n   </xs:annotation>\n </xs:import>\n-->\n <xs:complexType name=\"openAttrs\">\n   <xs:annotation>\n     <xs:documentation>\n       This type is extended by almost all schema types\n       to allow attributes from other namespaces to be\n       added to user schemas.\n     </xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n     <xs:restriction base=\"xs:anyType\">\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n     </xs:restriction>\n   </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"annotated\">\n   <xs:annotation>\n     <xs:documentation>\n       This type is extended by all types which allow annotation\n       other than &lt;schema&gt; itself\n     </xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n     <xs:extension base=\"xs:openAttrs\">\n       <xs:sequence>\n         <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n       </xs:sequence>\n       <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     </xs:extension>\n   </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"schemaTop\">\n  <xs:annotation>\n   <xs:documentation>\n   This group is for the\n   elements which occur freely at the top level of schemas.\n   All of their types are based on the \"annotated\" type by extension.</xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:group ref=\"xs:redefinable\"/>\n   <xs:element ref=\"xs:element\"/>\n   <xs:element ref=\"xs:attribute\"/>\n   <xs:element ref=\"xs:notation\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:group name=\"redefinable\">\n  <xs:annotation>\n   <xs:documentation>\n   This group is for the\n   elements which can self-redefine (see &lt;redefine&gt; below).</xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:element ref=\"xs:simpleType\"/>\n   <xs:element ref=\"xs:complexType\"/>\n   <xs:element ref=\"xs:group\"/>\n   <xs:element ref=\"xs:attributeGroup\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:simpleType name=\"formChoice\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:NMTOKEN\">\n   <xs:enumeration value=\"qualified\"/>\n   <xs:enumeration value=\"unqualified\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:simpleType name=\"reducedDerivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:derivationControl\">\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:simpleType name=\"derivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {extension, restriction}</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>    \n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list itemType=\"xs:reducedDerivationControl\"/>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:simpleType name=\"typeDerivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:derivationControl\">\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n   <xs:enumeration value=\"list\"/>\n   <xs:enumeration value=\"union\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n  <xs:simpleType name=\"fullDerivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>    \n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list itemType=\"xs:typeDerivationControl\"/>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:element name=\"schema\" id=\"schema\">\n  <xs:annotation>\n    <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-schema\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:openAttrs\">\n     <xs:sequence>\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:element ref=\"xs:include\"/>\n       <xs:element ref=\"xs:import\"/>\n       <xs:element ref=\"xs:redefine\"/>\n       <xs:element ref=\"xs:annotation\"/>\n      </xs:choice>\n      <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:group ref=\"xs:schemaTop\"/>\n       <xs:element ref=\"xs:annotation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xs:sequence>\n     </xs:sequence>\n     <xs:attribute name=\"targetNamespace\" type=\"xs:anyURI\"/>\n     <xs:attribute name=\"version\" type=\"xs:token\"/>\n     <xs:attribute name=\"finalDefault\" type=\"xs:fullDerivationSet\" use=\"optional\" default=\"\"/>\n     <xs:attribute name=\"blockDefault\" type=\"xs:blockSet\" use=\"optional\" default=\"\"/>\n     <xs:attribute name=\"attributeFormDefault\" type=\"xs:formChoice\" use=\"optional\" default=\"unqualified\"/>\n     <xs:attribute name=\"elementFormDefault\" type=\"xs:formChoice\" use=\"optional\" default=\"unqualified\"/>\n     <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     <xs:attribute ref=\"xml:lang\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n\n  <xs:key name=\"element\">\n   <xs:selector xpath=\"xs:element\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"attribute\">\n   <xs:selector xpath=\"xs:attribute\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"type\">\n   <xs:selector xpath=\"xs:complexType|xs:simpleType\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"group\">\n   <xs:selector xpath=\"xs:group\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"attributeGroup\">\n   <xs:selector xpath=\"xs:attributeGroup\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"notation\">\n   <xs:selector xpath=\"xs:notation\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"identityConstraint\">\n   <xs:selector xpath=\".//xs:key|.//xs:unique|.//xs:keyref\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n </xs:element>\n\n <xs:simpleType name=\"allNNI\">\n  <xs:annotation><xs:documentation>\n   for maxOccurs</xs:documentation></xs:annotation>\n  <xs:union memberTypes=\"xs:nonNegativeInteger\">\n   <xs:simpleType>\n    <xs:restriction base=\"xs:NMTOKEN\">\n     <xs:enumeration value=\"unbounded\"/>\n    </xs:restriction>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:attributeGroup name=\"occurs\">\n  <xs:annotation><xs:documentation>\n   for all particles</xs:documentation></xs:annotation>\n  <xs:attribute name=\"minOccurs\" type=\"xs:nonNegativeInteger\" use=\"optional\" default=\"1\"/>\n  <xs:attribute name=\"maxOccurs\" type=\"xs:allNNI\" use=\"optional\" default=\"1\"/>\n </xs:attributeGroup>\n\n <xs:attributeGroup name=\"defRef\">\n  <xs:annotation><xs:documentation>\n   for element, group and attributeGroup,\n   which both define and reference</xs:documentation></xs:annotation>\n  <xs:attribute name=\"name\" type=\"xs:NCName\"/>\n  <xs:attribute name=\"ref\" type=\"xs:QName\"/>\n </xs:attributeGroup>\n\n <xs:group name=\"typeDefParticle\">\n  <xs:annotation>\n    <xs:documentation>\n   'complexType' uses this</xs:documentation></xs:annotation>\n  <xs:choice>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:all\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n  </xs:choice>\n </xs:group>\n \n \n\n <xs:group name=\"nestedParticle\">\n  <xs:choice>\n   <xs:element name=\"element\" type=\"xs:localElement\"/>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n   <xs:element ref=\"xs:any\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:group name=\"particle\">\n  <xs:choice>\n   <xs:element name=\"element\" type=\"xs:localElement\"/>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:all\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n   <xs:element ref=\"xs:any\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:complexType name=\"attribute\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:element name=\"simpleType\" minOccurs=\"0\" type=\"xs:localSimpleType\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attribute name=\"type\" type=\"xs:QName\"/>\n    <xs:attribute name=\"use\" use=\"optional\" default=\"optional\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:NMTOKEN\">\n       <xs:enumeration value=\"prohibited\"/>\n       <xs:enumeration value=\"optional\"/>\n       <xs:enumeration value=\"required\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:attribute name=\"default\" type=\"xs:string\"/>\n    <xs:attribute name=\"fixed\" type=\"xs:string\"/>\n    <xs:attribute name=\"form\" type=\"xs:formChoice\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelAttribute\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attribute\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:element name=\"simpleType\" minOccurs=\"0\" type=\"xs:localSimpleType\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"form\" use=\"prohibited\"/>\n    <xs:attribute name=\"use\" use=\"prohibited\"/>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"attrDecls\">\n  <xs:sequence>\n   <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n    <xs:element name=\"attribute\" type=\"xs:attribute\"/>\n    <xs:element name=\"attributeGroup\" type=\"xs:attributeGroupRef\"/>\n   </xs:choice>\n   <xs:element ref=\"xs:anyAttribute\" minOccurs=\"0\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:element name=\"anyAttribute\" type=\"xs:wildcard\" id=\"anyAttribute\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-anyAttribute\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:group name=\"complexTypeModel\">\n  <xs:choice>\n      <xs:element ref=\"xs:simpleContent\"/>\n      <xs:element ref=\"xs:complexContent\"/>\n      <xs:sequence>\n       <xs:annotation>\n        <xs:documentation>\n   This branch is short for\n   &lt;complexContent&gt;\n   &lt;restriction base=\"xs:anyType\"&gt;\n   ...\n   &lt;/restriction&gt;\n   &lt;/complexContent&gt;</xs:documentation>\n       </xs:annotation>\n       <xs:group ref=\"xs:typeDefParticle\" minOccurs=\"0\"/>\n       <xs:group ref=\"xs:attrDecls\"/>\n      </xs:sequence>\n  </xs:choice>\n </xs:group>\n\n <xs:complexType name=\"complexType\" abstract=\"true\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:complexTypeModel\"/>\n    <xs:attribute name=\"name\" type=\"xs:NCName\">\n     <xs:annotation>\n      <xs:documentation>\n      Will be restricted to required or forbidden</xs:documentation>\n     </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"mixed\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n     <xs:annotation>\n      <xs:documentation>\n      Not allowed if simpleContent child is chosen.\n      May be overriden by setting on complexContent child.</xs:documentation>\n    </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"abstract\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"final\" type=\"xs:derivationSet\"/>\n    <xs:attribute name=\"block\" type=\"xs:derivationSet\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelComplexType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:complexType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:complexTypeModel\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"localComplexType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:complexType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:complexTypeModel\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:attribute name=\"abstract\" use=\"prohibited\"/>\n    <xs:attribute name=\"final\" use=\"prohibited\"/>\n    <xs:attribute name=\"block\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"restrictionType\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:choice minOccurs=\"0\">\n      <xs:group ref=\"xs:typeDefParticle\"/>\n      <xs:group ref=\"xs:simpleRestrictionModel\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"base\" type=\"xs:QName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:complexType name=\"complexRestrictionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:restrictionType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:annotation>\n       <xs:documentation>This choice is added simply to\n                   make this a valid restriction per the REC</xs:documentation>\n      </xs:annotation>\n      <xs:group ref=\"xs:typeDefParticle\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:complexType name=\"extensionType\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:group ref=\"xs:typeDefParticle\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"base\" type=\"xs:QName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:element name=\"complexContent\" id=\"complexContent\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-complexContent\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:choice>\n      <xs:element name=\"restriction\" type=\"xs:complexRestrictionType\"/>\n      <xs:element name=\"extension\" type=\"xs:extensionType\"/>\n     </xs:choice>     \n     <xs:attribute name=\"mixed\" type=\"xs:boolean\">\n      <xs:annotation>\n       <xs:documentation>\n       Overrides any setting on complexType parent.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:complexType name=\"simpleRestrictionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:restrictionType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:annotation>\n       <xs:documentation>This choice is added simply to\n                   make this a valid restriction per the REC</xs:documentation>\n      </xs:annotation>\n      <xs:group ref=\"xs:simpleRestrictionModel\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"simpleExtensionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:extensionType\">\n    <xs:sequence>\n     <xs:annotation>\n      <xs:documentation>\n      No typeDefParticle group reference</xs:documentation>\n     </xs:annotation>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"simpleContent\" id=\"simpleContent\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-simpleContent\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:choice>\n      <xs:element name=\"restriction\" type=\"xs:simpleRestrictionType\"/>\n      <xs:element name=\"extension\" type=\"xs:simpleExtensionType\"/>\n     </xs:choice>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n \n <xs:element name=\"complexType\" type=\"xs:topLevelComplexType\" id=\"complexType\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-complexType\"/>\n  </xs:annotation>\n </xs:element>\n\n\n  <xs:simpleType name=\"blockSet\">\n   <xs:annotation>\n    <xs:documentation>\n    A utility type, not for public use</xs:documentation>\n    <xs:documentation>\n    #all or (possibly empty) subset of {substitution, extension,\n    restriction}</xs:documentation>\n   </xs:annotation>\n   <xs:union>\n    <xs:simpleType>    \n     <xs:restriction base=\"xs:token\">\n      <xs:enumeration value=\"#all\"/>\n     </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType>\n     <xs:list>\n      <xs:simpleType>\n       <xs:restriction base=\"xs:derivationControl\">\n        <xs:enumeration value=\"extension\"/>\n        <xs:enumeration value=\"restriction\"/>\n        <xs:enumeration value=\"substitution\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:list>\n    </xs:simpleType>\n   </xs:union>  \n  </xs:simpleType>\n\n <xs:complexType name=\"element\" abstract=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   The element element can be used either\n   at the top level to define an element-type binding globally,\n   or within a content model to either reference a globally-defined\n   element or type or declare an element-type binding locally.\n   The ref form is not allowed at the top level.</xs:documentation>\n  </xs:annotation>\n\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attribute name=\"type\" type=\"xs:QName\"/>\n    <xs:attribute name=\"substitutionGroup\" type=\"xs:QName\"/>\n    <xs:attributeGroup ref=\"xs:occurs\"/>\n    <xs:attribute name=\"default\" type=\"xs:string\"/>\n    <xs:attribute name=\"fixed\" type=\"xs:string\"/>\n    <xs:attribute name=\"nillable\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"abstract\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"final\" type=\"xs:derivationSet\"/>\n    <xs:attribute name=\"block\" type=\"xs:blockSet\"/>\n    <xs:attribute name=\"form\" type=\"xs:formChoice\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelElement\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:element\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"form\" use=\"prohibited\"/>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"localElement\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:element\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"substitutionGroup\" use=\"prohibited\"/>\n    <xs:attribute name=\"final\" use=\"prohibited\"/>\n    <xs:attribute name=\"abstract\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"element\" type=\"xs:topLevelElement\" id=\"element\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-element\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"group\" abstract=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   group type for explicit groups, named top-level groups and\n   group references</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:particle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attributeGroup ref=\"xs:occurs\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"realGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:group\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\" maxOccurs=\"1\">\n      <xs:element ref=\"xs:all\"/>\n      <xs:element ref=\"xs:choice\"/>\n      <xs:element ref=\"xs:sequence\"/>\n     </xs:choice>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"namedGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:realGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"1\" maxOccurs=\"1\">\n      <xs:element name=\"all\">\n       <xs:complexType>\n        <xs:complexContent>\n         <xs:restriction base=\"xs:all\">\n          <xs:group ref=\"xs:allModel\"/>\n          <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n          <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n          <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n         </xs:restriction>\n        </xs:complexContent>\n       </xs:complexType>\n      </xs:element>\n      <xs:element name=\"choice\" type=\"xs:simpleExplicitGroup\"/>\n      <xs:element name=\"sequence\" type=\"xs:simpleExplicitGroup\"/>\n     </xs:choice>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"groupRef\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:realGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"required\" type=\"xs:QName\"/>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"explicitGroup\">\n  <xs:annotation>\n   <xs:documentation>\n   group type for the three kinds of group</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:restriction base=\"xs:group\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:nestedParticle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"prohibited\"/>\n    <xs:attribute name=\"ref\" type=\"xs:QName\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"simpleExplicitGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:explicitGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:nestedParticle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:group name=\"allModel\">\n  <xs:sequence>\n      <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:annotation>\n        <xs:documentation>This choice with min/max is here to\n                          avoid a pblm with the Elt:All/Choice/Seq\n                          Particle derivation constraint</xs:documentation>\n       </xs:annotation>\n       <xs:element name=\"element\" type=\"xs:narrowMaxMin\"/>\n      </xs:choice>\n     </xs:sequence>\n </xs:group>\n \n \n <xs:complexType name=\"narrowMaxMin\">\n  <xs:annotation>\n   <xs:documentation>restricted max/min</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:restriction base=\"xs:localElement\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"minOccurs\" use=\"optional\" default=\"1\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:nonNegativeInteger\">\n       <xs:enumeration value=\"0\"/>\n       <xs:enumeration value=\"1\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:attribute name=\"maxOccurs\" use=\"optional\" default=\"1\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:allNNI\">\n       <xs:enumeration value=\"0\"/>\n       <xs:enumeration value=\"1\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n  <xs:complexType name=\"all\">\n   <xs:annotation>\n    <xs:documentation>\n   Only elements allowed inside</xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n    <xs:restriction base=\"xs:explicitGroup\">\n     <xs:group ref=\"xs:allModel\"/>\n     <xs:attribute name=\"minOccurs\" use=\"optional\" default=\"1\">\n      <xs:simpleType>\n       <xs:restriction base=\"xs:nonNegativeInteger\">\n        <xs:enumeration value=\"0\"/>\n        <xs:enumeration value=\"1\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n     <xs:attribute name=\"maxOccurs\" use=\"optional\" default=\"1\">\n      <xs:simpleType>\n       <xs:restriction base=\"xs:allNNI\">\n        <xs:enumeration value=\"1\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n     <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n    </xs:restriction>\n   </xs:complexContent>\n  </xs:complexType>\n\n <xs:element name=\"all\" id=\"all\" type=\"xs:all\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-all\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"choice\" type=\"xs:explicitGroup\" id=\"choice\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-choice\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"sequence\" type=\"xs:explicitGroup\" id=\"sequence\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-sequence\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"group\" type=\"xs:namedGroup\" id=\"group\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-group\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"wildcard\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:attribute name=\"namespace\" type=\"xs:namespaceList\" use=\"optional\" default=\"##any\"/>\n    <xs:attribute name=\"processContents\" use=\"optional\" default=\"strict\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:NMTOKEN\">\n       <xs:enumeration value=\"skip\"/>\n       <xs:enumeration value=\"lax\"/>\n       <xs:enumeration value=\"strict\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"any\" id=\"any\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-any\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:wildcard\">\n     <xs:attributeGroup ref=\"xs:occurs\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n  <xs:annotation>\n   <xs:documentation>\n   simple type for the value of the 'namespace' attr of\n   'any' and 'anyAttribute'</xs:documentation>\n  </xs:annotation>\n  <xs:annotation>\n   <xs:documentation>\n   Value is\n              ##any      - - any non-conflicting WFXML/attribute at all\n\n              ##other    - - any non-conflicting WFXML/attribute from\n                              namespace other than targetNS\n\n              ##local    - - any unqualified non-conflicting WFXML/attribute \n\n              one or     - - any non-conflicting WFXML/attribute from\n              more URI        the listed namespaces\n              references\n              (space separated)\n\n    ##targetNamespace or ##local may appear in the above list, to\n        refer to the targetNamespace of the enclosing\n        schema or an absent targetNamespace respectively</xs:documentation>\n  </xs:annotation>\n\n <xs:simpleType name=\"namespaceList\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>\n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"##any\"/>\n     <xs:enumeration value=\"##other\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list>\n     <xs:simpleType>\n      <xs:union memberTypes=\"xs:anyURI\">\n       <xs:simpleType>\n        <xs:restriction base=\"xs:token\">\n         <xs:enumeration value=\"##targetNamespace\"/>\n         <xs:enumeration value=\"##local\"/>\n        </xs:restriction>\n       </xs:simpleType>\n      </xs:union>\n     </xs:simpleType>\n    </xs:list>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:element name=\"attribute\" type=\"xs:topLevelAttribute\" id=\"attribute\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-attribute\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"attributeGroup\" abstract=\"true\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:attrDecls\"/>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"namedAttributeGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attributeGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"attributeGroupRef\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attributeGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"required\" type=\"xs:QName\"/>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"attributeGroup\" type=\"xs:namedAttributeGroup\" id=\"attributeGroup\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-attributeGroup\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"include\" id=\"include\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-include\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\" use=\"required\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"redefine\" id=\"redefine\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-redefine\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:openAttrs\">\n     <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element ref=\"xs:annotation\"/>\n      <xs:group ref=\"xs:redefinable\"/>\n     </xs:choice>\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\" use=\"required\"/>\n     <xs:attribute name=\"id\" type=\"xs:ID\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"import\" id=\"import\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-import\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"namespace\" type=\"xs:anyURI\"/>\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"selector\" id=\"selector\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-selector\"/>\n  </xs:annotation>\n  <xs:complexType>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"xpath\" use=\"required\">\n      <xs:simpleType>\n       <xs:annotation>\n        <xs:documentation>A subset of XPath expressions for use\nin selectors</xs:documentation>\n        <xs:documentation>A utility type, not for public\nuse</xs:documentation>\n       </xs:annotation>\n       <xs:restriction base=\"xs:token\">\n        <xs:annotation>\n         <xs:documentation>The following pattern is intended to allow XPath\n                           expressions per the following EBNF:\n          Selector    ::=    Path ( '|' Path )*  \n          Path    ::=    ('.//')? Step ( '/' Step )*  \n          Step    ::=    '.' | NameTest  \n          NameTest    ::=    QName | '*' | NCName ':' '*'  \n                           child:: is also allowed\n         </xs:documentation>\n        </xs:annotation>\n        <xs:pattern value=\"(\\.//)?(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)(/(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.))*(\\|(\\.//)?(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)(/(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.))*)*\">\n        </xs:pattern>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n </xs:element>\n\n <xs:element name=\"field\" id=\"field\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-field\"/>\n  </xs:annotation>\n  <xs:complexType>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"xpath\" use=\"required\">\n      <xs:simpleType>\n       <xs:annotation>\n        <xs:documentation>A subset of XPath expressions for use\nin fields</xs:documentation>\n        <xs:documentation>A utility type, not for public\nuse</xs:documentation>\n       </xs:annotation>\n       <xs:restriction base=\"xs:token\">\n        <xs:annotation>\n         <xs:documentation>The following pattern is intended to allow XPath\n                           expressions per the same EBNF as for selector,\n                           with the following change:\n          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) \n         </xs:documentation>\n        </xs:annotation>\n        <xs:pattern value=\"(\\.//)?((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)/)*((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)|((attribute::|@)((\\i\\c*:)?(\\i\\c*|\\*))))(\\|(\\.//)?((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)/)*((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)|((attribute::|@)((\\i\\c*:)?(\\i\\c*|\\*)))))*\">\n        </xs:pattern>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n </xs:element>\n\n <xs:complexType name=\"keybase\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:element ref=\"xs:selector\"/>\n     <xs:element ref=\"xs:field\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"identityConstraint\">\n  <xs:annotation>\n   <xs:documentation>The three kinds of identity constraints, all with\n                     type of or derived from 'keybase'.\n   </xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:element ref=\"xs:unique\"/>\n   <xs:element ref=\"xs:key\"/>\n   <xs:element ref=\"xs:keyref\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:element name=\"unique\" type=\"xs:keybase\" id=\"unique\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-unique\"/>\n  </xs:annotation>\n </xs:element>\n <xs:element name=\"key\" type=\"xs:keybase\" id=\"key\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-key\"/>\n  </xs:annotation>\n </xs:element>\n <xs:element name=\"keyref\" id=\"keyref\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-keyref\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:keybase\">\n     <xs:attribute name=\"refer\" type=\"xs:QName\" use=\"required\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"notation\" id=\"notation\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-notation\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n     <xs:attribute name=\"public\" type=\"xs:public\"/>\n     <xs:attribute name=\"system\" type=\"xs:anyURI\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:simpleType name=\"public\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   A public identifier, per ISO 8879</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:token\"/>\n </xs:simpleType>\n\n <xs:element name=\"appinfo\" id=\"appinfo\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-appinfo\"/>\n   </xs:annotation>\n   <xs:complexType mixed=\"true\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n     <xs:any processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:attribute name=\"source\" type=\"xs:anyURI\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:complexType>\n </xs:element>\n\n <xs:element name=\"documentation\" id=\"documentation\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-documentation\"/>\n   </xs:annotation>\n   <xs:complexType mixed=\"true\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n     <xs:any processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:attribute name=\"source\" type=\"xs:anyURI\"/>\n    <xs:attribute ref=\"xml:lang\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:complexType>\n </xs:element>\n\n <xs:element name=\"annotation\" id=\"annotation\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-annotation\"/>\n   </xs:annotation>\n   <xs:complexType>\n    <xs:complexContent>\n     <xs:extension base=\"xs:openAttrs\">\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:element ref=\"xs:appinfo\"/>\n       <xs:element ref=\"xs:documentation\"/>\n      </xs:choice>\n      <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     </xs:extension>\n    </xs:complexContent>\n   </xs:complexType>\n </xs:element>\n\n <xs:annotation>\n  <xs:documentation>\n   notations for use within XML Schema schemas</xs:documentation>\n </xs:annotation>\n\n<!--\n <xs:notation name=\"XMLSchemaStructures\" public=\"structures\" system=\"http://www.w3.org/2000/08/XMLSchema.xsd\"/>\n <xs:notation name=\"XML\" public=\"REC-xml-19980210\" system=\"http://www.w3.org/TR/1998/REC-xml-19980210\"/>\n-->\n  \n <xs:complexType name=\"anyType\" mixed=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   Not the real urType, but as close an approximation as we can\n   get in the XML representation</xs:documentation>\n  </xs:annotation>\n  <xs:sequence>\n   <xs:any minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n  </xs:sequence>\n  <xs:anyAttribute processContents=\"lax\"/>\n </xs:complexType>\n\n  <xs:annotation>\n    <xs:documentation>\n      First the built-in primitive datatypes.  These definitions are for\n      information only, the real built-in definitions are magic.\n    </xs:documentation>\n\n    <xs:documentation>\n      For each built-in datatype in this schema (both primitive and\n      derived) can be uniquely addressed via a URI constructed\n      as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the datatype\n\n      For example, to address the int datatype, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#int\n\n      Additionally, each facet definition element can be uniquely\n      addressed via a URI constructed as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the facet\n\n      For example, to address the maxInclusive facet, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#maxInclusive\n\n      Additionally, each facet usage in a built-in datatype definition\n      can be uniquely addressed via a URI constructed as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the datatype, followed\n           by a period (\".\") followed by the name of the facet\n\n      For example, to address the usage of the maxInclusive facet in\n      the definition of int, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#int.maxInclusive\n\n    </xs:documentation>\n  </xs:annotation>\n\n  <xs:simpleType name=\"string\" id=\"string\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#string\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"preserve\" id=\"string.preserve\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"boolean\" id=\"boolean\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#boolean\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"boolean.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"float\" id=\"float\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#float\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"float.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"double\" id=\"double\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#double\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"double.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"decimal\" id=\"decimal\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"totalDigits\"/>\n        <hfp:hasFacet name=\"fractionDigits\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#decimal\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"decimal.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"duration\" id=\"duration\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#duration\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"duration.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n <xs:simpleType name=\"dateTime\" id=\"dateTime\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#dateTime\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"dateTime.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"time\" id=\"time\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#time\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"time.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"date\" id=\"date\">\n   <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#date\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"date.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gYearMonth\" id=\"gYearMonth\">\n   <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gYearMonth\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gYearMonth.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gYear\" id=\"gYear\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gYear\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gYear.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"gMonthDay\" id=\"gMonthDay\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n       <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gMonthDay\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gMonthDay.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gDay\" id=\"gDay\">\n    <xs:annotation>\n  <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gDay\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gDay.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"gMonth\" id=\"gMonth\">\n    <xs:annotation>\n  <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gMonth\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gMonth.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"hexBinary\" id=\"hexBinary\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#binary\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"hexBinary.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n <xs:simpleType name=\"base64Binary\" id=\"base64Binary\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#base64Binary\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"base64Binary.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"anyURI\" id=\"anyURI\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#anyURI\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"anyURI.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n  <xs:simpleType name=\"QName\" id=\"QName\">\n    <xs:annotation>\n        <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#QName\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"QName.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"NOTATION\" id=\"NOTATION\">\n    <xs:annotation>\n        <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NOTATION\"/>\n      <xs:documentation>\n        NOTATION cannot be used directly in a schema; rather a type\n        must be derived from it by specifying at least one enumeration\n        facet whose value is the name of a NOTATION declared in the\n        schema.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"NOTATION.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:annotation>\n    <xs:documentation>\n      Now the derived primitive types\n    </xs:documentation>\n  </xs:annotation>\n\n  <xs:simpleType name=\"normalizedString\" id=\"normalizedString\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#normalizedString\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:whiteSpace value=\"replace\" id=\"normalizedString.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"token\" id=\"token\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#token\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:normalizedString\">\n      <xs:whiteSpace value=\"collapse\" id=\"token.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"language\" id=\"language\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#language\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*\" id=\"language.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.ietf.org/rfc/rfc3066.txt\">\n            pattern specifies the content of section 2.12 of XML 1.0e2\n            and RFC 3066 (Revised version of RFC 1766).\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"IDREFS\" id=\"IDREFS\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#IDREFS\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:IDREF\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"IDREFS.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"ENTITIES\" id=\"ENTITIES\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ENTITIES\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:ENTITY\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"ENTITIES.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NMTOKEN\" id=\"NMTOKEN\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NMTOKEN\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"\\c+\" id=\"NMTOKEN.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml#NT-Nmtoken\">\n            pattern matches production 7 from the XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NMTOKENS\" id=\"NMTOKENS\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NMTOKENS\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:NMTOKEN\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"NMTOKENS.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"Name\" id=\"Name\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#Name\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"\\i\\c*\" id=\"Name.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml#NT-Name\">\n            pattern matches production 5 from the XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NCName\" id=\"NCName\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NCName\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:Name\">\n      <xs:pattern value=\"[\\i-[:]][\\c-[:]]*\" id=\"NCName.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml-names/#NT-NCName\">\n            pattern matches production 4 from the Namespaces in XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"ID\" id=\"ID\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ID\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"IDREF\" id=\"IDREF\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#IDREF\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"ENTITY\" id=\"ENTITY\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ENTITY\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n  <xs:simpleType name=\"integer\" id=\"integer\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#integer\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:decimal\">\n      <xs:fractionDigits value=\"0\" fixed=\"true\" id=\"integer.fractionDigits\"/>\n      <xs:pattern value=\"[\\-+]?[0-9]+\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"nonPositiveInteger\" id=\"nonPositiveInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:maxInclusive value=\"0\" id=\"nonPositiveInteger.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"negativeInteger\" id=\"negativeInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#negativeInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonPositiveInteger\">\n      <xs:maxInclusive value=\"-1\" id=\"negativeInteger.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"long\" id=\"long\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#long\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:minInclusive value=\"-9223372036854775808\" id=\"long.minInclusive\"/>\n      <xs:maxInclusive value=\"9223372036854775807\" id=\"long.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"int\" id=\"int\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#int\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:long\">\n      <xs:minInclusive value=\"-2147483648\" id=\"int.minInclusive\"/>\n      <xs:maxInclusive value=\"2147483647\" id=\"int.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"short\" id=\"short\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#short\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:int\">\n      <xs:minInclusive value=\"-32768\" id=\"short.minInclusive\"/>\n      <xs:maxInclusive value=\"32767\" id=\"short.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"byte\" id=\"byte\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#byte\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:short\">\n      <xs:minInclusive value=\"-128\" id=\"byte.minInclusive\"/>\n      <xs:maxInclusive value=\"127\" id=\"byte.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"nonNegativeInteger\" id=\"nonNegativeInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:minInclusive value=\"0\" id=\"nonNegativeInteger.minInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedLong\" id=\"unsignedLong\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedLong\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonNegativeInteger\">\n      <xs:maxInclusive value=\"18446744073709551615\" id=\"unsignedLong.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedInt\" id=\"unsignedInt\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedInt\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedLong\">\n      <xs:maxInclusive value=\"4294967295\" id=\"unsignedInt.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedShort\" id=\"unsignedShort\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedShort\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedInt\">\n      <xs:maxInclusive value=\"65535\" id=\"unsignedShort.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedByte\" id=\"unsignedByte\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedByte\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedShort\">\n      <xs:maxInclusive value=\"255\" id=\"unsignedByte.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"positiveInteger\" id=\"positiveInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#positiveInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonNegativeInteger\">\n      <xs:minInclusive value=\"1\" id=\"positiveInteger.minInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"derivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:NMTOKEN\">\n   <xs:enumeration value=\"substitution\"/>\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n   <xs:enumeration value=\"list\"/>\n   <xs:enumeration value=\"union\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:group name=\"simpleDerivation\">\n  <xs:choice>\n    <xs:element ref=\"xs:restriction\"/>\n    <xs:element ref=\"xs:list\"/>\n    <xs:element ref=\"xs:union\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:simpleType name=\"simpleDerivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {restriction, union, list}\n   </xs:documentation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>\n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list>\n     <xs:simpleType>\n      <xs:restriction base=\"xs:derivationControl\">\n       <xs:enumeration value=\"list\"/>\n       <xs:enumeration value=\"union\"/>\n       <xs:enumeration value=\"restriction\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:list>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n  <xs:complexType name=\"simpleType\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"xs:annotated\">\n        <xs:group ref=\"xs:simpleDerivation\"/>\n        <xs:attribute name=\"final\" type=\"xs:simpleDerivationSet\"/>\n        <xs:attribute name=\"name\" type=\"xs:NCName\">\n          <xs:annotation>\n            <xs:documentation>\n              Can be restricted to required or forbidden\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"topLevelSimpleType\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:simpleType\">\n        <xs:sequence>\n          <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          <xs:group ref=\"xs:simpleDerivation\"/>\n        </xs:sequence>\n        <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\">\n          <xs:annotation>\n            <xs:documentation>\n              Required at the top level\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"localSimpleType\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:simpleType\">\n        <xs:sequence>\n          <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          <xs:group ref=\"xs:simpleDerivation\"/>\n        </xs:sequence>\n        <xs:attribute name=\"name\" use=\"prohibited\">\n          <xs:annotation>\n            <xs:documentation>\n              Forbidden when nested\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"final\" use=\"prohibited\"/>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:element name=\"simpleType\" type=\"xs:topLevelSimpleType\" id=\"simpleType\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-simpleType\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:group name=\"facets\">\n   <xs:annotation>\n    <xs:documentation>\n       We should use a substitution group for facets, but\n       that's ruled out because it would allow users to\n       add their own, which we're not ready for yet.\n    </xs:documentation>\n   </xs:annotation>\n   <xs:choice>\n    <xs:element ref=\"xs:minExclusive\"/>\n    <xs:element ref=\"xs:minInclusive\"/>\n    <xs:element ref=\"xs:maxExclusive\"/>\n    <xs:element ref=\"xs:maxInclusive\"/>\n    <xs:element ref=\"xs:totalDigits\"/>\n    <xs:element ref=\"xs:fractionDigits\"/>\n    <xs:element ref=\"xs:length\"/>\n    <xs:element ref=\"xs:minLength\"/>\n    <xs:element ref=\"xs:maxLength\"/>\n    <xs:element ref=\"xs:enumeration\"/>\n    <xs:element ref=\"xs:whiteSpace\"/>\n    <xs:element ref=\"xs:pattern\"/>\n   </xs:choice>\n  </xs:group>\n\n  <xs:group name=\"simpleRestrictionModel\">\n   <xs:sequence>\n    <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\"/>\n    <xs:group ref=\"xs:facets\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n   </xs:sequence>\n  </xs:group>\n\n  <xs:element name=\"restriction\" id=\"restriction\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-restriction\">\n          base attribute and simpleType child are mutually\n          exclusive, but one or other is required\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n         <xs:group ref=\"xs:simpleRestrictionModel\"/>\n         <xs:attribute name=\"base\" type=\"xs:QName\" use=\"optional\"/>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"list\" id=\"list\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-list\">\n          itemType attribute and simpleType child are mutually\n          exclusive, but one or other is required\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n          <xs:sequence>\n            <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"itemType\" type=\"xs:QName\" use=\"optional\"/>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"union\" id=\"union\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-union\">\n          memberTypes attribute must be non-empty or there must be\n          at least one simpleType child\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n          <xs:sequence>\n            <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          </xs:sequence>\n          <xs:attribute name=\"memberTypes\" use=\"optional\">\n            <xs:simpleType>\n              <xs:list itemType=\"xs:QName\"/>\n            </xs:simpleType>\n          </xs:attribute>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:complexType name=\"facet\">\n    <xs:complexContent>\n      <xs:extension base=\"xs:annotated\">\n        <xs:attribute name=\"value\" use=\"required\"/>\n        <xs:attribute name=\"fixed\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n\n <xs:complexType name=\"noFixedFacet\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:facet\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"fixed\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n  <xs:element name=\"minExclusive\" id=\"minExclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minExclusive\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"minInclusive\" id=\"minInclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minInclusive\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"maxExclusive\" id=\"maxExclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxExclusive\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"maxInclusive\" id=\"maxInclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxInclusive\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:complexType name=\"numFacet\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:facet\">\n       <xs:sequence>\n         <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n       </xs:sequence>\n       <xs:attribute name=\"value\" type=\"xs:nonNegativeInteger\" use=\"required\"/>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:element name=\"totalDigits\" id=\"totalDigits\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-totalDigits\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:numFacet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" type=\"xs:positiveInteger\" use=\"required\"/>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"fractionDigits\" id=\"fractionDigits\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-fractionDigits\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"length\" id=\"length\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-length\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"minLength\" id=\"minLength\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minLength\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"maxLength\" id=\"maxLength\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxLength\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"enumeration\" id=\"enumeration\" type=\"xs:noFixedFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-enumeration\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"whiteSpace\" id=\"whiteSpace\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-whiteSpace\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:facet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" use=\"required\">\n            <xs:simpleType>\n              <xs:restriction base=\"xs:NMTOKEN\">\n                <xs:enumeration value=\"preserve\"/>\n                <xs:enumeration value=\"replace\"/>\n                <xs:enumeration value=\"collapse\"/>\n              </xs:restriction>\n            </xs:simpleType>\n          </xs:attribute>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"pattern\" id=\"pattern\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-pattern\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:noFixedFacet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/soapEncoding.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8' ?>\n\n<!-- Schema for the SOAP/1.1 encoding\n\n     This schema has been produced using W3C's SOAP Version 1.2 schema\n     found at:\n\n     http://www.w3.org/2001/06/soap-encoding\n\n     Copyright 2001 Martin Gudgin, Developmentor.\n\t http://www.develop.co.uk\n\n     Changes made are the following:\n     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/\n     - reverted root to only allow 0 and 1 as lexical values\n\n\t Further changes:\n\n\t - removed default value from root attribute declaration - 20030314\n\n     Original copyright:\n     \n     Copyright 2001 W3C (Massachusetts Institute of Technology,\n     Institut National de Recherche en Informatique et en Automatique,\n     Keio University). All Rights Reserved.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:tns=\"http://schemas.xmlsoap.org/soap/encoding/\"\n           targetNamespace=\"http://schemas.xmlsoap.org/soap/encoding/\" >\n        \n <xs:attribute name=\"root\" >\n   <xs:annotation>\n     <xs:documentation>\n\t   'root' can be used to distinguish serialization roots from other\n       elements that are present in a serialization but are not roots of\n       a serialized value graph \n\t </xs:documentation>\n   </xs:annotation>\n   <xs:simpleType>\n\n     <xs:restriction base='xs:boolean'>\n\t   <xs:pattern value='0|1' />\n\t </xs:restriction>\n   </xs:simpleType>\n </xs:attribute>\n\n  <xs:attributeGroup name=\"commonAttributes\" >\n    <xs:annotation>\n\t  <xs:documentation>\n\n\t    Attributes common to all elements that function as accessors or \n        represent independent (multi-ref) values.  The href attribute is\n        intended to be used in a manner like CONREF.  That is, the element\n        content should be empty iff the href attribute appears\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:attribute name=\"id\" type=\"xs:ID\" />\n    <xs:attribute name=\"href\" type=\"xs:anyURI\" />\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:attributeGroup>\n\n  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->\n       \n  <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->\n\n   \n  <xs:simpleType name=\"arrayCoordinate\" >\n    <xs:restriction base=\"xs:string\" />\n  </xs:simpleType>\n          \n  <xs:attribute name=\"arrayType\" type=\"xs:string\" />\n  <xs:attribute name=\"offset\" type=\"tns:arrayCoordinate\" />\n  \n  <xs:attributeGroup name=\"arrayAttributes\" >\n    <xs:attribute ref=\"tns:arrayType\" />\n    <xs:attribute ref=\"tns:offset\" />\n  </xs:attributeGroup>    \n  \n  <xs:attribute name=\"position\" type=\"tns:arrayCoordinate\" /> \n  \n  <xs:attributeGroup name=\"arrayMemberAttributes\" >\n\n    <xs:attribute ref=\"tns:position\" />\n  </xs:attributeGroup>    \n\n  <xs:group name=\"Array\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\" />\n\t</xs:sequence>\n  </xs:group>\n\n  <xs:element name=\"Array\" type=\"tns:Array\" />\n  <xs:complexType name=\"Array\" >\n\n    <xs:annotation>\n\t  <xs:documentation>\n\t   'Array' is a complex type for accessors identified by position \n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:group ref=\"tns:Array\" minOccurs=\"0\" />\n    <xs:attributeGroup ref=\"tns:arrayAttributes\" />\n    <xs:attributeGroup ref=\"tns:commonAttributes\" />\n  </xs:complexType> \n\n  <!-- 'Struct' is a complex type for accessors identified by name. \n       Constraint: No element may be have the same name as any other,\n       nor may any element have a maxOccurs > 1. -->\n\n   \n  <xs:element name=\"Struct\" type=\"tns:Struct\" />\n\n  <xs:group name=\"Struct\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\" />\n\t</xs:sequence>\n  </xs:group>\n\n  <xs:complexType name=\"Struct\" >\n    <xs:group ref=\"tns:Struct\" minOccurs=\"0\" />\n\n    <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n  </xs:complexType> \n\n  <!-- 'Base64' can be used to serialize binary data using base64 encoding\n       as defined in RFC2045 but without the MIME line length limitation. -->\n\n  <xs:simpleType name=\"base64\" >\n    <xs:restriction base=\"xs:base64Binary\" />\n  </xs:simpleType>\n\n <!-- Element declarations corresponding to each of the simple types in the \n      XML Schemas Specification. -->\n\n  <xs:element name=\"duration\" type=\"tns:duration\" />\n\n  <xs:complexType name=\"duration\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:duration\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"dateTime\" type=\"tns:dateTime\" />\n\n  <xs:complexType name=\"dateTime\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:dateTime\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n\n\n  <xs:element name=\"NOTATION\" type=\"tns:NOTATION\" />\n  <xs:complexType name=\"NOTATION\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n\n  <xs:element name=\"time\" type=\"tns:time\" />\n\n  <xs:complexType name=\"time\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:time\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"date\" type=\"tns:date\" />\n\n  <xs:complexType name=\"date\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:date\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYearMonth\" type=\"tns:gYearMonth\" />\n\n  <xs:complexType name=\"gYearMonth\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYearMonth\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYear\" type=\"tns:gYear\" />\n\n  <xs:complexType name=\"gYear\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYear\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonthDay\" type=\"tns:gMonthDay\" />\n\n  <xs:complexType name=\"gMonthDay\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonthDay\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gDay\" type=\"tns:gDay\" />\n\n  <xs:complexType name=\"gDay\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gDay\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonth\" type=\"tns:gMonth\" />\n\n  <xs:complexType name=\"gMonth\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonth\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:element name=\"boolean\" type=\"tns:boolean\" />\n  <xs:complexType name=\"boolean\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:boolean\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"base64Binary\" type=\"tns:base64Binary\" />\n  <xs:complexType name=\"base64Binary\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:base64Binary\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"hexBinary\" type=\"tns:hexBinary\" />\n  <xs:complexType name=\"hexBinary\" >\n\n    <xs:simpleContent>\n     <xs:extension base=\"xs:hexBinary\" >\n       <xs:attributeGroup ref=\"tns:commonAttributes\" />\n     </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"float\" type=\"tns:float\" />\n  <xs:complexType name=\"float\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:float\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"double\" type=\"tns:double\" />\n  <xs:complexType name=\"double\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:double\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyURI\" type=\"tns:anyURI\" />\n  <xs:complexType name=\"anyURI\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:anyURI\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"QName\" type=\"tns:QName\" />\n  <xs:complexType name=\"QName\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  \n  <xs:element name=\"string\" type=\"tns:string\" />\n  <xs:complexType name=\"string\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:string\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"normalizedString\" type=\"tns:normalizedString\" />\n  <xs:complexType name=\"normalizedString\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:normalizedString\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"token\" type=\"tns:token\" />\n  <xs:complexType name=\"token\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:token\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"language\" type=\"tns:language\" />\n  <xs:complexType name=\"language\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:language\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"Name\" type=\"tns:Name\" />\n  <xs:complexType name=\"Name\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:Name\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKEN\" type=\"tns:NMTOKEN\" />\n  <xs:complexType name=\"NMTOKEN\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKEN\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NCName\" type=\"tns:NCName\" />\n  <xs:complexType name=\"NCName\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NCName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKENS\" type=\"tns:NMTOKENS\" />\n  <xs:complexType name=\"NMTOKENS\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKENS\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ID\" type=\"tns:ID\" />\n  <xs:complexType name=\"ID\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ID\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"IDREF\" type=\"tns:IDREF\" />\n  <xs:complexType name=\"IDREF\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREF\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ENTITY\" type=\"tns:ENTITY\" />\n  <xs:complexType name=\"ENTITY\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITY\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"IDREFS\" type=\"tns:IDREFS\" />\n  <xs:complexType name=\"IDREFS\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREFS\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ENTITIES\" type=\"tns:ENTITIES\" />\n  <xs:complexType name=\"ENTITIES\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITIES\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"decimal\" type=\"tns:decimal\" />\n  <xs:complexType name=\"decimal\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:decimal\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"integer\" type=\"tns:integer\" />\n  <xs:complexType name=\"integer\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:integer\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonPositiveInteger\" type=\"tns:nonPositiveInteger\" />\n  <xs:complexType name=\"nonPositiveInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonPositiveInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"negativeInteger\" type=\"tns:negativeInteger\" />\n  <xs:complexType name=\"negativeInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:negativeInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"long\" type=\"tns:long\" />\n  <xs:complexType name=\"long\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:long\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"int\" type=\"tns:int\" />\n  <xs:complexType name=\"int\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:int\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"short\" type=\"tns:short\" />\n  <xs:complexType name=\"short\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:short\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"byte\" type=\"tns:byte\" />\n  <xs:complexType name=\"byte\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:byte\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonNegativeInteger\" type=\"tns:nonNegativeInteger\" />\n  <xs:complexType name=\"nonNegativeInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonNegativeInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedLong\" type=\"tns:unsignedLong\" />\n  <xs:complexType name=\"unsignedLong\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedLong\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedInt\" type=\"tns:unsignedInt\" />\n  <xs:complexType name=\"unsignedInt\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedInt\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedShort\" type=\"tns:unsignedShort\" />\n  <xs:complexType name=\"unsignedShort\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedShort\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedByte\" type=\"tns:unsignedByte\" />\n  <xs:complexType name=\"unsignedByte\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedByte\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"positiveInteger\" type=\"tns:positiveInteger\" />\n  <xs:complexType name=\"positiveInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:positiveInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyType\" />\n</xs:schema>\n\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/soapEncoding12.xsd",
    "content": "<!-- Schema defined in the SOAP Version 1.2 Part 2 specification\n     Proposed Recommendation:\n     http://www.w3.org/TR/2003/PR-soap12-part2-20030507/\n     $Id$\n\n     Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved.\n     W3C viability, trademark, document use and software licensing rules\n     apply.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://www.w3.org/2003/05/soap-encoding\" targetNamespace=\"http://www.w3.org/2003/05/soap-encoding\">\n        \n  <xs:attributeGroup name=\"commonAttributes\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t    Attributes common to all elements that function as accessors or \n        represent independent (multi-ref) values.  The ref attribute is\n        intended to be used in a manner like CONREF.  That is, the element\n        content should be empty iff the ref attribute appears\n\t  </xs:documentation>\n\t</xs:annotation>\n\t<xs:attribute ref=\"tns:id\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:attributeGroup>\n\n  <!-- Global Attributes.  The following attributes are intended to be  usable via qualified attribute names on any complex type referencing  them. -->\n  <xs:attribute name=\"id\" type=\"xs:ID\"/>\n  <xs:attribute name=\"ref\" type=\"xs:IDREF\"/>\n\n  <xs:complexType name=\"Ref\">\n    <xs:attribute ref=\"tns:ref\" use=\"required\"/>\n  </xs:complexType>\n\n  <xs:simpleType name=\"nodeType\">\n    <xs:restriction base=\"xs:token\">\n\t  <xs:enumeration value=\"simple\"/>\n\t  <xs:enumeration value=\"struct\"/>\n\t  <xs:enumeration value=\"array\"/>\n\t</xs:restriction>\n  </xs:simpleType>\n  <xs:attribute name=\"nodeType\" type=\"tns:nodeType\"/>\n\n  <!-- Array attributes. Needed to give the type and dimensions of an array\"s contents, and the offset for partially-transmitted arrays. -->\n\n  <xs:simpleType name=\"arraySizeBase\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t  A list type that allows * and non negative integers. Used as the\n    base type for arraySize below.\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:list>\n\t  <xs:simpleType>\n\t    <xs:union memberTypes=\"xs:nonNegativeInteger\">\n\t\t  <xs:simpleType>\n\t\t    <xs:restriction base=\"xs:token\">\n\t\t\t  <xs:enumeration value=\"*\"/>\n\t\t\t</xs:restriction>\n\t\t  </xs:simpleType>\n\t\t</xs:union>\n\t  </xs:simpleType>\n\t</xs:list>\n  </xs:simpleType>\n\n\n  <xs:simpleType name=\"arraySize\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t  Pattern based restriction of the arraySizeBase list type. Used\n    as the type of the arraySize attribute. Restricts asterisk ( * )\n    to first list item only. Instances must contain at least an\n    asterisk ( * ) or a nonNegativeInteger. May contain other \n    nonNegativeIntegers as subsequent list items.\n\tValid instances include;\n\t\n\t  *\n\t  1\n\t  * 2\n\t  2 2\n\t  * 2 0\n\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:restriction base=\"tns:arraySizeBase\">\n\t  <xs:pattern value=\"(\\*|(\\d+))(\\s+\\d+)*\"/>\n\t</xs:restriction>\n  </xs:simpleType>\n   \n  <xs:attribute name=\"arraySize\" type=\"tns:arraySize\"/>\n  <xs:attribute name=\"itemType\" type=\"xs:QName\"/>\n\n  <xs:attributeGroup name=\"arrayAttributes\">\n    <xs:attribute ref=\"tns:arraySize\"/>\n\t<xs:attribute ref=\"tns:itemType\"/>\n  </xs:attributeGroup>    \n  \n  <!-- 'Base64' can be used to serialize binary data using base64 encoding\n       as defined in RFC2045 but without the MIME line length limitation. -->\n\n  <xs:simpleType name=\"base64\">\n    <xs:restriction base=\"xs:base64Binary\"/>\n  </xs:simpleType>\n\n <!-- Element declarations corresponding to each of the simple types in the \n      XML Schemas Specification. -->\n\n  <xs:element name=\"duration\" type=\"tns:duration\"/>\n  <xs:complexType name=\"duration\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:duration\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"dateTime\" type=\"tns:dateTime\"/>\n  <xs:complexType name=\"dateTime\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:dateTime\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"time\" type=\"tns:time\"/>\n  <xs:complexType name=\"time\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:time\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"date\" type=\"tns:date\"/>\n  <xs:complexType name=\"date\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:date\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYearMonth\" type=\"tns:gYearMonth\"/>\n  <xs:complexType name=\"gYearMonth\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYearMonth\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYear\" type=\"tns:gYear\"/>\n  <xs:complexType name=\"gYear\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYear\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonthDay\" type=\"tns:gMonthDay\"/>\n  <xs:complexType name=\"gMonthDay\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonthDay\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gDay\" type=\"tns:gDay\"/>\n  <xs:complexType name=\"gDay\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gDay\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonth\" type=\"tns:gMonth\"/>\n  <xs:complexType name=\"gMonth\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonth\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:element name=\"boolean\" type=\"tns:boolean\"/>\n  <xs:complexType name=\"boolean\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:boolean\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"base64Binary\" type=\"tns:base64Binary\"/>\n  <xs:complexType name=\"base64Binary\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:base64Binary\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"hexBinary\" type=\"tns:hexBinary\"/>\n  <xs:complexType name=\"hexBinary\">\n    <xs:simpleContent>\n     <xs:extension base=\"xs:hexBinary\">\n       <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n     </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"float\" type=\"tns:float\"/>\n  <xs:complexType name=\"float\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:float\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"double\" type=\"tns:double\"/>\n  <xs:complexType name=\"double\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:double\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyURI\" type=\"tns:anyURI\"/>\n  <xs:complexType name=\"anyURI\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:anyURI\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"QName\" type=\"tns:QName\"/>\n  <xs:complexType name=\"QName\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"string\" type=\"tns:string\"/>\n  <xs:complexType name=\"string\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:string\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"normalizedString\" type=\"tns:normalizedString\"/>\n  <xs:complexType name=\"normalizedString\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:normalizedString\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"token\" type=\"tns:token\"/>\n  <xs:complexType name=\"token\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:token\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"language\" type=\"tns:language\"/>\n  <xs:complexType name=\"language\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:language\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"Name\" type=\"tns:Name\"/>\n  <xs:complexType name=\"Name\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:Name\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKEN\" type=\"tns:NMTOKEN\"/>\n  <xs:complexType name=\"NMTOKEN\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKEN\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NCName\" type=\"tns:NCName\"/>\n  <xs:complexType name=\"NCName\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NCName\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"decimal\" type=\"tns:decimal\"/>\n  <xs:complexType name=\"decimal\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:decimal\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"integer\" type=\"tns:integer\"/>\n  <xs:complexType name=\"integer\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:integer\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonPositiveInteger\" type=\"tns:nonPositiveInteger\"/>\n  <xs:complexType name=\"nonPositiveInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonPositiveInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"negativeInteger\" type=\"tns:negativeInteger\"/>\n  <xs:complexType name=\"negativeInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:negativeInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"long\" type=\"tns:long\"/>\n  <xs:complexType name=\"long\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:long\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"int\" type=\"tns:int\"/>\n  <xs:complexType name=\"int\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:int\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"short\" type=\"tns:short\"/>\n  <xs:complexType name=\"short\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:short\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"byte\" type=\"tns:byte\"/>\n  <xs:complexType name=\"byte\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:byte\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonNegativeInteger\" type=\"tns:nonNegativeInteger\"/>\n  <xs:complexType name=\"nonNegativeInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonNegativeInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedLong\" type=\"tns:unsignedLong\"/>\n  <xs:complexType name=\"unsignedLong\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedLong\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedInt\" type=\"tns:unsignedInt\"/>\n  <xs:complexType name=\"unsignedInt\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedInt\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedShort\" type=\"tns:unsignedShort\"/>\n  <xs:complexType name=\"unsignedShort\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedShort\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedByte\" type=\"tns:unsignedByte\"/>\n  <xs:complexType name=\"unsignedByte\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedByte\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"positiveInteger\" type=\"tns:positiveInteger\"/>\n  <xs:complexType name=\"positiveInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:positiveInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyType\"/>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"NMTOKENS\" type=\"tns:NMTOKENS\"/>\n  <xs:complexType name=\"NMTOKENS\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKENS\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ID\" type=\"tns:ID\"/>\n  <xs:complexType name=\"ID\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ID\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"IDREF\" type=\"tns:IDREF\"/>\n  <xs:complexType name=\"IDREF\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREF\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ENTITY\" type=\"tns:ENTITY\"/>\n  <xs:complexType name=\"ENTITY\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITY\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"IDREFS\" type=\"tns:IDREFS\"/>\n  <xs:complexType name=\"IDREFS\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREFS\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ENTITIES\" type=\"tns:ENTITIES\"/>\n  <xs:complexType name=\"ENTITIES\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITIES\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/soapEnvelope.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Schema for the SOAP/1.1 envelope\n\nPortions © 2001 DevelopMentor. \n© 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.  \n \nThis document is governed by the W3C Software License [1] as described in the FAQ [2].\n[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD \nBy obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:\n\nPermission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:\n\n1.  The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. \n\n2.  Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: \"Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/\" \n\n3.  Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)   \n\nOriginal W3C files; http://www.w3.org/2001/06/soap-envelope\nChanges made: \n     - reverted namespace to http://schemas.xmlsoap.org/soap/envelope/\n     - reverted mustUnderstand to only allow 0 and 1 as lexical values\n\t - made encodingStyle a global attribute 20020825\n\t - removed default value from mustUnderstand attribute declaration\n\t - added xml:lang to faultstring per WS-I BP\n\t - removed 'trailer' wildcard from Envelope per WS-I BP\n\nTHIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\n\nCOPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\n\nThe name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.\n\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://schemas.xmlsoap.org/soap/envelope/\" targetNamespace=\"http://schemas.xmlsoap.org/soap/envelope/\">\n\n  <!-- <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>  -->\n     \n  <!-- Envelope, header and body -->\n  <xs:element name=\"Envelope\" type=\"tns:Envelope\"/>\n  <xs:complexType name=\"Envelope\">\n    <xs:sequence>\n      <xs:element ref=\"tns:Header\" minOccurs=\"0\"/>\n      <xs:element ref=\"tns:Body\" minOccurs=\"1\"/>\n\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:complexType>\n\n  <xs:element name=\"Header\" type=\"tns:Header\"/>\n  <xs:complexType name=\"Header\">\n    <xs:sequence>\n      <xs:any namespace=\"##other\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:complexType>\n  \n  <xs:element name=\"Body\" type=\"tns:Body\"/>\n  <xs:complexType name=\"Body\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n\t  <xs:annotation>\n\n\t    <xs:documentation>\n\t\t  Prose in the spec does not specify that attributes are allowed on the Body element\n\t\t</xs:documentation>\n\t  </xs:annotation>\n\t</xs:anyAttribute>\n  </xs:complexType>\n\n       \n  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them.  -->\n  <xs:attribute name=\"mustUnderstand\">\t\n     <xs:simpleType>\n\n     <xs:restriction base=\"xs:boolean\">\n\t   <xs:pattern value=\"0|1\"/>\n\t </xs:restriction>\n   </xs:simpleType>\n  </xs:attribute>\n  <xs:attribute name=\"actor\" type=\"xs:anyURI\"/>\n\n  <xs:simpleType name=\"encodingStyle\">\n    <xs:annotation>\n\n\t  <xs:documentation>\n\t    'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element.  For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:list itemType=\"xs:anyURI\"/>\n  </xs:simpleType>\n\n  <xs:attribute name=\"encodingStyle\" type=\"tns:encodingStyle\"/>\n  <xs:attributeGroup name=\"encodingStyle\">\n    <xs:attribute ref=\"tns:encodingStyle\"/>\n\n  </xs:attributeGroup>\n\n  <xs:element name=\"Fault\" type=\"tns:Fault\"/>\n  <xs:complexType name=\"Fault\" final=\"extension\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t    Fault reporting structure\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n\n      <xs:element name=\"faultcode\" type=\"xs:QName\"/>\n      <xs:element name=\"faultstring\" type=\"tns:FaultString\"/>\n      <xs:element name=\"faultactor\" type=\"xs:anyURI\" minOccurs=\"0\"/>\n      <xs:element name=\"detail\" type=\"tns:detail\" minOccurs=\"0\"/>      \n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"FaultString\">\n\t<xs:simpleContent>\n\t  <xs:extension base=\"xs:string\">\n\n\t\t<xs:attribute ref=\"xml:lang\" use=\"optional\"/>\n\t  </xs:extension>\n\t</xs:simpleContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"detail\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##any\" processContents=\"lax\"/> \n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/soapEnvelope12.xsd",
    "content": "<!-- Schema defined in the SOAP Version 1.2 Part 1 specification\n     Proposed Recommendation:\n     http://www.w3.org/TR/2003/PR-soap12-part1-20030507/\n     $Id$\n\n     Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved.\n     W3C viability, trademark, document use and software licensing rules\n     apply.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:tns=\"http://www.w3.org/2003/05/soap-envelope\"\n           targetNamespace=\"http://www.w3.org/2003/05/soap-envelope\" \n\t\t   elementFormDefault=\"qualified\" >\n\n  <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n\n  <!-- Envelope, header and body -->\n  <xs:element name=\"Envelope\" type=\"tns:Envelope\" />\n  <xs:complexType name=\"Envelope\" >\n    <xs:sequence>\n      <xs:element ref=\"tns:Header\" minOccurs=\"0\" />\n\n      <xs:element ref=\"tns:Body\" minOccurs=\"1\" />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n\n  <xs:element name=\"Header\" type=\"tns:Header\" />\n  <xs:complexType name=\"Header\" >\n    <xs:annotation>\n\t  <xs:documentation>\n\n\t  Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"  />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n  \n  <xs:element name=\"Body\" type=\"tns:Body\" />\n\n  <xs:complexType name=\"Body\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n\n  <!-- Global Attributes.  The following attributes are intended to be\n  usable via qualified attribute names on any complex type referencing\n  them.  -->\n  <xs:attribute name=\"mustUnderstand\" type=\"xs:boolean\" default=\"0\" />\n\n  <xs:attribute name=\"relay\" type=\"xs:boolean\" default=\"0\" />\n  <xs:attribute name=\"role\" type=\"xs:anyURI\" />\n\n  <!-- 'encodingStyle' indicates any canonicalization conventions\n  followed in the contents of the containing element.  For example, the\n  value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern\n  described in the last call working draft of SOAP Version 1.2 Part 2:\n  Adjuncts -->\n\n  <xs:attribute name=\"encodingStyle\" type=\"xs:anyURI\" />\n\n  <xs:element name=\"Fault\" type=\"tns:Fault\" />\n  <xs:complexType name=\"Fault\" final=\"extension\" >\n    <xs:annotation>\n\n\t  <xs:documentation>\n\t    Fault reporting structure\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"Code\" type=\"tns:faultcode\" />\n      <xs:element name=\"Reason\" type=\"tns:faultreason\" />\n      <xs:element name=\"Node\" type=\"xs:anyURI\" minOccurs=\"0\" />\n\t  <xs:element name=\"Role\" type=\"xs:anyURI\" minOccurs=\"0\" />\n\n      <xs:element name=\"Detail\" type=\"tns:detail\" minOccurs=\"0\" />\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"faultreason\" >\n    <xs:sequence>\n\t  <xs:element name=\"Text\" type=\"tns:reasontext\" \n                  minOccurs=\"1\"  maxOccurs=\"unbounded\" />\n\t</xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"reasontext\" >\n    <xs:simpleContent>\n\t  <xs:extension base=\"xs:string\" >\n\t    <xs:attribute ref=\"xml:lang\" use=\"required\" />\n\t  </xs:extension>\n\t</xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:complexType name=\"faultcode\">\n\n    <xs:sequence>\n      <xs:element name=\"Value\"\n                  type=\"tns:faultcodeEnum\"/>\n      <xs:element name=\"Subcode\"\n                  type=\"tns:subcode\"\n                  minOccurs=\"0\"/>\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:simpleType name=\"faultcodeEnum\">\n    <xs:restriction base=\"xs:QName\">\n      <xs:enumeration value=\"tns:DataEncodingUnknown\"/>\n\n      <xs:enumeration value=\"tns:MustUnderstand\"/>\n      <xs:enumeration value=\"tns:Receiver\"/>\n      <xs:enumeration value=\"tns:Sender\"/>\n      <xs:enumeration value=\"tns:VersionMismatch\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:complexType name=\"subcode\">\n    <xs:sequence>\n\n      <xs:element name=\"Value\"\n                  type=\"xs:QName\"/>\n      <xs:element name=\"Subcode\"\n                  type=\"tns:subcode\"\n                  minOccurs=\"0\"/>\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"detail\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"  />\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" /> \n  </xs:complexType>\n\n  <!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault -->\n  <xs:element name=\"NotUnderstood\" type=\"tns:NotUnderstoodType\" />\n  <xs:complexType name=\"NotUnderstoodType\" >\n    <xs:attribute name=\"qname\" type=\"xs:QName\" use=\"required\" />\n  </xs:complexType>\n\n\n  <!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Last Call Working Draft -->  <xs:complexType name=\"SupportedEnvType\" >\n\n    <xs:attribute name=\"qname\" type=\"xs:QName\" use=\"required\" />\n  </xs:complexType>\n\n  <xs:element name=\"Upgrade\" type=\"tns:UpgradeType\" />\n  <xs:complexType name=\"UpgradeType\" >\n    <xs:sequence>\n\t  <xs:element name=\"SupportedEnvelope\" type=\"tns:SupportedEnvType\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n\t</xs:sequence>\n  </xs:complexType>\n\n\n</xs:schema>\n\n\n\n\n\n\n\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/swaref.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Copyright (c) 2002-2004 by The Web Services-Interoperability Organization (WS-I) and \n  Certain of its Members. All Rights Reserved.\n\t\n  Notice\n  The material contained herein is not a license, either expressly or impliedly, to any \n  intellectual property owned or controlled by any of the authors or developers of this \n  material or WS-I. The material contained herein is provided on an \"AS IS\" basis and to \n  the maximum extent permitted by applicable law, this material is provided AS IS AND WITH \n  ALL FAULTS, and the authors and developers of this material and WS-I hereby disclaim all \n  other warranties and conditions, either express, implied or statutory, including, but not \n  limited to, any (if any) implied warranties, duties or conditions of  merchantability, \n  of fitness for a particular purpose, of accuracy or completeness of responses, of results, \n  of workmanlike effort, of lack of viruses, and of lack of negligence. ALSO, THERE IS NO \n  WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO \n  DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THIS MATERIAL.\n\t\n  IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THIS MATERIAL OR WS-I BE LIABLE TO ANY OTHER \n  PARTY FOR THE COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, \n  LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES \n  WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR \n  ANY OTHER AGREEMENT RELATING TO THIS MATERIAL, WHETHER OR NOT SUCH PARTY HAD ADVANCE \n  NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.\n\t\n  WS-I License Information\n  Use of this WS-I Material is governed by the WS-I Test License and other licenses.  Information on these \n  licenses are contained in the README.txt and ReleaseNotes.txt files.  By downloading this file, you agree \n  to the terms of these licenses.\n\t\n  How To Provide Feedback\n  The Web Services-Interoperability Organization (WS-I) would like to receive input, \n  suggestions and other feedback (\"Feedback\") on this work from a wide variety of \n  industry participants to improve its quality over time. \n\t\n  By sending email, or otherwise communicating with WS-I, you (on behalf of yourself if \n  you are an individual, and your company if you are providing Feedback on behalf of the \n  company) will be deemed to have granted to WS-I, the members of WS-I, and other parties \n  that have access to your Feedback, a non-exclusive, non-transferable, worldwide, perpetual, \n  irrevocable, royalty-free license to use, disclose, copy, license, modify, sublicense or \n  otherwise distribute and exploit in any manner whatsoever the Feedback you provide regarding \n  the work. You acknowledge that you have no expectation of confidentiality with respect to \n  any Feedback you provide. You represent and warrant that you have rights to provide this \n  Feedback, and if you are providing Feedback on behalf of a company, you represent and warrant \n  that you have the rights to provide Feedback on behalf of your company. You also acknowledge \n  that WS-I is not required to review, discuss, use, consider or in any way incorporate your \n  Feedback into future versions of its work. If WS-I does incorporate some or all of your \n  Feedback in a future version of the work, it may, but is not obligated to include your name \n  (or, if you are identified as acting on behalf of your company, the name of your company) on \n  a list of contributors to the work. If the foregoing is not acceptable to you and any company \n  on whose behalf you are acting, please do not provide any Feedback.\n\t\n  Feedback on this document should be directed to wsi-test-comments@ws-i.org. \n-->\n<xsd:schema targetNamespace=\"http://ws-i.org/profiles/basic/1.1/xsd\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> \n  <xsd:simpleType name=\"swaRef\"> \n    <xsd:restriction base=\"xsd:anyURI\"/> \n  </xsd:simpleType> \n</xsd:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/xmime200411.xsd",
    "content": "<?xml version=\"1.0\" ?>\n<!-- \n   W3C XML Schema defined in the Assigning Media Types to Binary Data in XML\n   specification\n     http://www.w3.org/TR/xml-media-types\n\n   Copyright (c) 2004 World Wide Web Consortium,\n  \n   (Massachusetts Institute of Technology, European Research Consortium for\n   Informatics and Mathematics, Keio University). All Rights Reserved. This\n   work is distributed under the W3C(r) Software License [1] in the hope that\n   it will be useful, but WITHOUT ANY WARRANTY; without even the implied\n   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  \n   [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:xmime=\"http://www.w3.org/2004/11/xmlmime\"\n           targetNamespace=\"http://www.w3.org/2004/11/xmlmime\" >\n\n<xs:attribute name=\"contentType\" type=\"xs:string\" />\n\n<xs:attribute name=\"expectedMediaType\" type=\"xs:string\" />\n\n<xs:complexType name=\"base64Binary\" >\n    <xs:simpleContent>\n        <xs:extension base=\"xs:base64Binary\" >\n            <xs:attribute ref=\"xmime:contentType\" />\n        </xs:extension>\n    </xs:simpleContent>\n</xs:complexType>\n\n<xs:complexType name=\"hexBinary\" >\n    <xs:simpleContent>\n        <xs:extension base=\"xs:hexBinary\" >\n            <xs:attribute ref=\"xmime:contentType\" />\n        </xs:extension>\n    </xs:simpleContent>\n</xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/xmime200505.xsd",
    "content": "<?xml version=\"1.0\"?>\n<!-- \n   W3C XML Schema defined in the Describing Media Content of Binary Data in XML\n   specification\n     http://www.w3.org/TR/xml-media-types\n\n   Copyright © 2005 World Wide Web Consortium,\n  \n   (Massachusetts Institute of Technology, European Research Consortium for\n   Informatics and Mathematics, Keio University). All Rights Reserved. This\n   work is distributed under the W3C® Software License [1] in the hope that\n   it will be useful, but WITHOUT ANY WARRANTY; without even the implied\n   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  \n   [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\n\n   $Id: xmlmime.xsd,v 1.1 2005/04/25 17:08:35 hugo Exp $\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xmime=\"http://www.w3.org/2005/05/xmlmime\" targetNamespace=\"http://www.w3.org/2005/05/xmlmime\">\n\n  <xs:attribute name=\"contentType\">\n    <xs:simpleType>\n      <xs:restriction base=\"xs:string\">\n      <xs:minLength value=\"3\"/>\n      </xs:restriction>\n    </xs:simpleType>\n  </xs:attribute>\n\n  <xs:attribute name=\"expectedContentTypes\" type=\"xs:string\"/>\n\n  <xs:complexType name=\"base64Binary\">\n    <xs:simpleContent>\n        <xs:extension base=\"xs:base64Binary\">\n            <xs:attribute ref=\"xmime:contentType\"/>\n        </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"hexBinary\">\n    <xs:simpleContent>\n        <xs:extension base=\"xs:hexBinary\">\n            <xs:attribute ref=\"xmime:contentType\"/>\n        </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/xml.xsd",
    "content": "<?xml version='1.0'?>\n<xs:schema targetNamespace=\"http://www.w3.org/XML/1998/namespace\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xml:lang=\"en\">\n\n <xs:annotation>\n  <xs:documentation>\n   See http://www.w3.org/XML/1998/namespace.html and\n   http://www.w3.org/TR/REC-xml for information about this namespace.\n\n    This schema document describes the XML namespace, in a form\n    suitable for import by other schema documents.  \n\n    Note that local names in this namespace are intended to be defined\n    only by the World Wide Web Consortium or its subgroups.  The\n    following names are currently defined in this namespace and should\n    not be used with conflicting semantics by any Working Group,\n    specification, or document instance:\n\n    base (as an attribute name): denotes an attribute whose value\n         provides a URI to be used as the base for interpreting any\n         relative URIs in the scope of the element on which it\n         appears; its value is inherited.  This name is reserved\n         by virtue of its definition in the XML Base specification.\n\n    id   (as an attribute name): denotes an attribute whose value\n         should be interpreted as if declared to be of type ID.\n         The xml:id specification is not yet a W3C Recommendation,\n         but this attribute is included here to facilitate experimentation\n         with the mechanisms it proposes.  Note that it is _not_ included\n         in the specialAttrs attribute group.\n\n    lang (as an attribute name): denotes an attribute whose value\n         is a language code for the natural language of the content of\n         any element; its value is inherited.  This name is reserved\n         by virtue of its definition in the XML specification.\n  \n    space (as an attribute name): denotes an attribute whose\n         value is a keyword indicating what whitespace processing\n         discipline is intended for the content of the element; its\n         value is inherited.  This name is reserved by virtue of its\n         definition in the XML specification.\n\n    Father (in any context at all): denotes Jon Bosak, the chair of \n         the original XML Working Group.  This name is reserved by \n         the following decision of the W3C XML Plenary and \n         XML Coordination groups:\n\n             In appreciation for his vision, leadership and dedication\n             the W3C XML Plenary on this 10th day of February, 2000\n             reserves for Jon Bosak in perpetuity the XML name\n             xml:Father\n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>This schema defines attributes and an attribute group\n        suitable for use by\n        schemas wishing to allow xml:base, xml:lang, xml:space or xml:id\n        attributes on elements they define.\n\n        To enable this, such a schema must import this schema\n        for the XML namespace, e.g. as follows:\n        &lt;schema . . .>\n         . . .\n         &lt;import namespace=\"http://www.w3.org/XML/1998/namespace\"\n                    schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>\n\n        Subsequently, qualified reference to any of the attributes\n        or the group defined below will have the desired effect, e.g.\n\n        &lt;type . . .>\n         . . .\n         &lt;attributeGroup ref=\"xml:specialAttrs\"/>\n \n         will define a type which will schema-validate an instance\n         element with any of those attributes</xs:documentation>\n\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>In keeping with the XML Schema WG's standard versioning\n   policy, this schema document will persist at\n   http://www.w3.org/2005/08/xml.xsd.\n   At the date of issue it can also be found at\n   http://www.w3.org/2001/xml.xsd.\n   The schema document at that URI may however change in the future,\n   in order to remain compatible with the latest version of XML Schema\n   itself, or with the XML namespace itself.  In other words, if the XML\n   Schema or XML namespaces change, the version of this document at\n   http://www.w3.org/2001/xml.xsd will change\n   accordingly; the version at\n   http://www.w3.org/2005/08/xml.xsd will not change.\n  </xs:documentation>\n </xs:annotation>\n\n <xs:attribute name=\"lang\">\n  <xs:annotation>\n   <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter\n         codes as the enumerated possible values is probably never\n         going to be a realistic possibility.  See\n         RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry\n         at http://www.iana.org/assignments/lang-tag-apps.htm for\n         further information.\n\n         The union allows for the 'un-declaration' of xml:lang with\n         the empty string.</xs:documentation>\n\n  </xs:annotation>\n  <xs:simpleType>\n   <xs:union memberTypes=\"xs:language\">\n    <xs:simpleType>    \n     <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"\"/>\n     </xs:restriction>\n    </xs:simpleType>\n   </xs:union>\n\n  </xs:simpleType>\n </xs:attribute>\n\n <xs:attribute name=\"space\">\n  <xs:simpleType>\n   <xs:restriction base=\"xs:NCName\">\n    <xs:enumeration value=\"default\"/>\n    <xs:enumeration value=\"preserve\"/>\n   </xs:restriction>\n\n  </xs:simpleType>\n </xs:attribute>\n\n <xs:attribute name=\"base\" type=\"xs:anyURI\">\n  <xs:annotation>\n   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for\n                     information about this attribute.</xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n \n <xs:attribute name=\"id\" type=\"xs:ID\">\n\n  <xs:annotation>\n   <xs:documentation>See http://www.w3.org/TR/xml-id/ for\n                     information about this attribute.</xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n\n <xs:attributeGroup name=\"specialAttrs\">\n  <xs:attribute ref=\"xml:base\"/>\n  <xs:attribute ref=\"xml:lang\"/>\n  <xs:attribute ref=\"xml:space\"/>\n\n </xs:attributeGroup>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/main/resources/xsds/xop.xsd",
    "content": "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://www.w3.org/2004/08/xop/include\" targetNamespace=\"http://www.w3.org/2004/08/xop/include\">\n\n  <xs:element name=\"Include\" type=\"tns:Include\"/>\n  <xs:complexType name=\"Include\">\n\t<xs:sequence>\n\t  <xs:any namespace=\"##other\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t</xs:sequence>\n\t<xs:attribute name=\"href\" type=\"xs:anyURI\" use=\"required\"/>\n\t<xs:anyAttribute namespace=\"##other\"/>\n  </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/DefinitionSaveTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.apache.commons.io.FileUtils;\nimport org.apache.commons.io.FilenameUtils;\nimport org.junit.Test;\nimport org.reficio.ws.builder.core.Wsdl;\n\nimport javax.wsdl.WSDLException;\nimport java.io.File;\nimport java.io.IOException;\nimport java.net.URL;\nimport java.util.ArrayList;\nimport java.util.Collection;\nimport java.util.Collections;\nimport java.util.List;\n\nimport static junit.framework.Assert.assertEquals;\nimport static junit.framework.Assert.assertNotNull;\n\n/**\n * User: Tom Bujok (tom.bujok@gmail.com)\n * Date: 23/05/12\n * Time: 11:06 AM\n */\npublic class DefinitionSaveTest {\n\n    public static File getServiceFolder(int serviceId) {\n        URL definitionUrl = ServiceComplianceTest.getDefinitionUrl(serviceId);\n        File definitionFile = new File(definitionUrl.getFile());\n        File serviceFolder = new File(definitionUrl.getFile()).getParentFile();\n        if (serviceFolder.exists() == false) {\n            throw new RuntimeException(\"Cannot get service folder for service \" + serviceId);\n        }\n        return serviceFolder;\n    }\n\n    public static File createTempFolder(String name) throws IOException {\n        File tempFolder = File.createTempFile(name, Long.toString(System.nanoTime()));\n        if (!tempFolder.delete()) {\n            throw new RuntimeException(\"cannot delete tmp file\");\n        }\n        if (!tempFolder.mkdir()) {\n            throw new RuntimeException(\"cannot create tmp folder\");\n        }\n        return tempFolder;\n    }\n\n    public static File getGeneratedFolder(int serviceId) throws WSDLException, IOException {\n        URL wsdlUrl = ServiceComplianceTest.getDefinitionUrl(serviceId);\n        File tempFolder = File.createTempFile(\"maven-temp\", Long.toString(System.nanoTime()));\n        if (!tempFolder.delete()) {\n            throw new RuntimeException(\"cannot delete tmp file\");\n        }\n        if (!tempFolder.mkdir()) {\n            throw new RuntimeException(\"cannot create tmp folder\");\n        }\n        String fileName = FilenameUtils.getBaseName(wsdlUrl.toString());\n        File rootWsdl = new File(tempFolder, fileName);\n        Wsdl.saveWsdl(wsdlUrl, rootWsdl);\n        // builder.saveWsdl(fileName, tempFolder);\n        tempFolder.deleteOnExit();\n        return tempFolder;\n    }\n\n    public static List<String> getFileNames(File folder) {\n        final boolean RECURSIVE = true;\n        String[] extensions = new String[]{\"wsdl\", \"xsd\"};\n        Collection<File> files = FileUtils.listFiles(folder, extensions, RECURSIVE);\n        List<String> fileNames = new ArrayList<String>();\n        for (File file : files) {\n            fileNames.add(file.getName());\n        }\n        return fileNames;\n    }\n\n    public static File findFile(File folder, String name) {\n        final boolean RECURSIVE = true;\n        String[] extensions = new String[]{FilenameUtils.getExtension(name)};\n        Collection<File> files = FileUtils.listFiles(folder, extensions, RECURSIVE);\n        if (files.isEmpty() == false) {\n            return files.iterator().next();\n        }\n        throw new RuntimeException(\"File not found \" + name);\n    }\n\n    public static void testDefinitionSave(int serviceId) {\n        try {\n            File serviceFolder = getServiceFolder(serviceId);\n            File generatedFolder = getGeneratedFolder(serviceId);\n            List<String> serviceFileNames = getFileNames(serviceFolder);\n            List<String> generatedFileNames = getFileNames(generatedFolder);\n            Collections.sort(serviceFileNames);\n            Collections.sort(generatedFileNames);\n            assertEquals(\"serviceId \" + serviceId, serviceFileNames.size(), generatedFileNames.size());\n            for (int i = 0; i < serviceFileNames.size(); i++) {\n                String srvFileName = serviceFileNames.get(i);\n                String genFileName = null;\n                for (int j = 0; j < generatedFileNames.size(); j++) {\n                    String tmp = generatedFileNames.get(j);\n                    if (tmp.endsWith(srvFileName) || tmp.equals(srvFileName)) {\n                        genFileName = generatedFileNames.get(j);\n                        break;\n                    }\n                }\n                assertNotNull(\"serviceId \" + serviceId + \" \" + srvFileName + \" vs. \" + genFileName, genFileName);\n                // TODO - XMLs are not identical due to different import/includes paths\n                // String srvContent = FileUtils.readFileToString(findFile(serviceFolder, srvFileName));\n                // String genContent = FileUtils.readFileToString(findFile(generatedFolder, genFileName));\n                // assertTrue(\"serviceId \" + serviceId + \" \" + srvFileName + \" vs. \" + genFileName,\n                //         XMLUnit.compareXML(srvContent, genContent).identical());\n            }\n        } catch (Exception e) {\n            throw new RuntimeException(\"serviceId \" + serviceId, e);\n        }\n    }\n\n    @Test\n    public void testDefinitionSaveService() {\n        for (int serviceId = 1; serviceId <= 18; serviceId++) {\n            testDefinitionSave(serviceId);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/MessageComplianceTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.apache.commons.io.FileUtils;\nimport org.apache.log4j.Logger;\nimport org.junit.Test;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.legacy.SoapLegacyFacade;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.net.URISyntaxException;\nimport java.net.URL;\n\nimport static org.junit.Assert.assertEquals;\n\n/**\n * User: Tom Bujok (tom.bujok@gmail.com)\n * Date: 17/10/11\n * Time: Soap11:06 AM\n */\npublic class MessageComplianceTest {\n\n    private final static Logger log = Logger.getLogger(MessageComplianceTest.class);\n\n    public static String getContent(String folderPath, String fileName) {\n        URL fileUrl = ResourceUtils.getResourceWithAbsolutePackagePath(folderPath, fileName);\n        File file = null;\n        try {\n            file = new File(fileUrl.toURI());\n        } catch (URISyntaxException e) {\n            file = new File(fileUrl.getPath());\n        }\n        try {\n            return FileUtils.readFileToString(file).trim();\n        } catch (IOException e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n    private static SoapContext context = SoapContext.builder()\n            .exampleContent(false)\n            .typeComments(false)\n            .alwaysBuildHeaders(false)\n            .valueComments(false)\n            .buildOptional(true)\n            .build();\n\n    @Test\n    public void testEmptyFaultSoap11() {\n        String emptyFaultSoap11 = SoapLegacyFacade.buildEmptyFault(SoapLegacyFacade.Soap.SOAP_1_1, context);\n        log.info(\"\\n\" + emptyFaultSoap11);\n        String expectedMsg = getContent(\"messages\", \"EmptyFault11.xml\");\n        assertEquals(expectedMsg, emptyFaultSoap11);\n    }\n\n    @Test\n    public void testEmptyFaultSoap12() {\n        String emptyFaultSoap12 = SoapLegacyFacade.buildEmptyFault(SoapLegacyFacade.Soap.SOAP_1_2, context);\n        log.info(\"\\n\" + emptyFaultSoap12);\n        String expectedMsg = getContent(\"messages\", \"EmptyFault12.xml\");\n        assertEquals(expectedMsg, emptyFaultSoap12);\n    }\n\n    @Test\n    public void testFaultSoap11() {\n        String faultSoap11 = SoapLegacyFacade.buildFault(SoapLegacyFacade.Soap.SOAP_1_1, \"VersionMismatch\", \"Fault Message\", context);\n        log.info(\"\\n\" + faultSoap11);\n        String expectedMsg = getContent(\"messages\", \"FaultVersionMismatch11.xml\");\n        assertEquals(expectedMsg, faultSoap11);\n    }\n\n    @Test\n    public void testFaultSoap12() {\n        String faultSoap12 = SoapLegacyFacade.buildFault(SoapLegacyFacade.Soap.SOAP_1_2, \"VersionMismatch\", \"Fault Message\", context);\n        log.info(\"\\n\" + faultSoap12);\n        String expectedMsg = getContent(\"messages\", \"FaultVersionMismatch12.xml\");\n        assertEquals(expectedMsg, faultSoap12);\n    }\n\n    @Test\n    public void testEmptyMessageSoap11() {\n        String emptyMessageSoap11 = SoapLegacyFacade.buildEmptyMessage(SoapLegacyFacade.Soap.SOAP_1_1, context);\n        log.info(\"\\n\" + emptyMessageSoap11);\n        String expectedMsg = getContent(\"messages\", \"EmptyMessage11.xml\");\n        assertEquals(expectedMsg, emptyMessageSoap11);\n    }\n\n    @Test\n    public void testEmptyMessageSoap12() {\n        String emptyMessageSoap12 = SoapLegacyFacade.buildEmptyMessage(SoapLegacyFacade.Soap.SOAP_1_2, context);\n        log.info(\"\\n\" + emptyMessageSoap12);\n        String expectedMsg = getContent(\"messages\", \"EmptyMessage12.xml\");\n        assertEquals(expectedMsg, emptyMessageSoap12);\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/ServiceComplianceTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport com.ibm.wsdl.xml.WSDLReaderImpl;\nimport org.apache.commons.io.FileUtils;\nimport org.apache.log4j.Logger;\nimport org.custommonkey.xmlunit.XMLUnit;\nimport org.junit.Test;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.common.XmlUtils;\n\nimport javax.wsdl.Definition;\nimport javax.wsdl.WSDLException;\nimport javax.wsdl.xml.WSDLReader;\nimport javax.xml.namespace.QName;\nimport java.io.File;\nimport java.io.IOException;\nimport java.net.URISyntaxException;\nimport java.net.URL;\n\nimport static junit.framework.Assert.assertTrue;\n\n/**\n * User: Tom Bujok (tom.bujok@gmail.com)\n * Date: 12/10/11\n * Time: 12:23 PM\n */\npublic class ServiceComplianceTest {\n\n    private final static Logger log = Logger.getLogger(ServiceComplianceTest.class);\n\n    enum MessageType {REQUEST, RESPONSE}\n\n    public static String getTestServiceFolderPath(int testServiceId) {\n        String testServiceIdString = (testServiceId < 10) ? \"0\" + testServiceId : \"\" + testServiceId;\n        return \"/services/test\" + testServiceIdString;\n    }\n\n    public static URL getDefinitionUrl(int testServiceId) {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\n                getTestServiceFolderPath(testServiceId), \"TestService.wsdl\");\n        return wsdlUrl;\n    }\n\n    public static Definition getDefinition(URL wsdlUrl) throws WSDLException {\n        WSDLReader reader = new WSDLReaderImpl();\n        Definition definition = reader.readWSDL(wsdlUrl.getPath());\n        return definition;\n    }\n\n    public static String getExpectedMessage(int testServiceId, String bindingName, String operationName, MessageType msg) {\n        String serviceFolderPath = getTestServiceFolderPath(testServiceId);\n        String messageFolderPath = String.format(\"%s/operations/%s\", serviceFolderPath, bindingName);\n        String fileName = operationName + \".\" + (MessageType.REQUEST.equals(msg) ? \"request\" : \"response\") + \".xml\";\n        URL fileUrl = ResourceUtils.getResourceWithAbsolutePackagePath(messageFolderPath, fileName);\n        File file = null;\n        try {\n            file = new File(fileUrl.toURI());\n        } catch (URISyntaxException e) {\n            file = new File(fileUrl.getPath());\n        }\n        try {\n            return FileUtils.readFileToString(file);\n        } catch (IOException e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n    public static String getExpectedRequest(int testServiceId, String bindingName, String operationName) {\n        return getExpectedMessage(testServiceId, bindingName, operationName, MessageType.REQUEST);\n    }\n\n    public static String getExpectedResponse(int testServiceId, String bindingName, String operationName) {\n        return getExpectedMessage(testServiceId, bindingName, operationName, MessageType.RESPONSE);\n    }\n\n\n    @SuppressWarnings(\"unchecked\")\n    private static void testService(int testServiceId) throws Exception {\n        URL wsdlUrl = getDefinitionUrl(testServiceId);\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        SoapContext context = SoapContext.builder()\n                .exampleContent(false)\n                .build();\n        for (QName bindingQName : parser.getBindings()) {\n            String bindingName = bindingQName.getLocalPart();\n            SoapBuilder builder = parser.binding().name(bindingQName).find();\n            for (SoapOperation operation : builder.getOperations()) {\n                String request = builder.buildInputMessage(operation);\n                String expectedRequest = getExpectedRequest(testServiceId, bindingName, operation.getOperationName());\n                log.info(String.format(\"Comparing binding=[%s] operation=[%s]\", bindingName, operation.getOperationName()));\n                log.info(\"REQUEST:\\n\" + request);\n                log.info(\"EXPECTED_REQUEST:\\n\" + expectedRequest);\n\n                request = XmlUtils.normalizeAndRemoveValues(request);\n                expectedRequest = XmlUtils.normalizeAndRemoveValues(expectedRequest);\n                log.info(\"REQUEST_NO_VALUES:\\n\" + request);\n                log.info(\"EXPECTED_REQUEST_NO_VALUES:\\n\" + expectedRequest);\n                assertTrue(XMLUnit.compareXML(expectedRequest, request).identical());\n\n                String response = builder.buildOutputMessage(operation, context);\n                String expectedResponse = getExpectedResponse(testServiceId, bindingName, operation.getOperationName());\n                log.info(\"RESPONSE:\\n\" + response);\n                log.info(\"EXPECTED_RESPONSE:\\n\" + expectedResponse);\n\n                response = XmlUtils.normalizeAndRemoveValues(response);\n                expectedResponse = XmlUtils.normalizeAndRemoveValues(expectedResponse);\n\n                log.info(\"RESPONSE_NO_VALUES:\\n\" + response);\n                log.info(\"EXPECTED_RESPONSE_NO_VALUES:\\n\" + expectedResponse);\n                assertTrue(XMLUnit.compareXML(expectedResponse, response).identical());\n            }\n        }\n    }\n\n    @Test\n    public void testService01() throws Exception {\n        testService(1);\n    }\n\n    @Test\n    public void testService02() throws Exception {\n        testService(2);\n    }\n\n    @Test\n    public void testService03() throws Exception {\n        testService(3);\n    }\n\n    @Test\n    public void testService04() throws Exception {\n        testService(4);\n    }\n\n    @Test\n    public void testService05() throws Exception {\n        testService(5);\n    }\n\n    @Test\n    public void testService06() throws Exception {\n        testService(6);\n    }\n\n    @Test\n    public void testService07() throws Exception {\n        testService(7);\n    }\n\n    @Test\n    public void testService08() throws Exception {\n        testService(8);\n    }\n\n    @Test\n    public void testService09() throws Exception {\n        testService(9);\n    }\n\n    @Test\n    public void testService10() throws Exception {\n        testService(10);\n    }\n\n    @Test\n    public void testService11() throws Exception {\n        testService(11);\n    }\n\n    @Test\n    public void testService12() throws Exception {\n        testService(12);\n    }\n\n    @Test\n    public void testService13() throws Exception {\n        testService(13);\n    }\n\n    @Test\n    public void testService14() throws Exception {\n        testService(14);\n    }\n\n    @Test\n    public void testService15() throws Exception {\n        testService(15);\n    }\n\n    @Test\n    public void testService16() throws Exception {\n        testService(16);\n    }\n\n    @Test\n    public void testService17() throws Exception {\n        testService(17);\n    }\n\n    @Test\n    public void testService18() throws Exception {\n        testService(18);\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/SoapBuilderImplTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.junit.Test;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\n\nimport javax.wsdl.WSDLException;\nimport java.net.URL;\n\nimport static junit.framework.Assert.assertNotNull;\n\npublic class SoapBuilderImplTest {\n\n    @Test\n    public void testLoadSnowboard_Bug_851() throws WSDLException {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"builder\", \"snowboard.wsdl\");\n        SoapBuilder builder = Wsdl.parse(wsdlUrl).binding().name(\"{http://namespaces.snowboard-info.com}EndorsementSearchSoapBinding\").find();\n        for (SoapOperation op : builder.getOperations()) {\n            assertNotNull(op);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/SoapOperationFinderImplTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\nimport org.junit.Test;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\n\nimport java.net.URL;\n\nimport static org.junit.Assert.assertNotNull;\n\npublic class SoapOperationFinderImplTest {\n\n    public SoapOperationFinder operation() {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"wsdl\", \"TestService.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        String binding = \"{http://schemas.eviware.com/TestService/v1/}TestServiceSoap\";\n        return parser.binding().name(binding).find().operation();\n    }\n\n    @Test(expected = IllegalArgumentException.class)\n    public void testFinderNoArguments() {\n        operation().find();\n    }\n\n    @Test(expected = NullPointerException.class)\n    public void testFinderWrongArgument() {\n        operation().name(null).find();\n    }\n\n    @Test(expected = SoapBuilderException.class)\n    public void testFinderNoOperation() {\n        operation().name(\"asd\").find();\n    }\n\n    @Test\n    public void testFindOk() {\n        assertNotNull(operation().name(\"GetDefaultPageData\").find());\n    }\n\n    @Test(expected = SoapBuilderException.class)\n    public void testFindNameOkWrongAction() {\n        operation().name(\"GetDefaultPageData\").soapAction(\"asdasdasd\").find();\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/java/org/reficio/ws/builder/WsdlTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.builder;\n\n\nimport org.junit.Test;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\n\nimport javax.xml.namespace.QName;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.util.List;\n\nimport static junit.framework.Assert.assertEquals;\nimport static org.junit.Assert.assertNotNull;\n\npublic class WsdlTest {\n\n    @Test(expected = NullPointerException.class)\n    public void testParseNullUrl() {\n        Wsdl.parse((String) null);\n    }\n\n    @Test(expected = SoapBuilderException.class)\n    public void testParseWrongUrl() throws MalformedURLException {\n        URL wsdlUrl = new URL(\"http://asd.com/asd.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        assertNotNull(parser);\n    }\n\n    @Test\n    public void testParseTestWsdl() {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"wsdl\", \"TestService.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        assertNotNull(parser);\n\n        List<QName> bindings = parser.getBindings();\n        String expectedBindingString = \"{http://schemas.eviware.com/TestService/v1/}TestServiceSoap\";\n        QName expectedBinding = QName.valueOf(expectedBindingString);\n\n        assertEquals(1, bindings.size());\n        assertEquals(expectedBinding, bindings.iterator().next());\n\n        assertNotNull(parser.binding().name(expectedBindingString).find());\n        assertNotNull(parser.binding().name(expectedBinding).find());\n    }\n\n    @Test(expected = NullPointerException.class)\n    public void testParseTestWsdlNullContext() {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"wsdl\", \"TestService.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        String expectedBindingString = \"{http://schemas.eviware.com/TestService/v1/}TestServiceSoap\";\n        parser.binding().name(expectedBindingString).find(null);\n    }\n\n    @Test\n    public void testParseTestWsdlProperContext() {\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"wsdl\", \"TestService.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        String expectedBindingString = \"{http://schemas.eviware.com/TestService/v1/}TestServiceSoap\";\n        SoapContext context = SoapContext.builder().typeComments(true).build();\n        SoapBuilder builder = parser.binding().name(expectedBindingString).find(context);\n\n        assertEquals(context, builder.getContext());\n    }\n\n}\n"
  },
  {
    "path": "soap-builder/src/test/resources/builder/snowboard.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions name=\"EndorsementSearch\" targetNamespace=\"http://namespaces.snowboard-info.com\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:esxsd=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:es=\"http://www.snowboard-info.com/EndorsementSearch.wsdl\">\n  <wsdl:types>\n    <xsd:schema targetNamespace=\"http://namespaces.snowboard-info.com\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">\n\n      <!-- xsd definition: GetEndorsingBoarder [manufacturer string, model string] -->\n      <xsd:element name=\"GetEndorsingBoarder\">\n\t<xsd:complexType>\n\t  <xsd:sequence>\n\t    <xsd:element name=\"manufacturer\" type=\"string\"/>\n            <xsd:element name=\"model\" type=\"string\"/>\n\t  </xsd:sequence>\n\t</xsd:complexType>\n      </xsd:element>\n\n      <!-- xsd definition: GetEndorsingBoarderResponse [... endorsingBoarder string ...] -->\n      <xsd:element name=\"GetEndorsingBoarderResponse\">\n\t<xsd:complexType>\n\t  <xsd:all>\n\t    <xsd:element name=\"endorsingBoarder\" type=\"string\"/>\n\t  </xsd:all>\n\t</xsd:complexType>\n      </xsd:element>\n\n      <!-- xsd definition: GetEndorsingBoarderFault [... errorMessage string ...] -->\n      <xsd:element name=\"GetEndorsingBoarderFault\">\n\t<xsd:complexType>\n\t  <xsd:all>\n\t    <xsd:element name=\"errorMessage\" type=\"string\"/>\n\t  </xsd:all>\n\t</xsd:complexType>\n      </xsd:element>\n\n    </xsd:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetEndorsingBoarderResponse\">\n    <wsdl:part name=\"body\" element=\"esxsd:GetEndorsingBoarderResponse\">\n    </wsdl:part>\n  </wsdl:message>\n  <wsdl:message name=\"GetEndorsingBoarderRequest\">\n    <wsdl:part name=\"body\" element=\"esxsd:GetEndorsingBoarder\">\n    </wsdl:part>\n  </wsdl:message>\n  <wsdl:portType name=\"GetEndorsingBoarderPortType\">\n    <wsdl:operation name=\"GetEndorsingBoarder\">\n      <wsdl:input message=\"es:GetEndorsingBoarderRequest\">\n    </wsdl:input>\n      <wsdl:output message=\"es:GetEndorsingBoarderResponse\">\n    </wsdl:output>\n      <wsdl:fault message=\"es:GetEndorsingBoarderFault\">\n    </wsdl:fault>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"EndorsementSearchSoapBinding\" type=\"es:GetEndorsingBoarderPortType\">\n    <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"GetEndorsingBoarder\">\n      <soap:operation soapAction=\"http://www.snowboard-info.com/EndorsementSearch\"/>\n      <wsdl:input>\n        <soap:body use=\"literal\" namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\"/>\n      </wsdl:output>\n      <wsdl:fault>\n    <soap:body namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\" use=\"literal\"/>\n      </wsdl:fault>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"EndorsementSearchService\">\n<wsdl:documentation>snowboarding-info.com Endorsement Service</wsdl:documentation>\n    <wsdl:port name=\"GetEndorsingBoarderPort\" binding=\"es:EndorsementSearchSoapBinding\">\n      <soap:address location=\"http://www.snowboard-info.com/EndorsementSearch\"/>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <!-- Appenders -->\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.reficio\">\n        <level value=\"error\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <!-- Root Logger -->\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/EmptyFault11.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n  <soapenv:Header/>\n  <soapenv:Body>\n    <soapenv:Fault>\n      <faultcode>?</faultcode>\n      <faultstring xml:lang=\"?\">?</faultstring>\n      <faultactor>?</faultactor>\n      <detail/>\n    </soapenv:Fault>\n  </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/EmptyFault12.xml",
    "content": "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">\n  <soap:Header/>\n  <soap:Body>\n    <soap:Fault>\n      <soap:Code>\n        <soap:Value>?</soap:Value>\n        <soap:Subcode>\n          <soap:Value>?</soap:Value>\n          <soap:Subcode/>\n        </soap:Subcode>\n      </soap:Code>\n      <soap:Reason>\n        <soap:Text xml:lang=\"?\">?</soap:Text>\n      </soap:Reason>\n      <soap:Node>?</soap:Node>\n      <soap:Role>?</soap:Role>\n      <soap:Detail/>\n    </soap:Fault>\n  </soap:Body>\n</soap:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/EmptyMessage11.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n   <soapenv:Header/>\n   <soapenv:Body/>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/EmptyMessage12.xml",
    "content": "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">\n   <soap:Header/>\n   <soap:Body/>\n</soap:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/FaultVersionMismatch11.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n  <soapenv:Header/>\n  <soapenv:Body>\n    <soapenv:Fault>\n      <faultcode>VersionMismatch</faultcode>\n      <faultstring>Fault Message</faultstring>\n    </soapenv:Fault>\n  </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/messages/FaultVersionMismatch12.xml",
    "content": "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">\n  <soap:Header/>\n  <soap:Body>\n    <soap:Fault>\n      <soap:Code>\n        <soap:Value>VersionMismatch</soap:Value>\n      </soap:Code>\n      <soap:Reason>\n        <soap:Text xml:lang=\"en\">Fault Message</soap:Text>\n      </soap:Reason>\n    </soap:Fault>\n  </soap:Body>\n</soap:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\"\n                  xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\"\n                  xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n\n<wsp:Policy wsu:Id=\"UsernameTokenPolicy\" >\n\t\t<sp:UsernameToken/>\n     </wsp:Policy>\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\"><![CDATA[Read page da\n      asd\n      asd\n      s\n      ds\n      a\n      da\n      s\n      d\n      s\n      ds\n      a\n      sd\n      s\n      da\n      sd\n      as\n      da\n      s\n      da\n      sd\n      as\n      da\n      sdta from Test]]></documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/readme.txt",
    "content": "This setup only uses relative includes\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" >\n            \t</s:element>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n      \t<s:restriction base=\"s:string\">\n      \t\t<s:pattern value=\"([\\w\\.@-]{3,30})?\"></s:pattern>\n      \t</s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test01/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:annotation>\n        \t<s:documentation><![CDATA[\n        \t\t<html><p><b>test <i>test</i></b></p></html>]]>\n        \t</s:documentation>\n        </s:annotation>\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" >\n          \t<s:annotation>\n          \t\t<s:documentation>WorkID is good to h</s:documentation>\n          \t</s:annotation></s:element>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/readme.txt",
    "content": "This setup uses relative import to xsds, include from xsds\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test02/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:import schemaLocation=\"testservice1.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/readme.txt",
    "content": "This setup uses only relative imports\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test03/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:import schemaLocation=\"testservice1.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n        <s:include schemaLocation=\"testservice2.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/readme.txt",
    "content": "This setup uses only relative imports and also includes testservice2.xsd into the \nwsdls types (so it gets included twice)\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test04/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/readme.txt",
    "content": "This setup splits the binding and service into 2 files; the later imports the former, which includes\nthe first xsd which imports the second\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test05/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/readme.txt",
    "content": "This setup splits the binding and service into 2 files; the later imports the former, which includes\nthe first xsd which imports the second, now all are in different directories\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"./xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/wsdls/xsds/sub/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test06/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"./sub/testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/readme.txt",
    "content": "This setup splits the binding and service into 2 files; the later imports the former, which includes\nthe first xsd which imports the second, now all are in different directories. This differs from test6 by using\nan absolut import for the binding wsdl.\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/wsdls/xsds/sub/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test07/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"sub/testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Copy.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Copy>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Copy>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Copy.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:CopyResponse>\n         <v1:CopyResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:CopyResult>\n      </v1:CopyResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Delete.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Delete>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:Delete>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Delete.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/DeleteChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:forceDelete>?</v1:forceDelete>\n      </v1:DeleteChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/DeleteChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteChildrenResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/DeleteVersion.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersion>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:DeleteVersion>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/DeleteVersion.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:DeleteVersionResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/FindPagesWithCriteria.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteria>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <!--Optional:-->\n         <v1:criterias>\n            <!--Zero or more repetitions:-->\n            <v1:PropertyCriteria>\n               <!--Optional:-->\n               <v1:Name>?</v1:Name>\n               <!--Optional:-->\n               <v1:Value>?</v1:Value>\n               <v1:Type>?</v1:Type>\n               <v1:Condition>?</v1:Condition>\n               <v1:StringCondition>?</v1:StringCondition>\n               <v1:IsNull>?</v1:IsNull>\n               <v1:Required>?</v1:Required>\n            </v1:PropertyCriteria>\n         </v1:criterias>\n      </v1:FindPagesWithCriteria>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/FindPagesWithCriteria.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:FindPagesWithCriteriaResponse>\n         <!--Optional:-->\n         <v1:FindPagesWithCriteriaResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:FindPagesWithCriteriaResult>\n      </v1:FindPagesWithCriteriaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetChildren.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildren>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetChildren>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetChildren.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetChildrenResponse>\n         <!--Optional:-->\n         <v1:GetChildrenResult>\n            <!--Zero or more repetitions:-->\n            <v1:RawPage>\n               <!--Optional:-->\n               <v1:Property>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawProperty>\n                     <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                     <v1:OwnerTab>?</v1:OwnerTab>\n                     <v1:IsModified>?</v1:IsModified>\n                     <v1:IsNull>?</v1:IsNull>\n                     <v1:IsRequired>?</v1:IsRequired>\n                     <v1:IsPropertyData>?</v1:IsPropertyData>\n                     <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                     <v1:IsPersonalized>?</v1:IsPersonalized>\n                     <v1:Type>?</v1:Type>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <!--Optional:-->\n                     <v1:DisplayName>?</v1:DisplayName>\n                     <!--Optional:-->\n                     <v1:Description>?</v1:Description>\n                     <!--Optional:-->\n                     <v1:LanguageKey>?</v1:LanguageKey>\n                     <!--Optional:-->\n                     <v1:TypeName>?</v1:TypeName>\n                     <!--Optional:-->\n                     <v1:AssemblyName>?</v1:AssemblyName>\n                     <!--Optional:-->\n                     <v1:Value>?</v1:Value>\n                     <!--Optional:-->\n                     <v1:CustomData>\n                        <!--Zero or more repetitions:-->\n                        <v1:RawNameAndXml>\n                           <!--Optional:-->\n                           <v1:Name>?</v1:Name>\n                           <!--Optional:-->\n                           <v1:Xml>?</v1:Xml>\n                        </v1:RawNameAndXml>\n                     </v1:CustomData>\n                  </v1:RawProperty>\n               </v1:Property>\n               <!--Optional:-->\n               <v1:ACL>\n                  <!--Zero or more repetitions:-->\n                  <v1:RawACE>\n                     <!--Optional:-->\n                     <v1:Name>?</v1:Name>\n                     <v1:SID>?</v1:SID>\n                     <v1:Access>?</v1:Access>\n                  </v1:RawACE>\n               </v1:ACL>\n            </v1:RawPage>\n         </v1:GetChildrenResult>\n      </v1:GetChildrenResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetDefaultPageDataResponse>\n         <!--Optional:-->\n         <v1:GetDefaultPageDataResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetDefaultPageDataResult>\n      </v1:GetDefaultPageDataResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Move.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Move>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:destinationLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:destinationLink>\n      </v1:Move>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Move.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:MoveResponse/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Ping.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Ping/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Ping.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:PingResponse>\n         <v1:PingResult>?</v1:PingResult>\n      </v1:PingResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Save.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:Save>\n         <!--Optional:-->\n         <v1:page>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:page>\n         <v1:action>?</v1:action>\n      </v1:Save>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/TestServiceSoap/Save.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header>\n      <v1:SignatureHeader>\n         <!--Optional:-->\n         <v1:CheckSum>?</v1:CheckSum>\n         <!--Optional:-->\n         <v1:RemoteSite>?</v1:RemoteSite>\n      </v1:SignatureHeader>\n   </soapenv:Header>\n   <soapenv:Body>\n      <v1:SaveResponse>\n         <v1:SaveResult>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:SaveResult>\n      </v1:SaveResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/readme.txt",
    "content": "This setup splits the binding and service into 2 files; the later imports the former, which includes\nthe first xsd which imports the second, now all are in different directories. This differs from test7 by using\nupward relative imports for the second xsd\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/wsdls/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test08/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"../testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://testcase/wsdl\" targetNamespace=\"http://testcase/wsdl\">\n   <wsdl:types>\n      <xs:schema targetNamespace=\"http://testcase/wsdl\" xmlns:one=\"http://testcase/one\" xmlns:two=\"http://testcase/two\" elementFormDefault=\"qualified\">\n         <xs:import namespace=\"http://testcase/one\" schemaLocation=\"one.xsd\"/>\n         <xs:import namespace=\"http://testcase/two\" schemaLocation=\"two.xsd\"/>\n         <xs:element name=\"One\" type=\"one:OneType\"/>\n\t\t\t<xs:element name=\"Two\" type=\"two:TwoType\"/>\n      </xs:schema>\n   </wsdl:types>\n   <wsdl:message name=\"MessageRequest\">\n      <wsdl:part name=\"One\" element=\"tns:One\"/>\n   </wsdl:message>\n   <wsdl:message name=\"MessageResponse\">\n      <wsdl:part name=\"Two\" element=\"tns:One\"/>\n   </wsdl:message>\n   <wsdl:portType name=\"PortType\">\n      <wsdl:operation name=\"Operation\">\n         <wsdl:input message=\"tns:MessageRequest\"/>\n         <wsdl:output message=\"tns:MessageResponse\"/>\n      </wsdl:operation>\n   </wsdl:portType>\n   <wsdl:binding name=\"Binding\" type=\"tns:PortType\">\n      <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n      <wsdl:operation name=\"Operation\">\n         <soap:operation soapAction=\"Operation\"/>\n         <wsdl:input>\n            <soap:body use=\"literal\"/>\n         </wsdl:input>\n         <wsdl:output>\n            <soap:body use=\"literal\"/>\n         </wsdl:output>\n      </wsdl:operation>\n   </wsdl:binding>\n   <wsdl:service name=\"Service\">\n      <wsdl:port name=\"Port\" binding=\"tns:Binding\">\n         <soap:address location=\"http://testcase/wsdl\"/>\n      </wsdl:port>\n   </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/common.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:complexType name=\"SharedType\">\n      <xs:sequence>\n         <xs:element name=\"Content\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/one.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:tns=\"http://testcase/one\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://testcase/one\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:include schemaLocation=\"common.xsd\"/>\n   <xs:complexType name=\"OneType\">\n      <xs:sequence>\n         <xs:element name=\"shared\" type=\"tns:SharedType\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/operations/Binding/Operation.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://testcase/wsdl\" xmlns:one=\"http://testcase/one\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <wsdl:One>\n         <one:shared>\n            <one:Content>?</one:Content>\n         </one:shared>\n      </wsdl:One>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/operations/Binding/Operation.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:wsdl=\"http://testcase/wsdl\" xmlns:one=\"http://testcase/one\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <wsdl:One>\n         <one:shared>\n            <one:Content>?</one:Content>\n         </one:shared>\n      </wsdl:One>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test09/two.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:tns=\"http://testcase/two\" xmlns:one=\"http://testcase/one\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://testcase/two\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:include schemaLocation=\"common.xsd\"/>\n   <xs:import namespace=\"http://testcase/one\" schemaLocation=\"one.xsd\"/>\n   <xs:complexType name=\"TwoType\">\n      <xs:sequence>\n         <xs:element name=\"shared\" type=\"tns:SharedType\"/>\n         <xs:element name=\"one\" type=\"one:OneType\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- testing -->\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  \n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n \n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n    </wsdl:operation>\n  \n   <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n    \n    </wsdl:operation>\n     <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://localhost:8082/soapui-tests/testonewayop/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/operations/TestServiceSoap/GetDefaultPageData.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <v1:GetDefaultPageData>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n         <v1:pageTypeID>?</v1:pageTypeID>\n      </v1:GetDefaultPageData>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/operations/TestServiceSoap/GetDefaultPageData.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">\n   <soapenv:Body/>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/operations/TestServiceSoap/GetPage.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <v1:GetPage>\n         <v1:pageLink>\n            <v1:ID>?</v1:ID>\n            <v1:WorkID>?</v1:WorkID>\n            <!--Optional:-->\n            <v1:RemoteSite>?</v1:RemoteSite>\n            <v1:LoadRawPageData>?</v1:LoadRawPageData>\n         </v1:pageLink>\n      </v1:GetPage>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/operations/TestServiceSoap/GetPage.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:v1=\"http://schemas.eviware.com/TestService/v1/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <v1:GetPageResponse>\n         <!--Optional:-->\n         <v1:GetPageResult>\n            <!--Optional:-->\n            <v1:Property>\n               <!--Zero or more repetitions:-->\n               <v1:RawProperty>\n                  <v1:PageDefinitionID>?</v1:PageDefinitionID>\n                  <v1:OwnerTab>?</v1:OwnerTab>\n                  <v1:IsModified>?</v1:IsModified>\n                  <v1:IsNull>?</v1:IsNull>\n                  <v1:IsRequired>?</v1:IsRequired>\n                  <v1:IsPropertyData>?</v1:IsPropertyData>\n                  <v1:IsDynamicProperty>?</v1:IsDynamicProperty>\n                  <v1:IsPersonalized>?</v1:IsPersonalized>\n                  <v1:Type>?</v1:Type>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <!--Optional:-->\n                  <v1:DisplayName>?</v1:DisplayName>\n                  <!--Optional:-->\n                  <v1:Description>?</v1:Description>\n                  <!--Optional:-->\n                  <v1:LanguageKey>?</v1:LanguageKey>\n                  <!--Optional:-->\n                  <v1:TypeName>?</v1:TypeName>\n                  <!--Optional:-->\n                  <v1:AssemblyName>?</v1:AssemblyName>\n                  <!--Optional:-->\n                  <v1:Value>?</v1:Value>\n                  <!--Optional:-->\n                  <v1:CustomData>\n                     <!--Zero or more repetitions:-->\n                     <v1:RawNameAndXml>\n                        <!--Optional:-->\n                        <v1:Name>?</v1:Name>\n                        <!--Optional:-->\n                        <v1:Xml>?</v1:Xml>\n                     </v1:RawNameAndXml>\n                  </v1:CustomData>\n               </v1:RawProperty>\n            </v1:Property>\n            <!--Optional:-->\n            <v1:ACL>\n               <!--Zero or more repetitions:-->\n               <v1:RawACE>\n                  <!--Optional:-->\n                  <v1:Name>?</v1:Name>\n                  <v1:SID>?</v1:SID>\n                  <v1:Access>?</v1:Access>\n               </v1:RawACE>\n            </v1:ACL>\n         </v1:GetPageResult>\n      </v1:GetPageResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/readme.txt",
    "content": "This setup only uses relative includes\n\nonewayop\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test10/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test11/TestService.wsdl",
    "content": "<!--\n  ~ soapUI, copyright (C) 2004-2008 eviware.com\n  ~\n  ~ soapUI is free software; you can redistribute it and/or modify it under the\n  ~ terms of version 2.1 of the GNU Lesser General Public License as published by\n  ~ the Free Software Foundation.\n  ~\n  ~ soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\n  ~ even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  ~ See the GNU Lesser General Public License for more details at gnu.org.\n  -->\n\n<definitions name=\"urnADEC_MAST\"\n             targetNamespace=\"urn:ADEC_MAST\"\n             xmlns:typens=\"urn:ADEC_MAST\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n             xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n  <!-- Types for search - result elements, directory categories -->\n\n  <types>\n    <xsd:schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"urn:ADEC_MAST\">\n\n      <xsd:complexType name=\"SummaryResult\">\n        <xsd:all>\n          <xsd:element name=\"missionName\"       type=\"xsd:string\"/>\n          <xsd:element name=\"dataIdCount\"       type=\"xsd:int\"/>\n        </xsd:all>\n      </xsd:complexType>\n\n      <xsd:complexType name=\"SummaryResultArray\">\n        <xsd:complexContent>\n          <xsd:restriction base=\"soapenc:Array\">\n             <xsd:attribute ref=\"soapenc:arrayType\" wsdl:arrayType=\"typens:SummaryResult[]\"/>\n          </xsd:restriction>\n        </xsd:complexContent>\n\n      </xsd:complexType>\n\n    </xsd:schema>\n  </types>\n\n  <!-- Messages for ADEC MAST Web APIs - get summary by position. -->\n\n  <message name=\"doGetSummary\">\n    <part name=\"ra\"            type=\"xsd:double\"/>\n    <part name=\"dec\"           type=\"xsd:double\"/>\n    <part name=\"radius\"        type=\"xsd:double\"/>\n  </message>\n\n  <message name=\"doGetSummaryResponse\">\n    <part name=\"return\"  type=\"typens:SummaryResult\"/>\n  </message>\n\n  <!-- Port for ADEC MAST Web APIs, \"ADEC_MAST\" -->\n\n  <portType name=\"ADEC_MAST_Port\">\n\n    <operation name=\"doGetSummary\">\n      <input message=\"typens:doGetSummary\"/>\n      <output message=\"typens:doGetSummaryResponse\"/>\n    </operation>\n\n  </portType>\n\n\n  <!-- Binding for ADEC MAST Web APIs - RPC, SOAP over HTTP -->\n\n  <binding name=\"ADEC_MAST_Binding\" type=\"typens:ADEC_MAST_Port\">\n    <soap:binding style=\"rpc\"\n                  transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n    <operation name=\"doGetSummary\">\n      <soap:operation soapAction=\"urn:ADEC_MAST#doGetSummary\"/>\n      <input>\n        <soap:body use=\"encoded\"\n                   namespace=\"urn:ADEC_MAST\"\n                   encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </input>\n      <output>\n        <soap:body use=\"encoded\"\n                   namespace=\"urn:ADEC_MAST\"\n                   encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </output>\n    </operation>\n\n  </binding>\n\n  <!-- Endpoint for ADEC MAST Web APIs -->\n  <service name=\"ADEC_MAST_Service\">\n    <port name=\"ADEC_MAST_Port\" binding=\"typens:ADEC_MAST_Binding\">\n      <soap:address location=\"http://faxafloi.stsci.edu:4547/soap/\"/>\n    </port>\n  </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test11/operations/ADEC_MAST_Binding/doGetSummary.request.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:ADEC_MAST\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <urn:doGetSummary soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <ra xsi:type=\"xsd:double\">?</ra>\n         <dec xsi:type=\"xsd:double\">?</dec>\n         <radius xsi:type=\"xsd:double\">?</radius>\n      </urn:doGetSummary>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test11/operations/ADEC_MAST_Binding/doGetSummary.response.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:urn=\"urn:ADEC_MAST\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <urn:doGetSummaryResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <return xsi:type=\"urn:SummaryResult\">\n            <!--You may enter the following 2 items in any order-->\n            <missionName xsi:type=\"xsd:string\">?</missionName>\n            <dataIdCount xsi:type=\"xsd:int\">?</dataIdCount>\n         </return>\n      </urn:doGetSummaryResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test11/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test11/readme.txt",
    "content": "rpc\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test12/TestService.wsdl",
    "content": "<definitions name=\"incrementService\"\n             targetNamespace=\"http://orchestra.objectweb.org/samples/incrementService\"\n             xmlns:tns=\"http://orchestra.objectweb.org/samples/incrementService\"\n             xmlns:plnk=\"http://schemas.xmlsoap.org/ws/2003/05/partner-link/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n  <types>\n    <schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://orchestra.objectweb.org/samples/incrementService\">\n      <complexType name=\"ProcessIncrementServiceType\">\n        <sequence>\n          <element name=\"value\" type=\"xsd:int\"/>\n        </sequence>\n      </complexType>\n      <complexType name=\"ProcessIncrementServiceResponseType\">\n        <sequence>\n          <element name=\"result\" type=\"xsd:int\"/>\n        </sequence>\n      </complexType>\n      <element name=\"processIncrementService\" type=\"tns:ProcessIncrementServiceType\"/>\n      <element name=\"processIncrementServiceResponse\" type=\"tns:ProcessIncrementServiceResponseType\"/>\n    </schema>\n  </types>\n\n  <message name=\"processIncrementServiceSoapRequest\">\n    <part name=\"parameters\" element=\"tns:processIncrementService\"/>\n  </message>\n\n  <message name=\"processIncrementServiceSoapResponse\">\n    <part name=\"parameters\" element=\"tns:processIncrementServiceResponse\"/>\n  </message>\n\n  <portType name=\"IncrementServicePT\">\n    <operation name=\"process\">\n      <input message=\"tns:processIncrementServiceSoapRequest\"/>\n      <output message=\"tns:processIncrementServiceSoapResponse\"/>\n    </operation>\n  </portType>\n\n  <plnk:partnerLinkType name=\"IncrementService\">\n    <plnk:role name=\"service\">\n      <plnk:portType name=\"tns:IncrementServicePT\"/>\n    </plnk:role>\n  </plnk:partnerLinkType>\n\n  <binding name=\"IncrementServicePTSOAPBinding\" type=\"tns:IncrementServicePT\">\n    <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <operation name=\"process\">\n      <input>\n        <soap:body use=\"encoded\" namespace=\"http://orchestra.objectweb.org/samples/incrementService\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </input>\n      <output>\n        <soap:body use=\"encoded\" namespace=\"http://orchestra.objectweb.org/samples/incrementService\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </output>\n    </operation>\n  </binding>\n\n  <service name=\"IncrementServiceServiceBP\">\n    <port name=\"IncrementServicePT\" binding=\"tns:IncrementServicePTSOAPBinding\">\n      <soap:address location=\"http://localhost:9000/axis/services/IncrementServicePT\"/>\n    </port>\n  </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test12/operations/IncrementServicePTSOAPBinding/process.request.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:inc=\"http://orchestra.objectweb.org/samples/incrementService\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <inc:process soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <inc:processIncrementService xsi:type=\"inc:ProcessIncrementServiceType\">\n            <value xsi:type=\"xsd:int\">?</value>\n         </inc:processIncrementService>\n      </inc:process>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test12/operations/IncrementServicePTSOAPBinding/process.response.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:inc=\"http://orchestra.objectweb.org/samples/incrementService\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <inc:processResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <inc:processIncrementServiceResponse xsi:type=\"inc:ProcessIncrementServiceResponseType\">\n            <result xsi:type=\"xsd:int\">?</result>\n         </inc:processIncrementServiceResponse>\n      </inc:processResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test12/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test12/readme.txt",
    "content": "increment\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/TestService.wsdl",
    "content": "<definitions xmlns=\"http://schemas.xmlsoap.org/wsdl/\" targetNamespace=\"http://api.ifyouwannabecool.com/\"\n             xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:ns0=\"http://api.ifyouwannabecool.com/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n  <types>\n    <xs:schema targetNamespace=\"http://api.ifyouwannabecool.com/\" xmlns=\"http://api.ifyouwannabecool.com/\">\n      <xs:include schemaLocation=\"chameleon.xsd\"/>\n      <xs:element name=\"createLink\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"createLink\". (Creates a link between two personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"persona1Id\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the first persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"persona2Id\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the second persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createLinkResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"createLink\". (Creates a link between two personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"link\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The link that was created.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"PermissionDeniedException\">\n        <xs:annotation>\n          <xs:documentation>\n            Thrown when an attempt is made to do something without the correct permissions.\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"message\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createSocialGroup\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"createSocialGroup\". (Create a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupLeader\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the group leader.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"memberIds\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n              <xs:annotation>\n                <xs:documentation>\n                  The ids of the members of the group.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"exclusive\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the group is exclusive.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createSocialGroupResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"createSocialGroup\". (Create a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"socialGroup\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The group that was created.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"addToSocialGroup\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the group to add the persona to.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to add to the group.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"addToSocialGroupResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the persona was successfully added.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"ExclusiveGroupException\">\n        <xs:annotation>\n          <xs:documentation>\n            Thrown when trying to add someone to a social group that is exclusive.\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupId\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"groupLeader\" type=\"persona\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"message\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readGroups\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readGroupsResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"socialGroup\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The social groups that were read.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readPersona\". (Reads a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to read.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readPersona\". (Reads a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonas\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readPersonas\". (Reads a set of personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaIds\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n              <xs:annotation>\n                <xs:documentation>\n                  The ids of the personas.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonasResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readPersonas\". (Reads a set of personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The personas.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"storePersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"storePersona\". (Store a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"persona\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Th\ne persona to store.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"storePersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"storePersona\". (Store a persona.)\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"deletePersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"deletePersona\". (Delete a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to delete.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"deletePersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"deletePersona\". (Delete a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the persona was successfully deleted.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n    </xs:schema>\n  </types>\n  <message name=\"LinkageService.createLink\">\n    <documentation>\n      request message for operation \"createLink\". (Creates a link between two personas.)\n    </documentation>\n    <part name=\"createLink\" element=\"ns0:createLink\"/>\n  </message>\n  <message name=\"LinkageService.createLinkResponse\">\n    <documentation>\n      response message for operation \"createLink\". (Creates a link between two personas.)\n    </documentation>\n    <part name=\"createLinkResponse\" element=\"ns0:createLinkResponse\"/>\n  </message>\n  <message name=\"PermissionDeniedException\">\n    <documentation>\n      Thrown when an attempt is made to do something without the correct permissions.\n    </documentation>\n    <part name=\"PermissionDeniedException\" element=\"ns0:PermissionDeniedException\"/>\n  </message>\n  <message name=\"LinkageService.createSocialGroup\">\n    <documentation>\n      request message for operation \"createSocialGroup\". (Create a social group.)\n    </documentation>\n    <part name=\"createSocialGroup\" element=\"ns0:createSocialGroup\"/>\n  </message>\n  <message name=\"LinkageService.createSocialGroupResponse\">\n    <documentation>\n      response message for operation \"createSocialGroup\". (Create a social group.)\n    </documentation>\n    <part name=\"createSocialGroupResponse\" element=\"ns0:createSocialGroupResponse\"/>\n  </message>\n  <message name=\"LinkageService.addToSocialGroup\">\n    <documentation>\n      request message for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n    </documentation>\n    <part name=\"addToSocialGroup\" element=\"ns0:addToSocialGroup\"/>\n  </message>\n  <message name=\"LinkageService.addToSocialGroupResponse\">\n    <documentation>\n      response message for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n    </documentation>\n    <part name=\"addToSocialGroupResponse\" element=\"ns0:addToSocialGroupResponse\"/>\n  </message>\n  <message name=\"ExclusiveGroupException\">\n    <documentation>\n      Thrown when trying to add someone to a social group that is exclusive.\n    </documentation>\n    <part name=\"ExclusiveGroupException\" element=\"ns0:ExclusiveGroupException\"/>\n  </message>\n  <message name=\"LinkageService.readGroups\">\n    <documentation>\n      request message for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n    </documentation>\n    <part name=\"readGroups\" element=\"ns0:readGroups\"/>\n  </message>\n  <message name=\"LinkageService.readGroupsResponse\">\n    <documentation>\n      response message for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n    </documentation>\n    <part name=\"readGroupsResponse\" element=\"ns0:readGroupsResponse\"/>\n  </message>\n  <message name=\"PersonaService.readPersona\">\n    <documentation>\n      request message for operation \"readPersona\". (Reads a persona.)\n    </documentation>\n    <part name=\"readPersona\" element=\"ns0:readPersona\"/>\n  </message>\n  <message name=\"PersonaService.readPersonaResponse\">\n    <documentation>\n      response m\nessage for operation \"readPersona\". (Reads a persona.)\n    </documentation>\n    <part name=\"readPersonaResponse\" element=\"ns0:readPersonaResponse\"/>\n  </message>\n  <message name=\"PersonaService.readPersonas\">\n    <documentation>\n      request message for operation \"readPersonas\". (Reads a set of personas.)\n    </documentation>\n    <part name=\"readPersonas\" element=\"ns0:readPersonas\"/>\n  </message>\n  <message name=\"PersonaService.readPersonasResponse\">\n    <documentation>\n      response message for operation \"readPersonas\". (Reads a set of personas.)\n    </documentation>\n    <part name=\"readPersonasResponse\" element=\"ns0:readPersonasResponse\"/>\n  </message>\n  <message name=\"PersonaService.storePersona\">\n    <documentation>\n      request message for operation \"storePersona\". (Store a persona.)\n    </documentation>\n    <part name=\"storePersona\" element=\"ns0:storePersona\"/>\n  </message>\n  <message name=\"PersonaService.storePersonaResponse\">\n    <documentation>\n      response message for operation \"storePersona\". (Store a persona.)\n    </documentation>\n    <part name=\"storePersonaResponse\" element=\"ns0:storePersonaResponse\"/>\n  </message>\n  <message name=\"PersonaService.deletePersona\">\n    <documentation>\n      request message for operation \"deletePersona\". (Delete a persona.)\n    </documentation>\n    <part name=\"deletePersona\" element=\"ns0:deletePersona\"/>\n  </message>\n  <message name=\"PersonaService.deletePersonaResponse\">\n    <documentation>\n      response message for operation \"deletePersona\". (Delete a persona.)\n    </documentation>\n    <part name=\"deletePersonaResponse\" element=\"ns0:deletePersonaResponse\"/>\n  </message>\n  <portType name=\"LinkageService\">\n    <documentation>\n      The linkage service is used to service the data for creating links between personas. This\nincludes links and social groups.\n    </documentation>\n    <operation name=\"createLink\">\n      <documentation>\n        Creates a link between two personas.\n      </documentation>\n      <input message=\"ns0:LinkageService.createLink\"/>\n      <output message=\"ns0:LinkageService.createLinkResponse\"/>\n      <fault name=\"PermissionDeniedException\" message=\"ns0:PermissionDeniedException\"/>\n    </operation>\n    <operation name=\"createSocialGroup\">\n      <documentation>\n        Create a social group.\n      </documentation>\n      <input message=\"ns0:LinkageService.createSocialGroup\"/>\n      <output message=\"ns0:LinkageService.createSocialGroupResponse\"/>\n    </operation>\n    <operation name=\"addToSocialGroup\">\n      <documentation>\n        Adds a persona to a social group.\n      </documentation>\n      <input message=\"ns0:LinkageService.addToSocialGroup\"/>\n      <output message=\"ns0:LinkageService.addToSocialGroupResponse\"/>\n      <fault name=\"ExclusiveGroupException\" message=\"ns0:ExclusiveGroupException\"/>\n    </operation>\n    <operation name=\"readGroups\">\n      <documentation>\n        Reads the social groups to which a specified persona belongs.\n      </documentation>\n      <input message=\"ns0:LinkageService.readGroups\"/>\n      <output message=\"ns0:LinkageService.readGroupsResponse\"/>\n    </operation>\n  </portType>\n  <portType name=\"PersonaService\">\n    <documentation>\n      The persona services is used to perform actions on the data associated with a persona.\n    </documentation>\n    <operation name=\"readPersona\">\n      <documentation>\n        Reads a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.readPersona\"/>\n      <output message=\"ns0:PersonaService.readPersonaResponse\"/>\n    </operation>\n    <operation name=\"readPersonas\">\n      <documentation>\n        Reads a set of personas.\n      </documentation>\n      <input message=\"ns0:PersonaService.readPersonas\"/>\n      <output message=\"ns0:PersonaService.readPersonasResponse\"/>\n    </operation>\n    <operation name=\"storePersona\">\n      <documentation>\n        Store a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.storePersona\"/>\n      <output message=\"ns0:PersonaService.storePersonaResponse\"/>\n    </operation>\n    <operation name=\"deletePersona\">\n      <documentation>\n        Delete a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.deletePersona\"/>\n      <output message=\"ns0:PersonaService.deletePersonaResponse\"/>\n      <fault name=\"PermissionDeniedException\" message=\"ns0:PermissionDeniedException\"/>\n    </operation>\n  </portType>\n  <binding name=\"LinkageServiceSOAPBinding\" type=\"ns0:LinkageService\">\n    <documentation>\n      SOAP Binding for LinkageService\n    </documentation>\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\"/>\n    <operation name=\"createLink\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"PermissionDeniedException\">\n        <soap:fault name=\"PermissionDeniedException\" use=\"literal\"/>\n      </fault>\n    </operation>\n    <operation name=\"createSocialGroup\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"addToSocialGroup\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"ExclusiveGroupException\">\n        <soap:fault name=\"ExclusiveGroupException\" use=\"literal\"/>\n      </fault>\n    </operation>\n    <operation name=\"readGroups\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n  </binding>\n  <binding name=\"PersonaServiceSOAPBinding\" type=\"ns0:PersonaService\">\n    <documentation>\n      SOAP Binding for PersonaService\n    </documentation>\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\"/>\n    <operation name=\"readPersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"readPersonas\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"storePersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"deletePersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"PermissionDeniedException\">\n        <soap:fault name=\"PermissionDeniedException\" use=\"literal\"/>\n      </fault>\n    </operation>\n  </binding>\n  <service name=\"LinkageServiceService\">\n    <port name=\"LinkageServiceSOAPPort\" binding=\"ns0:LinkageServiceSOAPBinding\">\n      <soap:address location=\"http://www.ifyouwannabecool.com/api/LinkageServiceService\"/>\n    </port>\n  </service>\n  <service name=\"PersonaServiceService\">\n    <port name=\"PersonaServiceSOAPPort\" binding=\"ns0:PersonaServiceSOAPBinding\">\n      <soap:address location=\"http://www.ifyouwannabecool.com/api/PersonaServiceService\"/>\n    </port>\n  </service>\n</definitions>\n\n \t  \t \n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/chameleon.xsd",
    "content": "<xs:schema version=\"1.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"link\">\n    <xs:annotation>\n      <xs:documentation>\n        A link between two personas.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"persona1Id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the first persona.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"persona2Id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the second persona.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"socialGroup\">\n    <xs:annotation>\n      <xs:documentation>\n        A social group.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the social group.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"memberIds\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n        <xs:annotation>\n          <xs:documentation>\n            The ids of the members in the social group.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"groupLeaderId\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the group leader.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"exclusive\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            Whether the group is exclusive.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"name\">\n    <xs:annotation>\n      <xs:documentation>\n        A name of a persona.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:complexContent>\n      <xs:extension base=\"xs:anyType\"/>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"persona\">\n    <xs:sequence>\n      <xs:element name=\"id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"email\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"alias\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"name\" type=\"name\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"picture\" type=\"xs:base64Binary\" minOccurs=\"0\" maxOccurs=\"1\"/>\n    </xs:sequence>\n  </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/addToSocialGroup.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:addToSocialGroup>\n         <groupId>?</groupId>\n         <personaId>?</personaId>\n      </api:addToSocialGroup>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/addToSocialGroup.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:addToSocialGroupResponse>\n         <return>?</return>\n      </api:addToSocialGroupResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/createLink.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:createLink>\n         <persona1Id>?</persona1Id>\n         <persona2Id>?</persona2Id>\n      </api:createLink>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/createLink.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:createLinkResponse>\n         <return>\n            <!--Optional:-->\n            <persona1Id>?</persona1Id>\n            <!--Optional:-->\n            <persona2Id>?</persona2Id>\n         </return>\n      </api:createLinkResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/createSocialGroup.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:createSocialGroup>\n         <groupLeader>?</groupLeader>\n         <!--1 or more repetitions:-->\n         <memberIds>?</memberIds>\n         <exclusive>?</exclusive>\n      </api:createSocialGroup>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/createSocialGroup.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:createSocialGroupResponse>\n         <return>\n            <!--Optional:-->\n            <id>?</id>\n            <!--Zero or more repetitions:-->\n            <memberIds>?</memberIds>\n            <!--Optional:-->\n            <groupLeaderId>?</groupLeaderId>\n            <exclusive>?</exclusive>\n         </return>\n      </api:createSocialGroupResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/readGroups.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readGroups>\n         <personaId>?</personaId>\n      </api:readGroups>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/LinkageServiceSOAPBinding/readGroups.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readGroupsResponse>\n         <return>\n            <!--Optional:-->\n            <id>?</id>\n            <!--Zero or more repetitions:-->\n            <memberIds>?</memberIds>\n            <!--Optional:-->\n            <groupLeaderId>?</groupLeaderId>\n            <exclusive>?</exclusive>\n         </return>\n      </api:readGroupsResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/deletePersona.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:deletePersona>\n         <personaId>?</personaId>\n      </api:deletePersona>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/deletePersona.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:deletePersonaResponse>\n         <return>?</return>\n      </api:deletePersonaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/readPersona.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readPersona>\n         <personaId>?</personaId>\n      </api:readPersona>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/readPersona.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readPersonaResponse>\n         <return>\n            <!--Optional:-->\n            <id>?</id>\n            <!--Optional:-->\n            <email>?</email>\n            <!--Optional:-->\n            <alias>?</alias>\n            <!--Optional:-->\n            <name>\n               e\n               <!--You may enter ANY elements at this point-->\n               gero\n            </name>\n            <!--Optional:-->\n            <picture>cid:986942279037</picture>\n         </return>\n      </api:readPersonaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/readPersonas.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readPersonas>\n         <!--1 or more repetitions:-->\n         <personaIds>?</personaIds>\n      </api:readPersonas>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/readPersonas.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:readPersonasResponse>\n         <return>\n            <!--Optional:-->\n            <id>?</id>\n            <!--Optional:-->\n            <email>?</email>\n            <!--Optional:-->\n            <alias>?</alias>\n            <!--Optional:-->\n            <name>\n               e\n               <!--You may enter ANY elements at this point-->\n               gero\n            </name>\n            <!--Optional:-->\n            <picture>cid:1053368152503</picture>\n         </return>\n      </api:readPersonasResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/storePersona.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:storePersona>\n         <persona>\n            <!--Optional:-->\n            <id>?</id>\n            <!--Optional:-->\n            <email>?</email>\n            <!--Optional:-->\n            <alias>?</alias>\n            <!--Optional:-->\n            <name>\n               e\n               <!--You may enter ANY elements at this point-->\n               gero\n            </name>\n            <!--Optional:-->\n            <picture>cid:111374498880</picture>\n         </persona>\n      </api:storePersona>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/PersonaServiceSOAPBinding/storePersona.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:api=\"http://api.ifyouwannabecool.com/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <api:storePersonaResponse>?</api:storePersonaResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test13/readme.txt",
    "content": "chameleon\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test14/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions targetNamespace=\"http://cyclic.test\" xmlns:impl=\"http://cyclic.test\"\n                  xmlns:intf=\"http://cyclic.test\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                  xmlns:wsdlsoap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n    <wsdl:types>\n        <schema targetNamespace=\"http://cyclic.test\"\n                xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:impl=\"http://cyclic.test\"\n                xmlns:intf=\"http://cyclic.test\"\n                xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n            <import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <complexType name=\"Person\">\n                <sequence>\n                    <element name=\"name\" nillable=\"true\" type=\"xsd:string\"/>\n                    <element name=\"friend\" nillable=\"true\" type=\"impl:Person\"/>\n                </sequence>\n            </complexType>\n            <element name=\"Person\" nillable=\"true\" type=\"impl:Person\"/>\n        </schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"makeFriendResponse\">\n        <wsdl:part name=\"makeFriendReturn\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:message name=\"makeFriendRequest\">\n        <wsdl:part name=\"A\" type=\"intf:Person\"/>\n        <wsdl:part name=\"B\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"MakeFriends\">\n        <wsdl:operation name=\"makeFriend\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\"\n                         name=\"makeFriendResponse\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"MakeFriendsSoapBinding\" type=\"intf:MakeFriends\">\n        <wsdlsoap:binding style=\"rpc\"\n                          transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"makeFriend\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"MakeFriendsService\">\n        <wsdl:port binding=\"intf:MakeFriendsSoapBinding\" name=\"MakeFriends\">\n            <wsdlsoap:address\n                    location=\"http://localhost:9080/CyclicTestEJBClient/services/MakeFriends\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test14/operations/MakeFriendsSoapBinding/makeFriend.request.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cyc=\"http://cyclic.test\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <cyc:makeFriend soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <A xsi:type=\"cyc:Person\">\n            <name xsi:type=\"xsd:string\">?</name>\n            <friend/>\n         </A>\n         <B xsi:type=\"cyc:Person\">\n            <name xsi:type=\"xsd:string\">?</name>\n            <friend/>\n         </B>\n      </cyc:makeFriend>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test14/operations/MakeFriendsSoapBinding/makeFriend.response.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:cyc=\"http://cyclic.test\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <cyc:makeFriendResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <makeFriendReturn xsi:type=\"cyc:Person\">\n            <name xsi:type=\"xsd:string\">?</name>\n            <friend/>\n         </makeFriendReturn>\n      </cyc:makeFriendResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test14/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n        <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/operations/StockQuoteSoapBinding/GetLastTradePrice.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:TradePriceRequest>\n         <tickerSymbol>?</tickerSymbol>\n      </stoc:TradePriceRequest>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/operations/StockQuoteSoapBinding/GetLastTradePrice.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:TradePrice>\n         <price>?</price>\n      </stoc:TradePrice>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/operations/StockQuoteSoapBinding/GetLastTradePrice2.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:TradePriceRequest>\n         <tickerSymbol>?</tickerSymbol>\n      </stoc:TradePriceRequest>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/operations/StockQuoteSoapBinding/GetLastTradePrice2.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:TradePrice>\n         <price>?</price>\n      </stoc:TradePrice>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test15/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test16/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"encoded\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>Stock service</documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test16/operations/StockQuoteSoapBinding/GetLastTradePrice.request.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n                  xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePrice soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <stoc1:TradePriceRequest>\n            <tickerSymbol xsi:type=\"xsd:string\">?</tickerSymbol>\n         </stoc1:TradePriceRequest>\n      </stoc:GetLastTradePrice>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test16/operations/StockQuoteSoapBinding/GetLastTradePrice.response.xml",
    "content": "<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n                  xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePriceResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">\n         <stoc1:TradePrice>\n            <price xsi:type=\"xsd:float\">?</price>\n         </stoc1:TradePrice>\n      </stoc:GetLastTradePriceResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test16/operations/soap-version.txt",
    "content": "SOAP 1.1\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test16/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n        <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/operations/StockQuoteSoapBinding/GetLastTradePrice.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePrice>\n         <stoc1:TradePriceRequest>\n            <tickerSymbol>?</tickerSymbol>\n         </stoc1:TradePriceRequest>\n      </stoc:GetLastTradePrice>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/operations/StockQuoteSoapBinding/GetLastTradePrice.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePriceResponse>\n         <stoc1:TradePrice>\n            <price>?</price>\n         </stoc1:TradePrice>\n      </stoc:GetLastTradePriceResponse>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/operations/StockQuoteSoapBinding/GetLastTradePrice2.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePrice2>\n         <stoc1:TradePriceRequest>\n            <tickerSymbol>?</tickerSymbol>\n         </stoc1:TradePriceRequest>\n      </stoc:GetLastTradePrice2>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/operations/StockQuoteSoapBinding/GetLastTradePrice2.response.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:stoc=\"http://reficio.org/stockquote.wsdl\" xmlns:stoc1=\"http://reficio.org/stockquote.xsd\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <stoc:GetLastTradePrice2Response>\n         <stoc1:TradePrice>\n            <price>?</price>\n         </stoc1:TradePrice>\n      </stoc:GetLastTradePrice2Response>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/operations/soap-version.txt",
    "content": "SOAP 1.2\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test17/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:s0=\"http://tempuri.org/encodedTypes\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n             xmlns:tns=\"http://tempuri.org/\"\n             targetNamespace=\"http://tempuri.org/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <s:schema targetNamespace=\"http://tempuri.org/encodedTypes\">\n            <s:import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <s:import namespace=\"http://schemas.xmlsoap.org/wsdl/\"/>\n            <s:complexType name=\"ArrayOfTest\">\n                <s:complexContent mixed=\"false\">\n                    <s:restriction base=\"soapenc:Array\">\n                        <s:attribute d7p1:arrayType=\"s0:Test[]\" ref=\"soapenc:arrayType\"\n                                     xmlns:d7p1=\"http://schemas.xmlsoap.org/wsdl/\"/>\n                    </s:restriction>\n                </s:complexContent>\n            </s:complexType>\n            <s:complexType name=\"Test\">\n                <s:sequence>\n                    <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"S\" type=\"s:string\"/>\n                </s:sequence>\n            </s:complexType>\n        </s:schema>\n    </types>\n\n    <message name=\"SayHelloWorldSoapIn\"/>\n    <message name=\"SayHelloWorldSoapOut\">\n        <part name=\"SayHelloWorldResult\" type=\"s0:ArrayOfTest\"/>\n    </message>\n\n    <portType name=\"HelloWorldSoap\">\n        <operation name=\"SayHelloWorld\">\n            <input message=\"tns:SayHelloWorldSoapIn\"/>\n            <output message=\"tns:SayHelloWorldSoapOut\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"HelloWorldSoap\" type=\"tns:HelloWorldSoap\">\n        <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"rpc\"/>\n        <operation name=\"SayHelloWorld\">\n            <soap:operation soapAction=\"http://tempuri.org/SayHelloWorld\" style=\"rpc\"/>\n            <input>\n                <soap:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <binding name=\"HelloWorldSoap12\" type=\"tns:HelloWorldSoap\">\n        <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"rpc\"/>\n        <operation name=\"SayHelloWorld\">\n            <soap12:operation soapAction=\"http://tempuri.org/SayHelloWorld\" soapActionRequired=\"true\" style=\"rpc\"/>\n            <input>\n                <soap12:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                             encodingStyle=\"http://www.w3.org/2001/12/soap-encoding\"/>\n            </input>\n            <output>\n                <soap12:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                             encodingStyle=\"http://www.w3.org/2001/12/soap-encoding\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"HelloWorld\">\n        <port name=\"HelloWorldSoap\" binding=\"tns:HelloWorldSoap\">\n            <soap:address location=\"http://localhost/bugs/soap12/helloworld.asmx\"/>\n        </port>\n\n        <port name=\"HelloWorldSoap12\" binding=\"tns:HelloWorldSoap12\">\n            <soap12:address location=\"http://localhost/bugs/soap12/helloworld.asmx\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/operations/HelloWorldSoap/SayHelloWorld.request.xml",
    "content": "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">\n   <soapenv:Header/>\n   <soapenv:Body>\n      <tem:SayHelloWorld soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n   </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/operations/HelloWorldSoap/SayHelloWorld.response.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n                  xmlns:tem=\"http://tempuri.org/\"\n                  xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \n   <soapenv:Header> </soapenv:Header> \n   <soapenv:Body> \n      <tem:SayHelloWorldResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"> \n         <SayHelloWorldResult xmlns:enc=\"http://tempuri.org/encodedTypes\" soapenc:arrayType=\"enc:Test[]\"\n                              soapenc:offset=\"?\"\n                              xsi:type=\"enc:ArrayOfTest\"> </SayHelloWorldResult> \n      </tem:SayHelloWorldResponse> \n   </soapenv:Body> \n</soapenv:Envelope>"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/operations/HelloWorldSoap12/SayHelloWorld.request.xml",
    "content": "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:tem=\"http://tempuri.org/\">\n   <soap:Header/>\n   <soap:Body>\n      <tem:SayHelloWorld soap:encodingStyle=\"http://www.w3.org/2003/05/soap-encoding\"/>\n   </soap:Body>\n</soap:Envelope>"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/operations/HelloWorldSoap12/SayHelloWorld.response.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"\n               xmlns:tem=\"http://tempuri.org/\"\n               xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n               xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n               xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> \n   <soap:Header> </soap:Header> \n   <soap:Body> \n      <tem:SayHelloWorldResponse soap:encodingStyle=\"http://www.w3.org/2003/05/soap-encoding\"> \n         <SayHelloWorldResult xmlns:enc=\"http://tempuri.org/encodedTypes\" soapenc:arrayType=\"enc:Test[]\"\n                              soapenc:offset=\"?\"\n                              xsi:type=\"enc:ArrayOfTest\"> </SayHelloWorldResult> \n      </tem:SayHelloWorldResponse> \n   </soap:Body> \n</soap:Envelope>"
  },
  {
    "path": "soap-builder/src/test/resources/services/test18/operations/soap-version.txt",
    "content": "SOAP 1.2\n"
  },
  {
    "path": "soap-builder/src/test/resources/wsdl/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\"\n                  xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\"\n                  xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n\n<wsp:Policy wsu:Id=\"UsernameTokenPolicy\" >\n\t\t<sp:UsernameToken/>\n     </wsp:Policy>\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\"><![CDATA[Read page da\n      asd\n      asd\n      s\n      ds\n      a\n      da\n      s\n      d\n      s\n      ds\n      a\n      sd\n      s\n      da\n      sd\n      as\n      da\n      s\n      da\n      sd\n      as\n      da\n      sdta from Test]]></documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-builder/src/test/resources/wsdl/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" >\n            \t</s:element>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n      \t<s:restriction base=\"s:string\">\n      \t\t<s:pattern value=\"([\\w\\.@-]{3,30})?\"></s:pattern>\n      \t</s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-builder/src/test/resources/wsdl/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:annotation>\n        \t<s:documentation><![CDATA[\n        \t\t<html><p><b>test <i>test</i></b></p></html>]]>\n        \t</s:documentation>\n        </s:annotation>\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" >\n          \t<s:annotation>\n          \t\t<s:documentation>WorkID is good to h</s:documentation>\n          \t</s:annotation></s:element>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-client/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-client</artifactId>\n    <packaging>bundle</packaging>\n    <name>soap-client - XML based SOAP client</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.apache.httpcomponents</groupId>\n            <artifactId>httpclient</artifactId>\n            <version>4.2.3</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-codec</groupId>\n            <artifactId>commons-codec</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/SoapClientException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client;\n\nimport org.reficio.ws.SoapException;\n\n/**\n * Top-level exception type thrown by SoapClient\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapClientException extends SoapException {\n    public SoapClientException(String message) {\n        super(message);\n    }\n\n    public SoapClientException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public SoapClientException(Throwable cause) {\n        super(cause);\n    }\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/TransmissionException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client;\n\n/**\n * Exception thrown when an transmission error occurs. Returns HTTP error code if returned by the server.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class TransmissionException extends SoapClientException {\n\n    private final String errorResponse;\n    private final Integer errorCode;\n\n    public TransmissionException(String message) {\n        super(message);\n        this.errorResponse = null;\n        this.errorCode = null;\n    }\n\n    public TransmissionException(String message, Throwable ex) {\n        super(String.format(\"%s; %s\", message, ex.getMessage()), ex);\n        this.errorResponse = null;\n        this.errorCode = null;\n    }\n\n    public TransmissionException(String response, Integer errorCode) {\n        super(String.format(\"HTTP response=[%s] code=[%d]\", response, errorCode));\n        this.errorResponse = response;\n        this.errorCode = errorCode;\n    }\n\n    public String getErrorResponse() {\n        return errorResponse;\n    }\n\n    public Integer getErrorCode() {\n        return errorCode;\n    }\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/core/Security.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.core;\n\nimport org.reficio.ws.client.SoapClientException;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.security.GeneralSecurityException;\nimport java.security.KeyStore;\n\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static org.reficio.ws.client.core.SoapConstants.*;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class Security {\n\n    private KeyStore trustStore;\n    private char[] trustStorePassword;\n    private String trustStoreType;\n\n    private KeyStore keyStore;\n    private char[] keyStorePassword;\n    private String keyStoreType;\n\n    private String authUsername;\n    private String authPassword;\n    private String authWorkstation;\n    private String authDomain;\n\n    private String authMethod;\n\n    private boolean strictHostVerification;\n    private String sslContextProtocol;\n\n    // ----------------------------------------------------------------\n    // PUBLIC API\n    // ----------------------------------------------------------------\n    public KeyStore getTrustStore() {\n        return trustStore;\n    }\n\n    public char[] getTrustStorePassword() {\n        return trustStorePassword;\n    }\n\n    public String getTrustStorePasswordAsString() {\n        return trustStorePassword != null ? new String(trustStorePassword) : null;\n    }\n\n    public String getTrustStoreType() {\n        return trustStoreType;\n    }\n\n    public KeyStore getKeyStore() {\n        return keyStore;\n    }\n\n    public char[] getKeyStorePassword() {\n        return keyStorePassword;\n    }\n\n    public String getKeyStorePasswordAsString() {\n        return keyStorePassword != null ? new String(keyStorePassword) : null;\n    }\n\n    public String getKeyStoreType() {\n        return keyStoreType;\n    }\n\n    public String getAuthUsername() {\n        return authUsername;\n    }\n\n    public String getAuthPassword() {\n        return authPassword;\n    }\n\n    public String getAuthWorkstation() {\n        return authWorkstation;\n    }\n\n    public String getAuthDomain() {\n        return authDomain;\n    }\n\n    public String getAuthMethod() {\n        return authMethod;\n    }\n\n    public boolean isAuthEnabled() {\n        return !authMethod.equals(AuthMethod.NONE.name());\n    }\n\n    public boolean isAuthBasic() {\n        return authMethod.equals(AuthMethod.BASIC.name());\n    }\n\n    public boolean isAuthDigest() {\n        return authMethod.equals(AuthMethod.DIGEST.name());\n    }\n\n    public boolean isAuthNtlm() {\n        return authMethod.equals(AuthMethod.NTLM.name());\n    }\n\n    public boolean isAuthSpnego() {\n        return authMethod.equals(AuthMethod.SPNEGO.name());\n    }\n\n    public boolean isStrictHostVerification() {\n        return strictHostVerification;\n    }\n\n    public String getSslContextProtocol() {\n        return sslContextProtocol;\n    }\n\n    // ----------------------------------------------------------------\n    // BUILDER API\n    // ----------------------------------------------------------------\n    public static Builder builder() {\n        return new Builder();\n    }\n\n    private Security() {\n    }\n\n    /**\n     * Builder to construct a properly populated SoapClient\n     */\n    public static class Builder {\n\n        private KeyStore trustStore;\n        private URL trustStoreUrl;\n        private String trustStoreType = JKS_KEYSTORE;\n        private char[] trustStorePassword;\n\n        private KeyStore keyStore;\n        private URL keyStoreUrl;\n        private String keyStoreType = JKS_KEYSTORE;\n        private char[] keyStorePassword;\n\n        private String authUsername;\n        private String authPassword;\n        private String authWorkstation;\n        private String authDomain;\n\n        private String authMethod = AuthMethod.NONE.name();\n\n        private String sslContextProtocol = SSL_CONTEXT_PROTOCOL;\n        private Boolean strictHostVerification = false;\n\n        public Builder authBasic(String user, String password) {\n            authUsername = checkNotNull(user);\n            authPassword = checkNotNull(password);\n            authMethod = AuthMethod.BASIC.name();\n            return this;\n        }\n\n        public Builder authDigest(String user, String password) {\n            authUsername = checkNotNull(user);\n            authPassword = checkNotNull(password);\n            authMethod = AuthMethod.DIGEST.name();\n            return this;\n        }\n\n        public Builder authNtlm(String user, String password, String workstation, String domain) {\n            authUsername = checkNotNull(user);\n            authPassword = checkNotNull(password);\n            authWorkstation = checkNotNull(workstation);\n            authDomain = checkNotNull(domain);\n            authMethod = AuthMethod.NTLM.name();\n            return this;\n        }\n\n        public Builder authSpnego() {\n            authMethod = AuthMethod.SPNEGO.name();\n            return this;\n        }\n\n        /**\n         * @param value Specifies the instance of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder keyStore(KeyStore value) {\n            checkNotNull(value);\n            keyStore = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the URL of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder keyStoreUrl(URL value) {\n            checkNotNull(value);\n            keyStoreUrl = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the URL of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder keyStoreUrl(String value) {\n            checkNotNull(value);\n            try {\n                keyStoreUrl = new URL(value);\n                return this;\n            } catch (MalformedURLException ex) {\n                throw new SoapClientException(String.format(\"URL [%s] is malformed\", value), ex);\n            }\n        }\n\n        /**\n         * @param value Specifies the type of the truststore. Null is not accepted.\n         * @return builder\n         */\n        public Builder keyStoreType(String value) {\n            checkNotNull(value);\n            keyStoreType = value;\n            return this;\n        }\n\n        /**\n         * @param value truststore password. Null is accepted.\n         * @return builder\n         */\n        public Builder keyStorePassword(String value) {\n            if (value != null) {\n                keyStorePassword = value.toCharArray();\n            }\n            return this;\n        }\n\n        /**\n         * @param value Specifies the instance of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder trustStore(KeyStore value) {\n            checkNotNull(value);\n            trustStore = value;\n            return this;\n        }\n\n\n        /**\n         * @param value Specifies the URL of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder trustStoreUrl(URL value) {\n            checkNotNull(value);\n            trustStoreUrl = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the URL of the truststore to use in the SOAP communication. Null is not accepted.\n         * @return builder\n         */\n        public Builder trustStoreUrl(String value) {\n            checkNotNull(value);\n            try {\n                trustStoreUrl = new URL(value);\n                return this;\n            } catch (MalformedURLException ex) {\n                throw new SoapClientException(String.format(\"URL [%s] is malformed\", value), ex);\n            }\n        }\n\n        /**\n         * @param value Specifies the type of the truststore. Null is not accepted.\n         * @return builder\n         */\n        public Builder trustStoreType(String value) {\n            checkNotNull(value);\n            trustStoreType = value;\n            return this;\n        }\n\n        /**\n         * @param value truststore password. Null is accepted.\n         * @return builder\n         */\n        public Builder trustStorePassword(String value) {\n            if (value != null) {\n                trustStorePassword = value.toCharArray();\n            }\n            return this;\n        }\n\n        /**\n         * Enables strict host verification\n         *\n         * @param value strict host verification enables/disabled\n         * @return builder\n         */\n        public Builder strictHostVerification(boolean value) {\n            strictHostVerification = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the SSL Context Protocol. By default it's SSLv3. Null is not accepted.\n         * @return builder\n         */\n        public Builder sslContextProtocol(String value) {\n            checkNotNull(value);\n            sslContextProtocol = value;\n            return this;\n        }\n\n        /**\n         * Constructs properly populated soap client\n         *\n         * @return properly populated soap clients\n         */\n        public Security build() {\n            Security security = new Security();\n\n            security.keyStore = initKeyStore(keyStore, keyStoreUrl, keyStoreType, keyStorePassword);\n            security.keyStoreType = keyStoreType;\n            security.keyStorePassword = keyStorePassword;\n\n            security.trustStore = initKeyStore(trustStore, trustStoreUrl, trustStoreType, trustStorePassword);\n            security.trustStoreType = trustStoreType;\n            security.trustStorePassword = trustStorePassword;\n\n            security.sslContextProtocol = sslContextProtocol;\n            security.strictHostVerification = strictHostVerification;\n\n            security.authUsername = authUsername;\n            security.authPassword = authPassword;\n            security.authWorkstation = authWorkstation;\n            security.authDomain = authDomain;\n            security.authMethod = authMethod;\n\n            return security;\n        }\n\n        private KeyStore initKeyStore(KeyStore keyStore, URL keyStoreUrl, String keyStoreType, char[] keyStorePassword) {\n            boolean keyStorePropertiesDefined = keyStoreUrl != null || keyStoreType != null || keyStorePassword != null;\n            if (keyStore != null && keyStorePropertiesDefined) {\n                throw new SoapClientException(\"Specify either a keyStore | trustStore instance or properties required to load one \" +\n                        \"(url, type, password)\");\n            }\n            if (keyStoreUrl != null) {\n                try {\n                    InputStream in = keyStoreUrl.openStream();\n                    KeyStore ks = KeyStore.getInstance(keyStoreType);\n                    ks.load(in, keyStorePassword);\n                    in.close();\n                    return ks;\n                } catch (GeneralSecurityException e) {\n                    throw new SoapClientException(\"KeyStore setup failed\", e);\n                } catch (IOException e) {\n                    throw new SoapClientException(\"KeyStore setup failed\", e);\n                }\n            }\n            return null;\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/core/SecurityFactory.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.core;\n\nimport java.security.KeyStore;\n\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static org.reficio.ws.client.core.SoapConstants.AuthMethod;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class SecurityFactory {\n\n    private KeyStore trustStore;\n    private String trustStoreUrl;\n    private String trustStorePassword;\n    private String trustStoreType;\n\n    private KeyStore keyStore;\n    private String keyStoreUrl;\n    private String keyStorePassword;\n    private String keyStoreType;\n\n    private String authUsername;\n    private String authPassword;\n    private String authWorkstation;\n    private String authDomain;\n    private String authMethod;\n\n    private Boolean strictHostVerification;\n    private String sslContextProtocol;\n\n    public KeyStore getTrustStore() {\n        return trustStore;\n    }\n\n    public void setTrustStore(KeyStore trustStore) {\n        this.trustStore = checkNotNull(trustStore);\n    }\n\n    public String getTrustStorePassword() {\n        return trustStorePassword;\n    }\n\n    public void setTrustStorePassword(String trustStorePassword) {\n        this.trustStorePassword = checkNotNull(trustStorePassword);\n    }\n\n    public String getTrustStoreType() {\n        return trustStoreType;\n    }\n\n    public void setTrustStoreType(String trustStoreType) {\n        this.trustStoreType = checkNotNull(trustStoreType);\n    }\n\n    public KeyStore getKeyStore() {\n        return keyStore;\n    }\n\n    public void setKeyStore(KeyStore keyStore) {\n        this.keyStore = checkNotNull(keyStore);\n    }\n\n    public String getKeyStorePassword() {\n        return keyStorePassword;\n    }\n\n    public void setKeyStorePassword(String keyStorePassword) {\n        this.keyStorePassword = checkNotNull(keyStorePassword);\n    }\n\n    public String getKeyStoreType() {\n        return keyStoreType;\n    }\n\n    public void setKeyStoreType(String keyStoreType) {\n        this.keyStoreType = checkNotNull(keyStoreType);\n    }\n\n    public String getAuthUsername() {\n        return authUsername;\n    }\n\n    public void setAuthUsername(String authUsername) {\n        this.authUsername = checkNotNull(authUsername);\n    }\n\n    public String getAuthPassword() {\n        return authPassword;\n    }\n\n    public void setAuthPassword(String authPassword) {\n        this.authPassword = checkNotNull(authPassword);\n    }\n\n    public String getAuthWorkstation() {\n        return authWorkstation;\n    }\n\n    public void setAuthWorkstation(String authWorkstation) {\n        this.authWorkstation = checkNotNull(authWorkstation);\n    }\n\n    public String getAuthDomain() {\n        return authDomain;\n    }\n\n    public void setAuthDomain(String authDomain) {\n        this.authDomain = checkNotNull(authDomain);\n    }\n\n    public String getAuthMethod() {\n        return authMethod;\n    }\n\n    public void setAuthMethod(String authMethod) {\n        this.authMethod = checkNotNull(authMethod).toUpperCase().trim();\n    }\n\n    public Boolean getStrictHostVerification() {\n        return strictHostVerification;\n    }\n\n    public void setStrictHostVerification(Boolean strictHostVerification) {\n        this.strictHostVerification = checkNotNull(strictHostVerification);\n    }\n\n    public String getSslContextProtocol() {\n        return sslContextProtocol;\n    }\n\n    public void setSslContextProtocol(String sslContextProtocol) {\n        this.sslContextProtocol = checkNotNull(sslContextProtocol);\n    }\n\n    public Security create() {\n        Security.Builder builder = Security.builder();\n\n        configureKeyStore(builder);\n        configureTrustStore(builder);\n        configureAuthentication(builder);\n        configureTransport(builder);\n\n        return builder.build();\n    }\n\n    private void configureKeyStore(Security.Builder builder) {\n        if (keyStore != null) {\n            builder.keyStore(keyStore);\n        }\n        if (keyStoreUrl != null) {\n            builder.keyStoreUrl(keyStoreUrl);\n        }\n        if (keyStorePassword != null) {\n            builder.keyStorePassword(keyStorePassword);\n        }\n        if (keyStoreType != null) {\n            builder.keyStoreType(keyStoreType);\n        }\n    }\n\n    private void configureTrustStore(Security.Builder builder) {\n        if (trustStore != null) {\n            builder.trustStore(trustStore);\n        }\n        if (trustStoreUrl != null) {\n            builder.trustStoreUrl(trustStoreUrl);\n        }\n        if (trustStorePassword != null) {\n            builder.trustStorePassword(trustStorePassword);\n        }\n        if (trustStoreType != null) {\n            builder.trustStoreType(trustStoreType);\n        }\n    }\n\n    private void configureAuthentication(Security.Builder builder) {\n        if(authMethod != null) {\n            AuthMethod method = AuthMethod.valueOf(authMethod);\n            if(method.equals(AuthMethod.BASIC)) {\n                builder.authBasic(authUsername, authPassword);\n            } else if(method.equals(AuthMethod.DIGEST)) {\n                builder.authDigest(authUsername, authPassword);\n            } else if(method.equals(AuthMethod.NTLM)) {\n                builder.authNtlm(authUsername, authPassword, authWorkstation, authDomain);\n            } else if(method.equals(AuthMethod.SPNEGO)) {\n                builder.authSpnego();\n            }\n        }\n    }\n\n    private void configureTransport(Security.Builder builder) {\n        if (strictHostVerification != null) {\n            builder.strictHostVerification(strictHostVerification);\n        }\n        if (sslContextProtocol != null) {\n            builder.sslContextProtocol(sslContextProtocol);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/core/SoapClient.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.http.*;\nimport org.apache.http.auth.AuthScope;\nimport org.apache.http.auth.Credentials;\nimport org.apache.http.auth.NTCredentials;\nimport org.apache.http.auth.UsernamePasswordCredentials;\nimport org.apache.http.client.methods.HttpPost;\nimport org.apache.http.conn.ConnectTimeoutException;\nimport org.apache.http.conn.params.ConnRoutePNames;\nimport org.apache.http.conn.routing.HttpRoute;\nimport org.apache.http.conn.routing.HttpRoutePlanner;\nimport org.apache.http.conn.routing.RouteInfo;\nimport org.apache.http.conn.scheme.Scheme;\nimport org.apache.http.conn.scheme.SchemeLayeredSocketFactory;\nimport org.apache.http.conn.ssl.SSLSocketFactory;\nimport org.apache.http.entity.StringEntity;\nimport org.apache.http.impl.client.DefaultHttpClient;\nimport org.apache.http.params.BasicHttpParams;\nimport org.apache.http.params.HttpConnectionParams;\nimport org.apache.http.params.HttpParams;\nimport org.apache.http.protocol.HttpContext;\nimport org.apache.http.util.EntityUtils;\nimport org.reficio.ws.SoapException;\nimport org.reficio.ws.annotation.ThreadSafe;\nimport org.reficio.ws.client.SoapClientException;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.client.ssl.SSLUtils;\n\nimport java.io.IOException;\nimport java.io.UnsupportedEncodingException;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.security.GeneralSecurityException;\n\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\nimport static org.reficio.ws.client.core.SoapConstants.*;\n\n/**\n * SOAP client enables the user to communicate with a SOAP server on a purely XML level.\n * It supports SSL/TLS, basic-authentication and java.net.Proxy.\n * When it comes to SOAP it supports version 1.1 and 1.2 - SOAPAction attribute is automatically properly placed,\n * either in the header (SOAP 1.1) or in the content (SOAP 1.2).\n * SOAP version recognition is based on the SOAP namespace included in the payload.\n * This class may throw an unchecked @see org.reficio.ws.client.SoapClientException\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\n@ThreadSafe\npublic final class SoapClient {\n\n    private final static Log log = LogFactory.getLog(SoapClient.class);\n\n    private final static String NULL_SOAP_ACTION = null;\n\n    private int readTimeoutInMillis;\n    private int connectTimeoutInMillis;\n\n    private URI endpointUri;\n    private Security endpointProperties;\n    private boolean endpointTlsEnabled;\n\n    private URI proxyUri;\n    private Security proxyProperties;\n    private boolean proxyTlsEnabled;\n\n    private DefaultHttpClient client;\n\n\n    // ----------------------------------------------------------------\n    // PUBLIC API\n    // ----------------------------------------------------------------\n\n    /**\n     * Post the SOAP message to the SOAP server without specifying the SOAPAction\n     *\n     * @param requestEnvelope SOAP message envelope\n     * @return The result returned by the SOAP server\n     */\n    public String post(String requestEnvelope) {\n        return post(NULL_SOAP_ACTION, requestEnvelope);\n    }\n\n    /**\n     * Post the SOAP message to the SOAP server specifying the SOAPAction\n     *\n     * @param soapAction      SOAPAction attribute\n     * @param requestEnvelope SOAP message envelope\n     * @return The result returned by the SOAP server\n     */\n    public String post(String soapAction, String requestEnvelope) {\n        log.debug(String.format(\"Sending request to host=[%s] action=[%s] request:%n%s\", endpointUri.toString(),\n                soapAction, requestEnvelope));\n        String response = transmit(soapAction, requestEnvelope);\n        log.debug(\"Received response:\\n\" + requestEnvelope);\n        return response;\n    }\n\n    /**\n     * Disconnects from the SOAP server\n     * Underlying connection is a persistent connection by default:\n     *\n     * @link http://docs.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html\n     */\n    public void disconnect() {\n        if (client != null) {\n            client.getConnectionManager().shutdown();\n        }\n    }\n\n    // ----------------------------------------------------------------\n    // TRANSMISSION API\n    // ----------------------------------------------------------------\n    private HttpPost generatePost(String soapAction, String requestEnvelope) {\n        try {\n            HttpPost post = new HttpPost(endpointUri.toString());\n            StringEntity contentEntity = new StringEntity(requestEnvelope);\n            post.setEntity(contentEntity);\n            if (requestEnvelope.contains(SOAP_1_1_NAMESPACE)) {\n                soapAction = soapAction != null ? \"\\\"\" + soapAction + \"\\\"\" : \"\";\n                post.addHeader(PROP_SOAP_ACTION_11, soapAction);\n                post.addHeader(PROP_CONTENT_TYPE, MIMETYPE_TEXT_XML);\n                client.getParams().setParameter(PROP_CONTENT_TYPE, MIMETYPE_TEXT_XML);\n            } else if (requestEnvelope.contains(SOAP_1_2_NAMESPACE)) {\n                String contentType = MIMETYPE_APPLICATION_XML;\n                if (soapAction != null) {\n                    contentType = contentType + PROP_DELIMITER + PROP_SOAP_ACTION_12 + \"\\\"\" + soapAction + \"\\\"\";\n                }\n                post.addHeader(PROP_CONTENT_TYPE, contentType);\n            }\n            return post;\n        } catch (UnsupportedEncodingException ex) {\n            throw new SoapClientException(ex);\n        }\n    }\n\n    private String transmit(String soapAction, String data) {\n        HttpPost post = generatePost(soapAction, data);\n        return executePost(post);\n    }\n\n    private String executePost(HttpPost post) {\n        try {\n            HttpResponse response = client.execute(post);\n            StatusLine statusLine = response.getStatusLine();\n            HttpEntity entity = response.getEntity();\n            if (statusLine.getStatusCode() >= 300) {\n                EntityUtils.consume(entity);\n                throw new TransmissionException(statusLine.getReasonPhrase(), statusLine.getStatusCode());\n            }\n            return entity == null ? null : EntityUtils.toString(entity);\n        } catch (SoapException ex) {\n            throw ex;\n        } catch (ConnectTimeoutException ex) {\n            throw new TransmissionException(\"Connection timed out\", ex);\n        } catch (IOException ex) {\n            throw new TransmissionException(\"Transmission failed\", ex);\n        } catch (RuntimeException ex) {\n            post.abort();\n            throw new TransmissionException(\"Transmission aborted\", ex);\n        }\n    }\n\n    // ----------------------------------------------------------------\n    // INITIALIZATION API\n    // ----------------------------------------------------------------\n    private void initialize() {\n        configureClient();\n        configureAuthentication();\n        configureTls();\n        configureProxy();\n    }\n\n    private void configureClient() {\n        client = new DefaultHttpClient();\n        HttpParams httpParameters = new BasicHttpParams();\n        HttpConnectionParams.setConnectionTimeout(httpParameters, connectTimeoutInMillis);\n        HttpConnectionParams.setSoTimeout(httpParameters, readTimeoutInMillis);\n        client.setParams(httpParameters);\n    }\n\n    private void configureAuthentication() {\n        configureAuthentication(endpointUri, endpointProperties);\n        configureAuthentication(proxyUri, proxyProperties);\n    }\n\n    private void configureAuthentication(URI uri, Security security) {\n        if (security.isAuthEnabled()) {\n            AuthScope scope = new AuthScope(uri.getHost(), uri.getPort());\n            Credentials credentials = null;\n            if (security.isAuthBasic()) {\n                credentials = new UsernamePasswordCredentials(security.getAuthUsername(), security.getAuthPassword());\n            } else if (security.isAuthDigest()) {\n                credentials = new UsernamePasswordCredentials(security.getAuthUsername(), security.getAuthPassword());\n            } else if (security.isAuthNtlm()) {\n                // TODO\n                credentials = new NTCredentials(security.getAuthUsername(), security.getAuthPassword(), null, null);\n            } else if (security.isAuthSpnego()) {\n                // TODO\n            }\n            client.getCredentialsProvider().setCredentials(scope, credentials);\n        }\n    }\n\n    private void configureTls() {\n        SSLSocketFactory factory;\n        int port;\n        try {\n            if (endpointTlsEnabled && proxyTlsEnabled) {\n                factory = SSLUtils.getMergedSocketFactory(endpointProperties, proxyProperties);\n                registerTlsScheme(factory, proxyUri.getPort());\n            } else if (endpointTlsEnabled) {\n                factory = SSLUtils.getFactory(endpointProperties);\n                port = endpointUri.getPort();\n                registerTlsScheme(factory, port);\n            } else if (proxyTlsEnabled) {\n                factory = SSLUtils.getFactory(proxyProperties);\n                port = proxyUri.getPort();\n                registerTlsScheme(factory, port);\n            }\n        } catch (GeneralSecurityException ex) {\n            throw new SoapClientException(ex);\n        }\n    }\n\n    private void registerTlsScheme(SchemeLayeredSocketFactory factory, int port) {\n        Scheme sch = new Scheme(HTTPS, port, factory);\n        client.getConnectionManager().getSchemeRegistry().register(sch);\n    }\n\n    private void configureProxy() {\n        if (proxyUri == null) {\n            return;\n        }\n        if (proxyTlsEnabled) {\n            final HttpHost proxy = new HttpHost(proxyUri.getHost(), proxyUri.getPort(), HTTPS);\n            // https://issues.apache.org/jira/browse/HTTPCLIENT-1318\n            // http://stackoverflow.com/questions/15048102/httprouteplanner-how-does-it-work-with-an-https-proxy\n            // To make the HttpClient talk to a HTTP End-site through an HTTPS Proxy, the route should be secure,\n            //  but there should not be any Tunnelling or Layering.\n            if (!endpointTlsEnabled) {\n                client.setRoutePlanner(new HttpRoutePlanner() {\n                    @Override\n                    public HttpRoute determineRoute(HttpHost target, HttpRequest request, HttpContext context) {\n                        return new HttpRoute(target, null, proxy, true, RouteInfo.TunnelType.PLAIN, RouteInfo.LayerType.PLAIN);\n                    }\n                });\n            }\n            client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);\n        } else {\n            HttpHost proxy = new HttpHost(proxyUri.getHost(), proxyUri.getPort());\n            client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);\n        }\n    }\n\n\n    // ----------------------------------------------------------------\n    // BUILDER API\n    // ----------------------------------------------------------------\n    private SoapClient() {\n    }\n\n    /**\n     * Builder to construct a properly populated SoapClient\n     */\n    public static class Builder {\n\n        private Integer readTimeoutInMillis = INFINITE_TIMEOUT;\n        private Integer connectTimeoutInMillis = INFINITE_TIMEOUT;\n\n        private URI endpointUri;\n        private Security endpointProperties;\n        private boolean endpointTlsEnabled;\n\n        private URI proxyUri;\n        private Security proxyProperties;\n        private boolean proxyTlsEnabled;\n\n        /**\n         * @param value URL of the SOAP endpoint to whom the client should send messages. Null is not accepted.\n         * @return builder\n         */\n        public Builder endpointUri(String value) {\n            checkNotNull(value);\n            try {\n                URI uri = new URI(value);\n                return endpointUri(uri);\n            } catch (URISyntaxException ex) {\n                throw new SoapClientException(String.format(\"URI [%s] is malformed\", value), ex);\n            }\n        }\n\n        /**\n         * @param value URL of the SOAP endpoint to whom the client should send messages. Null is not accepted.\n         * @return builder\n         */\n        public Builder endpointUri(URI value) {\n            endpointUri = checkNotNull(value);\n            endpointTlsEnabled = value.getScheme().equalsIgnoreCase(HTTPS);\n            return this;\n        }\n\n        /**\n         * @param value URL of the SOAP endpoint to whom the client should send messages. Null is not accepted.\n         * @return builder\n         */\n        public Builder proxyUri(String value) {\n            checkNotNull(value);\n            try {\n                URI uri = new URI(value);\n                return proxyUri(uri);\n            } catch (URISyntaxException ex) {\n                throw new SoapClientException(String.format(\"URI [%s] is malformed\", value), ex);\n            }\n        }\n\n        /**\n         * @param value URL of the SOAP endpoint to whom the client should send messages. Null is not accepted.\n         * @return builder\n         */\n        public Builder proxyUri(URI value) {\n            proxyUri = checkNotNull(value);\n            proxyTlsEnabled = value.getScheme().equalsIgnoreCase(HTTPS);\n            return this;\n        }\n\n        public Builder endpointSecurity(Security value) {\n            this.endpointProperties = checkNotNull(value);\n            return this;\n        }\n\n        public Builder proxySecurity(Security value) {\n            this.proxyProperties = checkNotNull(value);\n            return this;\n        }\n\n        /**\n         * @param value Specifies the timeout in millisecond for the read operation. Has to be not negative.\n         * @return builder\n         */\n        public Builder readTimeoutInMillis(int value) {\n            checkArgument(value >= 0);\n            readTimeoutInMillis = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the timeout in millisecond for the connect operation. Has to be not negative.\n         * @return builder\n         */\n        public Builder connectTimeoutInMillis(int value) {\n            checkArgument(value >= 0);\n            connectTimeoutInMillis = value;\n            return this;\n        }\n\n        /**\n         * Constructs properly populated soap client\n         *\n         * @return properly populated soap clients\n         */\n        public SoapClient build() {\n            return initializeClient();\n        }\n\n        private SoapClient initializeClient() {\n            SoapClient client = new SoapClient();\n            client.endpointUri = endpointUri;\n            if (endpointProperties == null) {\n                endpointProperties = Security.builder().build();\n            }\n            client.endpointProperties = endpointProperties;\n            client.endpointTlsEnabled = endpointTlsEnabled;\n\n            client.proxyUri = proxyUri;\n            if (proxyProperties == null) {\n                proxyProperties = Security.builder().build();\n            }\n            client.proxyProperties = proxyProperties;\n            client.proxyTlsEnabled = proxyTlsEnabled;\n\n            client.readTimeoutInMillis = readTimeoutInMillis;\n            client.connectTimeoutInMillis = connectTimeoutInMillis;\n\n            client.initialize();\n            return client;\n        }\n    }\n\n    /**\n     * @return a new instance of a SoapClient Builder\n     */\n    public static Builder builder() {\n        return new Builder();\n    }\n\n}"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/core/SoapClientFactory.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.core;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapClientFactory {\n\n    private String endpointUri;\n    private Security endpointSecurity;\n\n    private String proxyUri;\n    private Security proxySecurity;\n\n    private Integer readTimeoutInMillis;\n    private Integer connectTimeoutInMillis;\n\n    public String getEndpointUri() {\n        return endpointUri;\n    }\n\n    public void setEndpointUri(String endpointUri) {\n        this.endpointUri = endpointUri;\n    }\n\n    public String getProxyUri() {\n        return proxyUri;\n    }\n\n    public void setProxyUri(String proxyUri) {\n        this.proxyUri = proxyUri;\n    }\n\n    public Integer getReadTimeoutInMillis() {\n        return readTimeoutInMillis;\n    }\n\n    public void setReadTimeoutInMillis(Integer readTimeoutInMillis) {\n        this.readTimeoutInMillis = readTimeoutInMillis;\n    }\n\n    public Integer getConnectTimeoutInMillis() {\n        return connectTimeoutInMillis;\n    }\n\n    public void setConnectTimeoutInMillis(Integer connectTimeoutInMillis) {\n        this.connectTimeoutInMillis = connectTimeoutInMillis;\n    }\n\n    public Security getEndpointSecurity() {\n        return endpointSecurity;\n    }\n\n    public void setEndpointSecurity(Security endpointSecurity) {\n        this.endpointSecurity = endpointSecurity;\n    }\n\n    public Security getProxySecurity() {\n        return proxySecurity;\n    }\n\n    public void setProxySecurity(Security proxySecurity) {\n        this.proxySecurity = proxySecurity;\n    }\n\n    public SoapClient create() {\n        SoapClient.Builder builder = SoapClient.builder();\n\n        if (endpointUri != null) {\n            builder.endpointUri(endpointUri);\n        }\n        if (proxyUri != null) {\n            builder.proxyUri(proxyUri);\n        }\n        if (readTimeoutInMillis != null) {\n            builder.readTimeoutInMillis(readTimeoutInMillis);\n        }\n        if (connectTimeoutInMillis != null) {\n            builder.connectTimeoutInMillis(connectTimeoutInMillis);\n        }\n        if (endpointSecurity != null) {\n            builder.endpointSecurity(endpointSecurity);\n        }\n        if (proxySecurity != null) {\n            builder.proxySecurity(proxySecurity);\n        }\n        return builder.build();\n    }\n\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/core/SoapConstants.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.core;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\nfinal class SoapConstants {\n\n    private SoapConstants() {\n    }\n\n    public final static String\n            HTTP = \"HTTP\",\n            HTTPS = \"HTTPS\";\n\n    public final static String\n            GET = \"GET\",\n            POST = \"POST\",\n            HEAD = \"HEAD\",\n            PUT = \"PUT\",\n            OPTIONS = \"OPTIONS\",\n            DELETE = \"DELETE\";\n\n    public final static String\n            MIMETYPE_TEXT_HTML = \"text/html\",\n            MIMETYPE_TEXT_PLAIN = \"text/plain\",\n            MIMETYPE_TEXT_XML = \"text/xml\",\n            MIMETYPE_APPLICATION_XML = \"application/soap+xml\";\n\n    public final static String\n            PROP_SOAP_ACTION_11 = \"SOAPAction\",\n            PROP_SOAP_ACTION_12 = \"action=\",\n            PROP_CONTENT_TYPE = \"Content-Type\",\n            PROP_CONTENT_LENGTH = \"Content-Length\",\n            PROP_AUTH = \"Authorization\",\n            PROP_PROXY_AUTH = \"Proxy-Authorization\",\n            PROP_PROXY_CONN = \"Proxy-Connection\",\n            PROP_KEEP_ALIVE = \"Keep-Alive\",\n            PROP_BASIC_AUTH = \"Basic\",\n            PROP_DELIMITER = \"; \";\n\n\n    public final static String\n            SOAP_1_1_NAMESPACE = \"http://schemas.xmlsoap.org/soap/envelope/\",\n            SOAP_1_2_NAMESPACE = \"http://www.w3.org/2003/05/soap-envelope\";\n\n    public final static String\n            SSL_CONTEXT_PROTOCOL = \"SSLv3\",\n            TLS_CONTEXT = \"TLS\",\n            JKS_KEYSTORE = \"JKS\";\n\n    public final static int\n            INFINITE_TIMEOUT = 0;\n\n    public static enum AuthMethod {\n        NONE, BASIC, DIGEST, NTLM, SPNEGO;\n    }\n\n}\n"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/ssl/MultiX509TrustManager.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.ssl;\n\nimport javax.net.ssl.X509TrustManager;\nimport java.security.cert.CertificateException;\nimport java.security.cert.X509Certificate;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class MultiX509TrustManager implements X509TrustManager {\n\n    private final List<X509TrustManager> managers;\n\n    public MultiX509TrustManager(List<X509TrustManager> managers) {\n        this.managers = new ArrayList<X509TrustManager>(managers);\n    }\n\n    @Override\n    public void checkClientTrusted(X509Certificate[] x509Certificates, String authType) throws CertificateException {\n        List<CertificateException> exceptions = new ArrayList<CertificateException>();\n        try {\n            for (X509TrustManager manager : managers) {\n                manager.checkClientTrusted(x509Certificates, authType);\n            }\n        } catch (CertificateException ex) {\n            exceptions.add(ex);\n        }\n        if (exceptions.size() >= managers.size()) {\n            throw exceptions.iterator().next();\n        }\n    }\n\n    @Override\n    public void checkServerTrusted(X509Certificate[] x509Certificates, String authType) throws CertificateException {\n        List<CertificateException> exceptions = new ArrayList<CertificateException>();\n        try {\n            for (X509TrustManager manager : managers) {\n                manager.checkServerTrusted(x509Certificates, authType);\n            }\n        } catch (CertificateException ex) {\n            exceptions.add(ex);\n        }\n        if (exceptions.size() >= managers.size()) {\n            throw exceptions.iterator().next();\n        }\n    }\n\n    @Override\n    public X509Certificate[] getAcceptedIssuers() {\n        List<X509Certificate> certs = new ArrayList<X509Certificate>();\n        for (X509TrustManager manager : managers) {\n            for (X509Certificate cert : manager.getAcceptedIssuers()) {\n                certs.add(cert);\n            }\n        }\n        return certs.toArray(new X509Certificate[]{});\n    }\n}"
  },
  {
    "path": "soap-client/src/main/java/org/reficio/ws/client/ssl/SSLUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client.ssl;\n\nimport org.apache.http.conn.ssl.SSLSocketFactory;\nimport org.apache.http.conn.ssl.X509HostnameVerifier;\nimport org.reficio.ws.client.core.Security;\n\nimport javax.net.ssl.*;\nimport java.security.*;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class SSLUtils {\n\n    public static X509TrustManager getTrustManager(KeyStore trustStore) throws NoSuchAlgorithmException, KeyStoreException {\n        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());\n        trustManagerFactory.init(trustStore);\n        return (X509TrustManager) trustManagerFactory.getTrustManagers()[0];\n    }\n\n    public static X509KeyManager getKeyManager(KeyStore keyStore, char[] keyStorePassword) throws NoSuchAlgorithmException, KeyStoreException, UnrecoverableKeyException {\n        KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());\n        keyManagerFactory.init(keyStore, keyStorePassword);\n        return (X509KeyManager) keyManagerFactory.getKeyManagers()[0];\n    }\n\n    public static X509TrustManager getMultiTrustManager(X509TrustManager... managers) {\n        List<X509TrustManager> managersList = new ArrayList<X509TrustManager>();\n        for (X509TrustManager manager : managers) {\n            managersList.add(manager);\n        }\n        return new MultiX509TrustManager(managersList);\n    }\n\n    public static SSLSocketFactory getMergedSocketFactory(org.reficio.ws.client.core.Security securityOne, Security securityTwo) throws GeneralSecurityException {\n        X509KeyManager keyManagerOne = getKeyManager(securityOne.getKeyStore(), securityOne.getKeyStorePassword());\n        X509KeyManager keyManagerTwo = getKeyManager(securityTwo.getKeyStore(), securityTwo.getKeyStorePassword());\n\n        X509TrustManager trustManager = getMultiTrustManager(\n                getTrustManager(securityOne.getTrustStore()),\n                getTrustManager(securityTwo.getTrustStore())\n        );\n\n        SSLContext context = SSLContext.getInstance(securityOne.getSslContextProtocol());\n        boolean strictHostVerification = securityOne.isStrictHostVerification() && securityTwo.isStrictHostVerification();\n\n        context.init(new KeyManager[]{keyManagerOne, keyManagerTwo}, new TrustManager[]{trustManager}, new SecureRandom());\n        X509HostnameVerifier verifier = strictHostVerification ?\n                SSLSocketFactory.STRICT_HOSTNAME_VERIFIER : SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;\n        return new SSLSocketFactory(context, verifier);\n    }\n\n    public static SSLSocketFactory getFactory(Security security) throws GeneralSecurityException {\n        X509HostnameVerifier verifier = security.isStrictHostVerification() ?\n                SSLSocketFactory.STRICT_HOSTNAME_VERIFIER : SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;\n        SSLSocketFactory socketFactory = new SSLSocketFactory(security.getSslContextProtocol(),\n                security.getKeyStore(), security.getKeyStorePasswordAsString(),\n                security.getTrustStore(), new SecureRandom(), null, verifier);\n        return socketFactory;\n    }\n\n\n}\n"
  },
  {
    "path": "soap-client/src/test/java/org/reficio/ws/client/SimpleClientTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.client;\n\nimport org.hamcrest.core.AnyOf;\nimport org.hamcrest.core.StringContains;\nimport org.junit.Ignore;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.reficio.ws.client.core.SoapClient;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SimpleClientTest {\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    @Ignore\n    @Test(timeout = 10000)\n    public void connectTimeout() {\n        exception.expect(TransmissionException.class);\n        exception.expectMessage(AnyOf.anyOf(\n                StringContains.containsString(\"failed\"),\n                StringContains.containsString(\"timed out\"))\n        );\n\n        SoapClient client = SoapClient.builder()\n                .endpointUri(\"http://test.ch:9999\")\n                .connectTimeoutInMillis(1000)\n                .build();\n        client.post(\"<xml/>\");\n    }\n\n}\n"
  },
  {
    "path": "soap-client/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <!-- Appenders -->\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.reficio\">\n        <level value=\"error\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <!-- Root Logger -->\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-common/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-common</artifactId>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.9</version>\n        </dependency>\n        <dependency>\n            <groupId>wsdl4j</groupId>\n            <artifactId>wsdl4j</artifactId>\n            <version>1.6.2</version>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>xmlunit</groupId>\n            <artifactId>xmlunit</artifactId>\n            <version>1.3</version>\n        </dependency>\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/SoapBuilderException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws;\n\n/**\n * Default exception thrown by the SoapBuilder.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapBuilderException extends SoapException {\n    public SoapBuilderException(String message) {\n        super(message);\n    }\n\n    public SoapBuilderException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public SoapBuilderException(Throwable cause) {\n        super(cause.getMessage(), cause);\n    }\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/SoapContext.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws;\n\nimport javax.xml.namespace.QName;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * Specifies the context of the SOAP message generation.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapContext {\n\n    public final static SoapContext DEFAULT = SoapContext.builder().build();\n    public final static SoapContext NO_CONTENT = SoapContext.builder().exampleContent(false).build();\n\n    /**\n     * Generates comments with type information in new requests\n     */\n    private final boolean typeComments;\n    private final boolean valueComments;\n    private final boolean exampleContent;\n    private final boolean buildOptional;\n    private final boolean alwaysBuildHeaders;\n\n    /*\n     * A list of XML-Schema types and global elements in the form of name@namespace which\n     * will be excluded when generating sample requests and responses and input forms.\n     * By default the XML-Schema root element is added since it is quite common in .NET\n     * services and generates a sample xml fragment of about 300 kb!.\n     */\n    private final Set<QName> excludedTypes;\n    private final SoapMultiValuesProvider multiValuesProvider;\n\n    /**\n     * Constructor mainly for SpringFramework purposes, in any other case use the fluent builder interface;\n     * #see builder() method\n     *\n     * @param exampleContent\n     * @param typeComments\n     * @param valueComments\n     * @param buildOptional\n     * @param alwaysBuildHeaders\n     * @param excludedTypes\n     */\n    public SoapContext(boolean exampleContent, boolean typeComments, boolean valueComments,\n                       boolean buildOptional, boolean alwaysBuildHeaders,\n                       Set<QName> excludedTypes, SoapMultiValuesProvider multiValuesProvider) {\n        this.exampleContent = exampleContent;\n        this.typeComments = typeComments;\n        this.valueComments = valueComments;\n        this.buildOptional = buildOptional;\n        this.alwaysBuildHeaders = alwaysBuildHeaders;\n        this.excludedTypes = new HashSet<QName>(excludedTypes);\n        this.multiValuesProvider = multiValuesProvider;\n    }\n\n    /**\n     * Constructor mainly for SpringFramework purposes, in any other case use the fluent builder interface;\n     * #see builder() method\n     *\n     * @param exampleContent\n     * @param typeComments\n     * @param valueComments\n     * @param buildOptional\n     * @param alwaysBuildHeaders\n     */\n    public SoapContext(boolean exampleContent, boolean typeComments, boolean valueComments,\n                       boolean buildOptional, boolean alwaysBuildHeaders) {\n        this.exampleContent = exampleContent;\n        this.typeComments = typeComments;\n        this.valueComments = valueComments;\n        this.buildOptional = buildOptional;\n        this.alwaysBuildHeaders = alwaysBuildHeaders;\n        this.excludedTypes = new HashSet<QName>();\n        this.multiValuesProvider = null;\n    }\n\n    public boolean isBuildOptional() {\n        return buildOptional;\n    }\n\n    public boolean isAlwaysBuildHeaders() {\n        return alwaysBuildHeaders;\n    }\n\n    public boolean isExampleContent() {\n        return exampleContent;\n    }\n\n    public boolean isTypeComments() {\n        return typeComments;\n    }\n\n    public boolean isValueComments() {\n        return valueComments;\n    }\n\n    public Set<QName> getExcludedTypes() {\n        return new HashSet<QName>(excludedTypes);\n    }\n\n    public SoapMultiValuesProvider getMultiValuesProvider() {\n        return multiValuesProvider;\n    }\n\n    public static ContextBuilder builder() {\n        return new ContextBuilder();\n    }\n\n    public static class ContextBuilder {\n        private boolean exampleContent = true;\n        private boolean typeComments = false;\n        private boolean valueComments = false;\n        private boolean buildOptional = true;\n        private boolean alwaysBuildHeaders = true;\n        private Set<QName> excludedTypes = new HashSet<QName>();\n        private SoapMultiValuesProvider multiValuesProvider = null;\n\n        /**\n         * Specifies if to generate example SOAP message content\n         *\n         * @param value\n         * @return builder\n         */\n        public ContextBuilder exampleContent(boolean value) {\n            this.exampleContent = value;\n            return this;\n        }\n\n        /**\n         * Specifies if to generate SOAP message type comments\n         *\n         * @param value\n         * @return builder\n         */\n        public ContextBuilder typeComments(boolean value) {\n            this.typeComments = value;\n            return this;\n        }\n\n        /**\n         * Specifies if to skip SOAP message comments\n         *\n         * @param value\n         * @return builder\n         */\n        public ContextBuilder valueComments(boolean value) {\n            this.valueComments = value;\n            return this;\n        }\n\n        /**\n         * Specifies if to generate content for elements marked as optional\n         *\n         * @param value\n         * @return builder\n         */\n        public ContextBuilder buildOptional(boolean value) {\n            this.buildOptional = value;\n            return this;\n        }\n\n        /**\n         * Specifies if to always build SOAP headers\n         *\n         * @param value\n         * @return builder\n         */\n        public ContextBuilder alwaysBuildHeaders(boolean value) {\n            this.alwaysBuildHeaders = value;\n            return this;\n        }\n\n        /**\n         * A list of XML-Schema types and global elements in the form of name@namespace which\n         * will be excluded when generating sample requests and responses and input forms.\n         * By default the XML-Schema root element is added since it is quite common in .NET\n         * services and generates a sample xml fragment of about 300 kb!.\n         *\n         * @param excludedTypes\n         * @return builder\n         */\n        public ContextBuilder excludedTypes(Set<QName> excludedTypes) {\n            this.excludedTypes = new HashSet<QName>(excludedTypes);\n            return this;\n        }\n\n        public ContextBuilder multiValuesProvider(SoapMultiValuesProvider multiValuesProvider) {\n            this.multiValuesProvider = multiValuesProvider;\n            return this;\n        }\n\n        /**\n         * Builds populated context instance\n         *\n         * @return fully populated soap context\n         */\n        public SoapContext build() {\n            return new SoapContext(exampleContent, typeComments, valueComments,\n                    buildOptional, alwaysBuildHeaders, excludedTypes, multiValuesProvider);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/SoapException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws;\n\n/**\n * Top-level exception type thrown by soap-ws\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapException extends RuntimeException {\n    public SoapException(String s) {\n        super(s);\n    }\n\n    public SoapException(String s, Throwable throwable) {\n        super(s, throwable);\n    }\n\n    public SoapException(Throwable throwable) {\n        super(throwable.getMessage(), throwable);\n    }\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/SoapMultiValuesProvider.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws;\n\nimport javax.xml.namespace.QName;\nimport java.util.Set;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapMultiValuesProvider {\n\n    Set<String> getMultiValues(QName name);\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/SoapValidationException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * Default exception thrown by the SoapBuilder.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapValidationException extends SoapException {\n\n    private final List<AssertionError> errors;\n\n    public SoapValidationException(List<AssertionError> errors) {\n        super(\"Message validation failed with \" + errors.size() + \" error(s)\\n\" + errors);\n        this.errors = errors;\n    }\n\n    public List<AssertionError> getErrors() {\n        return new ArrayList<AssertionError>(errors);\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/annotation/ThreadSafe.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.annotation;\n\nimport java.lang.annotation.*;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\n@Documented\n@Target(value = ElementType.TYPE)\n@Retention(value = RetentionPolicy.CLASS)\npublic @interface ThreadSafe {\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/common/FileWriter.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport java.io.File;\nimport java.io.IOException;\n\n/**\n * This class was taken from Axis2 code. It's a Wsdl11Writer dependency.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\nclass FileWriter {\n\n    /**\n     * Creates/ returns a file object\n     *\n     * @param rootLocation - Location to be written\n     * @param packageName  - package, can be '.' separated\n     * @param fileName     name of the file\n     * @param extension    type of the file, java, cpp etc\n     * @return the File that was created\n     * @throws java.io.IOException\n     * @throws Exception\n     */\n    public File createClassFile(File rootLocation, String packageName, String fileName, String extension) throws IOException,\n            Exception {\n        File returnFile = null;\n        File root = rootLocation;\n\n        if (packageName != null) {\n            String directoryNames[] = packageName.split(\"\\\\.\");\n            File tempFile = null;\n            int length = directoryNames.length;\n            for (int i = 0; i < length; i++) {\n                tempFile = new File(root, directoryNames[i]);\n                root = tempFile;\n                if (!tempFile.exists()) {\n                    tempFile.mkdir();\n                }\n            }\n        }\n\n        if ((extension != null) && !fileName.endsWith(extension)) {\n            fileName = fileName + extension;\n        }\n\n        returnFile = new File(root, fileName);\n        if (!returnFile.exists()) {\n            // returnFile.createNewFile();\n        }\n        return returnFile;\n    }\n\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/common/ResourceUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport org.apache.commons.io.FilenameUtils;\n\nimport java.io.InputStream;\nimport java.net.URL;\n\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\n\n/**\n * Loads resources from the classpath in a relatively seamless way.<br/>\n * Simplifies the Java API for resource loading.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class ResourceUtils {\n\n    public static URL getResourceWithAbsolutePackagePath(String absolutePackagePath, String resourceName) {\n        return getResourceWithAbsolutePackagePath(ResourceUtils.class, absolutePackagePath, resourceName);\n    }\n\n    private static class Path {\n        String packagePath = \"\";\n        String resourcePath = \"\";\n    }\n\n    private static String getFullPath(String resourcePath) {\n        int linuxIndex = resourcePath.lastIndexOf(\"/\");\n        int windowsIndex = resourcePath.lastIndexOf(\"\\\\\");\n        int index = Math.max(linuxIndex, windowsIndex);\n        if (index < 0) {\n            return \"\";\n        }\n        return resourcePath.substring(0, index);\n    }\n\n    private static Path parsePath(String resourcePath) {\n        checkNotNull(resourcePath, \"resourcePath cannot be null\");\n        Path path = new Path();\n        path.packagePath = getFullPath(resourcePath);\n        path.resourcePath = FilenameUtils.getName(resourcePath);\n        return path;\n    }\n\n    public static URL getResource(String resourcePath) {\n        Path path = parsePath(resourcePath);\n        return getResourceWithAbsolutePackagePath(path.packagePath, path.resourcePath);\n    }\n\n    public static URL getResource(Class<?> clazz, String resourcePath) {\n        Path path = parsePath(resourcePath);\n        return getResourceWithAbsolutePackagePath(clazz, path.packagePath, path.resourcePath);\n    }\n\n    public static InputStream getResourceAsStream(String resourcePath) {\n        Path path = parsePath(resourcePath);\n        return getResourceWithAbsolutePackagePathAsStream(path.packagePath, path.resourcePath);\n    }\n\n    public static InputStream getResourceAsStream(Class<?> clazz, String resourcePath) {\n        Path path = parsePath(resourcePath);\n        return getResourceWithAbsolutePackagePathAsStream(clazz, path.packagePath, path.resourcePath);\n    }\n\n    public static URL getResourceWithAbsolutePackagePath(Class<?> clazz, String absolutePackagePath, String resourceName) {\n        checkNotNull(clazz, \"clazz cannot be null\");\n        String resourcePath = getResourcePath(absolutePackagePath, resourceName);\n        URL resource = null;\n        // first attempt - outside/inside jar file\n        resource = clazz.getClass().getResource(resourcePath);\n        // second attempt - servlet container - inside application lib folder\n        if (resource == null) {\n            if (resourcePath.charAt(0) == '/') {\n                String resourcePathWithoutLeadingSlash = resourcePath.substring(1);\n                resource = Thread.currentThread().getContextClassLoader().getResource(resourcePathWithoutLeadingSlash);\n            }\n        }\n        checkArgument(resource != null, String.format(\"Resource [%s] loading failed\", resourcePath));\n        return resource;\n    }\n\n    public static InputStream getResourceWithAbsolutePackagePathAsStream(String absolutePackagePath, String resourceName) {\n        return getResourceWithAbsolutePackagePathAsStream(ResourceUtils.class, absolutePackagePath, resourceName);\n    }\n\n    public static InputStream getResourceWithAbsolutePackagePathAsStream(Class<?> clazz, String absolutePackagePath, String resourceName) {\n        checkNotNull(clazz, \"clazz cannot be null\");\n        String resourcePath = getResourcePath(absolutePackagePath, resourceName);\n        InputStream resource = null;\n        // first attempt - outside/inside jar file\n        resource = clazz.getClass().getResourceAsStream(resourcePath);\n        // second attempt - servlet container - inside application lib folder\n        if (resource == null) {\n            ClassLoader classLoader = clazz.getClass().getClassLoader();\n            if (classLoader != null)\n                resource = classLoader.getResourceAsStream(resourcePath);\n        }\n        checkArgument(resource != null, String.format(\"Resource [%s] loading failed\", resourcePath));\n        return resource;\n    }\n\n    private static String getResourcePath(String absolutePackagePath, String resourceName) {\n        checkNotNull(absolutePackagePath, \"absolutePackagePath cannot be null\");\n        checkNotNull(resourceName, \"resourceName cannot be null\");\n        absolutePackagePath = formatArgument(absolutePackagePath);\n        resourceName = formatArgument(resourceName);\n        return constructResourcePath(absolutePackagePath, resourceName);\n    }\n\n    private static String formatArgument(String argument) {\n        String argumentWithoutWhiteSpaces = argument.trim();\n        return argumentWithoutWhiteSpaces;\n    }\n\n    private static String constructResourcePath(String packagePath, String resourceName) {\n        String resourcePath = String.format(\"/%s/%s\", packagePath, resourceName);\n        String resourcePathUnixSeparators = FilenameUtils.separatorsToUnix(resourcePath);\n        String resourcePathNoLeadingSeparators = removeLeadingUnixSeparators(resourcePathUnixSeparators);\n        String normalizedResourcePath = FilenameUtils.normalizeNoEndSeparator(resourcePathNoLeadingSeparators, true);\n        return normalizedResourcePath;\n    }\n\n    private static String removeLeadingUnixSeparators(String argument) {\n        return argument.replaceAll(\"/+\", \"/\");\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/common/SimpleValuesProvider.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport org.reficio.ws.SoapMultiValuesProvider;\n\nimport javax.xml.namespace.QName;\nimport java.util.HashMap;\nimport java.util.HashSet;\nimport java.util.Map;\nimport java.util.Set;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SimpleValuesProvider implements SoapMultiValuesProvider {\n\n    private Map<QName, Set<String>> multiValues;\n\n    public SimpleValuesProvider() {\n        multiValues = new HashMap<QName, Set<String>>();\n    }\n\n    public SimpleValuesProvider(Map<QName, Set<String>> multiValues) {\n        multiValues = new HashMap<QName, Set<String>>();\n        for (Map.Entry<QName, Set<String>> entry : multiValues.entrySet()) {\n            multiValues.put(entry.getKey(), new HashSet<String>(entry.getValue()));\n        }\n    }\n\n    @Override\n    public Set<String> getMultiValues(QName name) {\n        Set<String> result = multiValues.get(name);\n        return result != null ? result : new HashSet<String>();\n    }\n\n    public void addMultiValues(QName name, Set<String> values) {\n        multiValues.put(name, new HashSet<String>(values));\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/common/Wsdl11Writer.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\n\nimport com.ibm.wsdl.util.xml.DOM2Writer;\nimport org.reficio.ws.SoapException;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.NamedNodeMap;\nimport org.w3c.dom.Node;\nimport org.w3c.dom.NodeList;\n\nimport javax.wsdl.Definition;\nimport javax.wsdl.Import;\nimport javax.wsdl.Service;\nimport javax.wsdl.Types;\nimport javax.wsdl.extensions.schema.Schema;\nimport javax.wsdl.extensions.schema.SchemaImport;\nimport javax.wsdl.extensions.schema.SchemaReference;\nimport javax.wsdl.factory.WSDLFactory;\nimport javax.wsdl.xml.WSDLWriter;\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.util.*;\n\n/**\n * This class was taken from Axis2 code. It's main responsibility is to marshall wsdl4j Definition instance back into the XML format.\n * By default it only marshalled the WSDL hierarchy. It was adjusted in such a way that it recursively marshalls XSD schemas as well.<p></p>\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class Wsdl11Writer {\n\n    public static final String IMPORT_TAG = \"import\";\n    public static final String INCLUDE_TAG = \"include\";\n    public static final String SCHEMA_LOCATION = \"schemaLocation\";\n\n    private File baseFolder = null;\n    private int count;\n\n    public Wsdl11Writer(File baseFolder) {\n        this.baseFolder = baseFolder;\n        this.count = 0;\n    }\n\n    public void writeWSDL(String name, Definition definition) {\n        try {\n            Map<String, String> baseURIwsdlNameMap = new HashMap<String, String>();\n            // add the initial definition to the map\n            baseURIwsdlNameMap.put(definition.getDocumentBaseURI(), name + \".wsdl\");\n            writeWSDL(definition, name + \".wsdl\", new HashMap<String, String>(), baseURIwsdlNameMap);\n        } catch (Exception e) {\n            throw new SoapException(\"WSDL writing failed!\", e);\n        }\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void writeWSDL(Definition definition,\n                           String fileName,\n                           Map<String, String> changedMap,\n                           Map baseURIwsdlNameMap) throws Exception {\n\n        // first process the imports and save them.\n        Map imports = definition.getImports();\n        if (imports != null && (imports.size() > 0)) {\n            Vector importsVector = null;\n            Import wsdlImport = null;\n            String wsdlName = null;\n            String wsdlLocation = null;\n            for (Iterator improtsVectorIter = imports.values().iterator();\n                 improtsVectorIter.hasNext(); ) {\n                importsVector = (Vector) improtsVectorIter.next();\n                for (Iterator importsIter = importsVector.iterator(); importsIter.hasNext(); ) {\n                    wsdlImport = (Import) importsIter.next();\n                    wsdlLocation = wsdlImport.getDefinition().getDocumentBaseURI();\n                    // we have to process this wsdl file only if it has not been processed earlier\n                    if (!baseURIwsdlNameMap.containsKey(wsdlLocation)) {\n                        wsdlName = wsdlLocation.substring(wsdlLocation.lastIndexOf('/') + 1);\n                        if (!wsdlName.endsWith(\".wsdl\") && !wsdlName.endsWith(\".xsd\")) {\n                            // this seems to be an online wsdl so we generate a dummy name\n                            if (wsdlName.indexOf(\"xsd\") > -1) {\n                                wsdlName = \"xsd\" + count++ + \".xsd\";\n                            } else {\n                                wsdlName = \"wsdl\" + count++ + \".wsdl\";\n                            }\n                        }\n\n                        //trim the wsdl part\n                        while (baseURIwsdlNameMap.containsValue(wsdlName)) {\n                            // import file name can either be xsd or wsdl\n                            String fileNamePart = wsdlName.substring(0, wsdlName.lastIndexOf(\".\"));\n                            String extension = wsdlName.substring(wsdlName.lastIndexOf(\".\"));\n                            wsdlName = fileNamePart + count++ + extension;\n                        }\n                        wsdlName = normalizeName(wsdlName);\n                        baseURIwsdlNameMap.put(wsdlLocation, wsdlName);\n                        Definition innerDefinition = wsdlImport.getDefinition();\n                        writeWSDL(innerDefinition, wsdlName, changedMap, baseURIwsdlNameMap);\n                    }\n\n                    wsdlImport.setLocationURI((String) baseURIwsdlNameMap.get(wsdlLocation));\n                }\n            }\n        }\n        // change the locations on the imported schemas\n        processSchemas(definition, changedMap);\n        // finally save the file\n        WSDLWriter wsdlWriter = WSDLFactory.newInstance().newWSDLWriter();\n        // wsdlWriter.setFeature(\"javax.wsdl.xml.parseXMLSchemas\", true);\n        File outputFile = new FileWriter().createClassFile(baseFolder, null, fileName, null);\n        FileOutputStream out = new FileOutputStream(outputFile);\n\n        // we have a catch here\n        // if there are multimple services in the definition object\n        // we have to write only the relavent service.\n\n\n        if (definition.getServices().size() > 1) {\n            List removedServices = new ArrayList();\n            List servicesList = new ArrayList();\n\n            Map services = definition.getServices();\n            // populate the services list\n            for (Iterator iter = services.values().iterator(); iter.hasNext(); ) {\n                servicesList.add(iter.next());\n            }\n            Service service;\n            String serviceNameFromFileName = fileName;\n            if (fileName.indexOf(\".wsdl\") > -1) {\n                serviceNameFromFileName = fileName.substring(0, fileName.lastIndexOf(\".wsdl\"));\n            }\n\n            if (fileName.indexOf(\".xsd\") > -1) {\n                serviceNameFromFileName = fileName.substring(0, fileName.lastIndexOf(\".xsd\"));\n            }\n            for (Iterator iter = servicesList.iterator(); iter.hasNext(); ) {\n                service = (Service) iter.next();\n                if (!service.getQName().getLocalPart().equals(serviceNameFromFileName)) {\n                    definition.removeService(service.getQName());\n                    removedServices.add(service);\n                }\n            }\n\n            //now we have only the required service so write it\n            wsdlWriter.writeWSDL(definition, out);\n\n            // again add the removed services\n            for (Iterator iter = removedServices.iterator(); iter.hasNext(); ) {\n                service = (Service) iter.next();\n                definition.addService(service);\n            }\n        } else {\n            // no problem proceed normaly\n            wsdlWriter.writeWSDL(definition, out);\n        }\n        out.flush();\n        out.close();\n    }\n\n    /**\n     * adjust the schema locations in the original wsdl\n     *\n     * @param definition\n     * @param changedSchemaLocations\n     */\n    private void processSchemas(Definition definition, Map<String, String> changedSchemaLocations) {\n        Types wsdlTypes = definition.getTypes();\n        if (wsdlTypes != null) {\n            List extensibilityElements = wsdlTypes.getExtensibilityElements();\n            for (Iterator iter = extensibilityElements.iterator(); iter.hasNext(); ) {\n                Object currentObject = iter.next();\n                if (currentObject instanceof Schema) {\n                    Schema schema = (Schema) currentObject;\n                    processSchema(definition, schema, null, changedSchemaLocations);\n                }\n            }\n        }\n    }\n\n\n    private void processSchema(Definition definition, Schema schema, String fileName, Map<String, String> changedSchemaLocations) {\n        try {\n            if (schema.getIncludes() != null) {\n                for (Object o : schema.getIncludes()) {\n                    if (o instanceof SchemaReference) {\n                        SchemaReference ref = (SchemaReference) o;\n                        String fileNameChild = normalizeName(ref.getSchemaLocationURI());\n                        Schema includedSchema = ref.getReferencedSchema();\n                        if (includedSchema == null) {\n                            continue;\n                        }\n                        changedSchemaLocations.put(ref.getSchemaLocationURI(), fileNameChild);\n                        processSchema(definition, includedSchema, fileNameChild, changedSchemaLocations);\n                    }\n                }\n            }\n            if (schema.getImports() != null && schema.getImports().values() != null) {\n                for (Object o : schema.getImports().values()) {\n                    for (Object oi : (Vector) o) {\n                        if (oi instanceof SchemaImport) {\n                            SchemaImport imp = ((SchemaImport) oi);\n                            Schema importedSchema = imp.getReferencedSchema();\n                            if (importedSchema == null) {\n                                continue;\n                            }\n                            String fileNameChild = normalizeName(imp.getSchemaLocationURI());\n                            changedSchemaLocations.put(imp.getSchemaLocationURI(), fileNameChild);\n                            processSchema(definition, importedSchema, fileNameChild, changedSchemaLocations);\n                        }\n                    }\n                }\n            }\n            changeLocations(schema.getElement(), changedSchemaLocations);\n            if (fileName != null) {\n                java.io.FileWriter writer = new java.io.FileWriter(new File(baseFolder, fileName));\n                DOM2Writer.serializeAsXML(schema.getElement(), definition.getNamespaces(), writer);\n                writer.flush();\n                writer.close();\n            }\n        } catch (Exception ex) {\n            throw new SoapException(\"Unexpected error\", ex);\n        }\n\n    }\n\n    private void changeLocations(Element element, Map<String, String> changedSchemaLocations) {\n        NodeList nodeList = element.getChildNodes();\n        String tagName;\n        for (int i = 0; i < nodeList.getLength(); i++) {\n            tagName = nodeList.item(i).getLocalName();\n            if (IMPORT_TAG.equals(tagName) || INCLUDE_TAG.equals(tagName)) {\n                processImport(nodeList.item(i), changedSchemaLocations);\n            }\n        }\n    }\n\n    private void processImport(Node importNode, Map<String, String> changedSchemaLocations) {\n        NamedNodeMap nodeMap = importNode.getAttributes();\n        Node attribute;\n        String attributeValue;\n        for (int i = 0; i < nodeMap.getLength(); i++) {\n            attribute = nodeMap.item(i);\n            if (attribute.getNodeName().equals(SCHEMA_LOCATION)) {\n                attributeValue = attribute.getNodeValue();\n                attributeValue = changedSchemaLocations.get(attributeValue);\n                if (attributeValue != null) {\n                    attribute.setNodeValue(attributeValue);\n                }\n            }\n        }\n    }\n\n    private String normalizeName(String name) {\n        if (name != null) {\n            return name.replaceAll(\"[^A-Za-z0-9.\\\\-_]\", \"_\");\n        }\n        return null;\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/main/java/org/reficio/ws/common/XmlUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport org.custommonkey.xmlunit.XMLUnit;\nimport org.reficio.ws.SoapException;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Node;\nimport org.xml.sax.InputSource;\nimport org.xml.sax.SAXException;\n\nimport javax.xml.namespace.QName;\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport javax.xml.parsers.ParserConfigurationException;\nimport javax.xml.transform.*;\nimport javax.xml.transform.dom.DOMSource;\nimport javax.xml.transform.stream.StreamResult;\nimport java.io.*;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic final class XmlUtils {\n\n    private XmlUtils() {\n    }\n\n    public static Set<String> getNodeNames(Set<Node> nodes) {\n        Set<String> names = new HashSet<String>();\n        for (Node node : nodes) {\n            names.add(node.getLocalName());\n        }\n        return names;\n    }\n\n    public static Set<QName> getNodeTypes(Set<Node> nodes) {\n        Set<QName> names = new HashSet<QName>();\n        for (Node node : nodes) {\n            names.add(nodeToQName(node));\n        }\n        return names;\n    }\n\n    public static Set<Node> getRootNodes(DOMSource request) {\n        return populateNodes(request.getNode(), new HashSet<Node>());\n    }\n\n    public static Set<Node> populateNodes(Node node, Set<Node> nodes) {\n        if (node != null) {\n            if (node.getNodeType() == Node.ELEMENT_NODE) {\n                nodes.add(node);\n            }\n            populateNodes(node.getNextSibling(), nodes);\n        }\n        return nodes;\n    }\n\n    public static QName nodeToQName(Node node) {\n        return new QName(node.getNamespaceURI(), node.getLocalName());\n    }\n\n    public static Source xmlStringToSource(String xmlString) {\n        StringReader reader = new StringReader(xmlString);\n        InputSource src = new InputSource(reader);\n        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\n        try {\n            DocumentBuilder db = dbf.newDocumentBuilder();\n            Document dom = db.parse(src);\n            Source xmlSource = new javax.xml.transform.dom.DOMSource(dom);\n            return xmlSource;\n        } catch (ParserConfigurationException ex) {\n            throw new SoapException(ex);\n        } catch (SAXException ex) {\n            throw new SoapException(ex);\n        } catch (IOException ex) {\n            throw new SoapException(ex);\n        }\n    }\n\n    public static String sourceToXmlString(Source xmlSource) {\n        if (xmlSource == null) {\n            return \"\";\n        }\n        TransformerFactory factory = TransformerFactory.newInstance();\n        Transformer transformer = null;\n        try {\n            transformer = factory.newTransformer();\n            transformer.setOutputProperty(OutputKeys.INDENT, \"yes\");\n            StringWriter writer = new StringWriter();\n            transformer.transform(xmlSource, new StreamResult(writer));\n            return writer.toString();\n        } catch (TransformerConfigurationException e) {\n            throw new SoapException(\"Error during XML transformer configuration\", e);\n        } catch (TransformerException e) {\n            throw new SoapException(\"Error during XML source transformation\", e);\n        }\n    }\n\n    public static String serializePretty(Document document) {\n        try {\n            Writer out = new StringWriter();\n            TransformerFactory tf = TransformerFactory.newInstance();\n            Transformer transformer = tf.newTransformer();\n            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, \"no\");\n            transformer.setOutputProperty(OutputKeys.METHOD, \"xml\");\n            transformer.setOutputProperty(OutputKeys.INDENT, \"yes\");\n            transformer.setOutputProperty(OutputKeys.ENCODING, \"UTF-8\");\n            transformer.setOutputProperty(\"{http://xml.apache.org/xslt}indent-amount\", \"4\");\n            transformer.transform(new DOMSource(document), new StreamResult(out));\n            return out.toString();\n        } catch (TransformerConfigurationException e) {\n            throw new SoapException(\"Failed to serialize: \", e);\n        } catch (TransformerException e) {\n            throw new SoapException(\"Failed to serialize: \", e);\n        }\n    }\n\n    public static String normalizeAndRemoveValues(String xmlContent) {\n        try {\n            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\n            dbf.setNamespaceAware(true);\n            dbf.setCoalescing(true);\n            dbf.setIgnoringElementContentWhitespace(true);\n            dbf.setIgnoringComments(true);\n            DocumentBuilder db = dbf.newDocumentBuilder();\n            Document document = db.parse(new ByteArrayInputStream(xmlContent.getBytes()));\n            document.normalizeDocument();\n            processNode(document);\n            return XmlUtils.serializePretty(document);\n        } catch (ParserConfigurationException e) {\n            throw new RuntimeException(e);\n        } catch (SAXException e) {\n            throw new RuntimeException(e);\n        } catch (Exception e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n    public static void processNode(Node node) throws Exception {\n        if (node.hasChildNodes()) {\n            for (Node child = node.getFirstChild(); child != null; child = child.getNextSibling()) {\n                processNode(child);\n            }\n        } else {\n            node.setTextContent(\" \");\n        }\n    }\n\n    public static boolean isIdenticalNormalizedWithoutValues(String expected, String current) {\n        String expectedProcessed = normalizeAndRemoveValues(expected);\n        String currentProcessed = normalizeAndRemoveValues(current);\n        try {\n            return XMLUnit.compareXML(expectedProcessed, currentProcessed).identical();\n        } catch (SAXException e) {\n            throw new RuntimeException(e);\n        } catch (IOException e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/test/java/org/reficio/ws/common/ResourceLoaderTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.io.InputStream;\nimport java.net.URL;\n\npublic class ResourceLoaderTest {\n\n    @Test\n    public void loadWithSystemClassloaderTest() {\n\n        URL url5 = System.class.getResource(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url5);\n\n        InputStream in = getClass().getResourceAsStream(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(in);\n\n        InputStream in2 = getClass().getClassLoader().getResourceAsStream(\"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(in2);\n\n        URL url = getClass().getResource(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n\n        URL url2 = getClass().getClassLoader().getResource(\"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url2);\n\n        InputStream stream = ResourceLoaderTest.class.getResourceAsStream(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n\n        InputStream stream2 = ResourceLoaderTest.class.getClassLoader().getResourceAsStream(\"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream2);\n\n        URL url3 = ResourceLoaderTest.class.getResource(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url3);\n\n        URL url4 = ResourceLoaderTest.class.getClassLoader().getResource(\"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url4);\n\n    }\n\n}\n"
  },
  {
    "path": "soap-common/src/test/java/org/reficio/ws/common/ResourceUtilsTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\nimport org.junit.Assert;\nimport org.junit.Test;\n\nimport java.io.InputStream;\nimport java.net.URL;\n\n/**\n * User: Tom Bujok (tom.bujok@gmail.com)\n * Date: 11/10/11\n * Time: 11:16 AM\n */\npublic class ResourceUtilsTest {\n\n    @Test(expected = IllegalArgumentException.class)\n    public void testResourceLoading_failed() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"org/reficio/ws/common/test\", \"soapEncoding.xsd123123\");\n    }\n\n    @Test(expected = IllegalArgumentException.class)\n    public void testResourceLoading_failed_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"asdasdasdasd.txt\");\n    }\n\n    @Test\n    public void testResourceLoading_noLeadingTrailing() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"org/reficio/ws/common/test\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_noLeadingTrailing_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_noLeading() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_noLeading_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleLeading() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"//////org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleLeading_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"//////org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoadingNoTrailing() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"/org/reficio/ws/common/test\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoadingNoTrailing_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_whiteSpaces() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"  /org/reficio/ws/common/test  \", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_whiteSpaces_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"  /org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleInner() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"/org///reficio////ws/common/////test\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleInner_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"/org///reficio////ws/common/////test/////soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleTrailing() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"org/reficio/ws/common/test//////\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_multipleTrailing_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"org/reficio/ws/common/test//////soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_notNormalized() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(System.class, \"org/../org/reficio/../reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_notNormalized_noPackage() {\n        URL url = ResourceUtils.getResource(System.class, \"org/../org/reficio/../reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoading_notNormalized_asStream() {\n        InputStream stream = ResourceUtils.getResourceWithAbsolutePackagePathAsStream(System.class, \"/org/../org/reficio/../reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoading_notNormalized_asStream_noPackage() {\n        InputStream stream = ResourceUtils.getResourceAsStream(System.class, \"/org/../org/reficio/../reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingObject() {\n        InputStream stream = ResourceUtils.getResourceWithAbsolutePackagePathAsStream(Object.class, \"/org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingObject_noPackage() {\n        InputStream stream = ResourceUtils.getResourceAsStream(Object.class, \"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingThis() {\n        InputStream stream = ResourceUtils.getResourceWithAbsolutePackagePathAsStream(ResourceUtilsTest.class, \"/org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingThis_noPackage() {\n        InputStream stream = ResourceUtils.getResourceAsStream(ResourceUtilsTest.class, \"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingGetClass() {\n        InputStream stream = ResourceUtils.getResourceWithAbsolutePackagePathAsStream(getClass(), \"/org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingGetClass_noPackage() {\n        InputStream stream = ResourceUtils.getResourceAsStream(getClass(), \"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingNoClass() {\n        InputStream stream = ResourceUtils.getResourceWithAbsolutePackagePathAsStream(\"/org/reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingNoClass_noPackage() {\n        InputStream stream = ResourceUtils.getResourceAsStream(\"/org/reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(stream);\n    }\n\n    @Test\n    public void testResourceLoadingNotNormalizedNoClass() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(\"org/../org/reficio/../reficio/ws/common/test/\", \"soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoadingNotNormalizedNoClass_noPackage() {\n        URL url = ResourceUtils.getResource(\"org/../org/reficio/../reficio/ws/common/test/soapEncoding.xsd\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoadingSpaceInTheResource() {\n        URL url = ResourceUtils.getResourceWithAbsolutePackagePath(\"my folder\", \"resource.txt\");\n        Assert.assertNotNull(url);\n    }\n\n    @Test\n    public void testResourceLoadingSpaceInTheResource_noPackage() {\n        URL url = ResourceUtils.getResource(\"my folder/resource.txt\");\n        Assert.assertNotNull(url);\n    }\n\n\n}\n"
  },
  {
    "path": "soap-common/src/test/java/org/reficio/ws/common/XmlComparator.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.common;\n\n/**\n * User: Tom Bujok (tom.bujok@gmail.com)\n * Date: 14/10/11\n * Time: 10:31 AM\n */\n\nimport org.w3c.dom.Document;\nimport org.w3c.dom.NamedNodeMap;\nimport org.w3c.dom.Node;\n\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport java.io.ByteArrayInputStream;\nimport java.util.LinkedHashMap;\nimport java.util.List;\nimport java.util.Map;\n\npublic class XmlComparator {\n\n    private boolean nodeTypeDiff = true;\n    private boolean nodeValueDiff = true;\n\n    public boolean diff(String xml1, String xml2, List<String> diffs) throws Exception {\n        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\n        dbf.setNamespaceAware(true);\n        dbf.setCoalescing(true);\n        dbf.setIgnoringElementContentWhitespace(true);\n        dbf.setIgnoringComments(true);\n        DocumentBuilder db = dbf.newDocumentBuilder();\n\n\n        Document doc1 = db.parse(new ByteArrayInputStream(xml1.getBytes()));\n        Document doc2 = db.parse(new ByteArrayInputStream(xml2.getBytes()));\n\n        doc1.normalizeDocument();\n        doc2.normalizeDocument();\n\n        // log.info(\"\\n\" + XmlUtils.serializePretty(doc1));\n        // log.info(\"\\n\" + XmlUtils.serializePretty(doc2));\n\n        return diff(doc1, doc2, diffs);\n\n    }\n\n    /**\n     * Diff 2 nodes and put the diffs in the list\n     */\n    public boolean diff(Node node1, Node node2, List<String> diffs) throws Exception {\n        if (diffNodeExists(node1, node2, diffs)) {\n            return true;\n        }\n\n        if (nodeTypeDiff) {\n            diffNodeType(node1, node2, diffs);\n        }\n\n        if (nodeValueDiff) {\n            diffNodeValue(node1, node2, diffs);\n        }\n\n//        log.info(node1.getNodeName() + \"/\" + node2.getNodeName());\n\n        diffAttributes(node1, node2, diffs);\n        diffNodes(node1, node2, diffs);\n\n        return diffs.size() > 0;\n    }\n\n    /**\n     * Diff the nodes\n     */\n    public boolean diffNodes(Node node1, Node node2, List<String> diffs) throws Exception {\n        //Sort by Name\n        Map<String, Node> children1 = new LinkedHashMap<String, Node>();\n        for (Node child1 = node1.getFirstChild(); child1 != null; child1 = child1.getNextSibling()) {\n            children1.put(child1.getNodeName(), child1);\n        }\n\n        //Sort by Name\n        Map<String, Node> children2 = new LinkedHashMap<String, Node>();\n        for (Node child2 = node1.getFirstChild(); child2 != null; child2 = child2.getNextSibling()) {\n            children2.put(child2.getNodeName(), child2);\n        }\n\n        //Diff all the children1\n        for (Node child1 : children1.values()) {\n            Node child2 = children2.remove(child1.getNodeName());\n            diff(child1, child2, diffs);\n        }\n\n        //Diff all the children2 left over\n        for (Node child2 : children2.values()) {\n            Node child1 = children1.get(child2.getNodeName());\n            diff(child1, child2, diffs);\n        }\n\n        return diffs.size() > 0;\n    }\n\n\n    /**\n     * Diff the nodes\n     */\n    public boolean diffAttributes(Node node1, Node node2, List<String> diffs) throws Exception {\n        //Sort by Name\n        NamedNodeMap nodeMap1 = node1.getAttributes();\n        Map<String, Node> attributes1 = new LinkedHashMap<String, Node>();\n        for (int index = 0; nodeMap1 != null && index < nodeMap1.getLength(); index++) {\n            attributes1.put(nodeMap1.item(index).getNodeName(), nodeMap1.item(index));\n        }\n\n        //Sort by Name\n        NamedNodeMap nodeMap2 = node2.getAttributes();\n        Map<String, Node> attributes2 = new LinkedHashMap<String, Node>();\n        for (int index = 0; nodeMap2 != null && index < nodeMap2.getLength(); index++) {\n            attributes2.put(nodeMap2.item(index).getNodeName(), nodeMap2.item(index));\n\n        }\n\n        //Diff all the attributes1\n        for (Node attribute1 : attributes1.values()) {\n            Node attribute2 = attributes2.remove(attribute1.getNodeName());\n            diff(attribute1, attribute2, diffs);\n        }\n\n        //Diff all the attributes2 left over\n        for (Node attribute2 : attributes2.values()) {\n            Node attribute1 = attributes1.get(attribute2.getNodeName());\n            diff(attribute1, attribute2, diffs);\n        }\n\n        return diffs.size() > 0;\n    }\n\n    /**\n     * Check that the nodes exist\n     */\n    public boolean diffNodeExists(Node node1, Node node2, List<String> diffs) throws Exception {\n        if (node1 == null && node2 == null) {\n            diffs.add(getPath(node2) + \":node \" + node1 + \"!=\" + node2 + \"\\n\");\n            return true;\n        }\n\n        if (node1 == null && node2 != null) {\n            diffs.add(getPath(node2) + \":node \" + node1 + \"!=\" + node2.getNodeName());\n            return true;\n        }\n\n        if (node1 != null && node2 == null) {\n            diffs.add(getPath(node1) + \":node \" + node1.getNodeName() + \"!=\" + node2);\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Diff the Node Type\n     */\n    public boolean diffNodeType(Node node1, Node node2, List<String> diffs) throws Exception {\n        if (node1.getNodeType() != node2.getNodeType()) {\n            diffs.add(getPath(node1) + \":type \" + node1.getNodeType() + \"!=\" + node2.getNodeType());\n            return true;\n        }\n\n        return false;\n    }\n\n    /**\n     * Diff the Node Value\n     */\n    public boolean diffNodeValue(Node node1, Node node2, List<String> diffs) throws Exception {\n        if (node1.getNodeValue() == null && node2.getNodeValue() == null) {\n            return false;\n        }\n\n        if (node1.getNodeValue() == null && node2.getNodeValue() != null) {\n            diffs.add(getPath(node1) + \":type \" + node1 + \"!=\" + node2.getNodeValue());\n            return true;\n        }\n\n        if (node1.getNodeValue() != null && node2.getNodeValue() == null) {\n            diffs.add(getPath(node1) + \":type \" + node1.getNodeValue() + \"!=\" + node2);\n            return true;\n        }\n\n        if (!node1.getNodeValue().equals(node2.getNodeValue())) {\n            diffs.add(getPath(node1) + \":type \" + node1.getNodeValue() + \"!=\" + node2.getNodeValue());\n            return true;\n        }\n\n        return false;\n    }\n\n\n    /**\n     * Get the node path\n     */\n    public String getPath(Node node) {\n        StringBuilder path = new StringBuilder();\n\n        do {\n            path.insert(0, node.getNodeName());\n            path.insert(0, \"/\");\n        }\n        while ((node = node.getParentNode()) != null);\n\n        return path.toString();\n    }\n}\n"
  },
  {
    "path": "soap-common/src/test/resources/my folder/resource.txt",
    "content": ""
  },
  {
    "path": "soap-common/src/test/resources/org/reficio/ws/common/test/soapEncoding.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8' ?>\n\n<!-- Schema for the SOAP/1.1 encoding\n\n     This schema has been produced using W3C's SOAP Version 1.2 schema\n     found at:\n\n     http://www.w3.org/2001/06/soap-encoding\n\n     Copyright 2001 Martin Gudgin, Developmentor.\n\t http://www.develop.co.uk\n\n     Changes made are the following:\n     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/\n     - reverted root to only allow 0 and 1 as lexical values\n\n\t Further changes:\n\n\t - removed default value from root attribute declaration - 20030314\n\n     Original copyright:\n     \n     Copyright 2001 W3C (Massachusetts Institute of Technology,\n     Institut National de Recherche en Informatique et en Automatique,\n     Keio University). All Rights Reserved.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:tns=\"http://schemas.xmlsoap.org/soap/encoding/\"\n           targetNamespace=\"http://schemas.xmlsoap.org/soap/encoding/\">\n\n    <xs:attribute name=\"root\">\n        <xs:annotation>\n            <xs:documentation>\n                'root' can be used to distinguish serialization roots from other\n                elements that are present in a serialization but are not roots of\n                a serialized value graph\n            </xs:documentation>\n        </xs:annotation>\n        <xs:simpleType>\n\n            <xs:restriction base='xs:boolean'>\n                <xs:pattern value='0|1'/>\n            </xs:restriction>\n        </xs:simpleType>\n    </xs:attribute>\n\n    <xs:attributeGroup name=\"commonAttributes\">\n        <xs:annotation>\n            <xs:documentation>\n\n                Attributes common to all elements that function as accessors or\n                represent independent (multi-ref) values. The href attribute is\n                intended to be used in a manner like CONREF. That is, the element\n                content should be empty iff the href attribute appears\n            </xs:documentation>\n        </xs:annotation>\n        <xs:attribute name=\"id\" type=\"xs:ID\"/>\n        <xs:attribute name=\"href\" type=\"xs:anyURI\"/>\n        <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n    </xs:attributeGroup>\n\n    <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->\n\n    <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->\n\n\n    <xs:simpleType name=\"arrayCoordinate\">\n        <xs:restriction base=\"xs:string\"/>\n    </xs:simpleType>\n\n    <xs:attribute name=\"arrayType\" type=\"xs:string\"/>\n    <xs:attribute name=\"offset\" type=\"tns:arrayCoordinate\"/>\n\n    <xs:attributeGroup name=\"arrayAttributes\">\n        <xs:attribute ref=\"tns:arrayType\"/>\n        <xs:attribute ref=\"tns:offset\"/>\n    </xs:attributeGroup>\n\n    <xs:attribute name=\"position\" type=\"tns:arrayCoordinate\"/>\n\n    <xs:attributeGroup name=\"arrayMemberAttributes\">\n\n        <xs:attribute ref=\"tns:position\"/>\n    </xs:attributeGroup>\n\n    <xs:group name=\"Array\">\n        <xs:sequence>\n            <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n        </xs:sequence>\n    </xs:group>\n\n    <xs:element name=\"Array\" type=\"tns:Array\"/>\n    <xs:complexType name=\"Array\">\n\n        <xs:annotation>\n            <xs:documentation>\n                'Array' is a complex type for accessors identified by position\n            </xs:documentation>\n        </xs:annotation>\n        <xs:group ref=\"tns:Array\" minOccurs=\"0\"/>\n        <xs:attributeGroup ref=\"tns:arrayAttributes\"/>\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n    </xs:complexType>\n\n    <!-- 'Struct' is a complex type for accessors identified by name.\nConstraint: No element may be have the same name as any other,\nnor may any element have a maxOccurs > 1. -->\n\n\n    <xs:element name=\"Struct\" type=\"tns:Struct\"/>\n\n    <xs:group name=\"Struct\">\n        <xs:sequence>\n            <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n        </xs:sequence>\n    </xs:group>\n\n    <xs:complexType name=\"Struct\">\n        <xs:group ref=\"tns:Struct\" minOccurs=\"0\"/>\n\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n    </xs:complexType>\n\n    <!-- 'Base64' can be used to serialize binary data using base64 encoding\nas defined in RFC2045 but without the MIME line length limitation. -->\n\n    <xs:simpleType name=\"base64\">\n        <xs:restriction base=\"xs:base64Binary\"/>\n    </xs:simpleType>\n\n    <!-- Element declarations corresponding to each of the simple types in the\n XML Schemas Specification. -->\n\n    <xs:element name=\"duration\" type=\"tns:duration\"/>\n\n    <xs:complexType name=\"duration\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:duration\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"dateTime\" type=\"tns:dateTime\"/>\n\n    <xs:complexType name=\"dateTime\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:dateTime\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n\n    <xs:element name=\"NOTATION\" type=\"tns:NOTATION\"/>\n    <xs:complexType name=\"NOTATION\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:QName\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n\n    <xs:element name=\"time\" type=\"tns:time\"/>\n\n    <xs:complexType name=\"time\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:time\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"date\" type=\"tns:date\"/>\n\n    <xs:complexType name=\"date\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:date\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"gYearMonth\" type=\"tns:gYearMonth\"/>\n\n    <xs:complexType name=\"gYearMonth\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:gYearMonth\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"gYear\" type=\"tns:gYear\"/>\n\n    <xs:complexType name=\"gYear\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:gYear\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"gMonthDay\" type=\"tns:gMonthDay\"/>\n\n    <xs:complexType name=\"gMonthDay\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:gMonthDay\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"gDay\" type=\"tns:gDay\"/>\n\n    <xs:complexType name=\"gDay\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:gDay\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"gMonth\" type=\"tns:gMonth\"/>\n\n    <xs:complexType name=\"gMonth\">\n        <xs:simpleContent>\n            <xs:extension base=\"xs:gMonth\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"boolean\" type=\"tns:boolean\"/>\n    <xs:complexType name=\"boolean\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:boolean\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"base64Binary\" type=\"tns:base64Binary\"/>\n    <xs:complexType name=\"base64Binary\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:base64Binary\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"hexBinary\" type=\"tns:hexBinary\"/>\n    <xs:complexType name=\"hexBinary\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:hexBinary\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"float\" type=\"tns:float\"/>\n    <xs:complexType name=\"float\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:float\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"double\" type=\"tns:double\"/>\n    <xs:complexType name=\"double\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:double\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"anyURI\" type=\"tns:anyURI\"/>\n    <xs:complexType name=\"anyURI\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:anyURI\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"QName\" type=\"tns:QName\"/>\n    <xs:complexType name=\"QName\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:QName\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n\n    <xs:element name=\"string\" type=\"tns:string\"/>\n    <xs:complexType name=\"string\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:string\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"normalizedString\" type=\"tns:normalizedString\"/>\n    <xs:complexType name=\"normalizedString\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:normalizedString\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"token\" type=\"tns:token\"/>\n    <xs:complexType name=\"token\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:token\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"language\" type=\"tns:language\"/>\n    <xs:complexType name=\"language\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:language\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"Name\" type=\"tns:Name\"/>\n    <xs:complexType name=\"Name\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:Name\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"NMTOKEN\" type=\"tns:NMTOKEN\"/>\n    <xs:complexType name=\"NMTOKEN\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:NMTOKEN\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"NCName\" type=\"tns:NCName\"/>\n    <xs:complexType name=\"NCName\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:NCName\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"NMTOKENS\" type=\"tns:NMTOKENS\"/>\n    <xs:complexType name=\"NMTOKENS\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:NMTOKENS\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"ID\" type=\"tns:ID\"/>\n    <xs:complexType name=\"ID\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:ID\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"IDREF\" type=\"tns:IDREF\"/>\n    <xs:complexType name=\"IDREF\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:IDREF\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"ENTITY\" type=\"tns:ENTITY\"/>\n    <xs:complexType name=\"ENTITY\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:ENTITY\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"IDREFS\" type=\"tns:IDREFS\"/>\n    <xs:complexType name=\"IDREFS\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:IDREFS\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"ENTITIES\" type=\"tns:ENTITIES\"/>\n    <xs:complexType name=\"ENTITIES\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:ENTITIES\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"decimal\" type=\"tns:decimal\"/>\n    <xs:complexType name=\"decimal\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:decimal\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"integer\" type=\"tns:integer\"/>\n    <xs:complexType name=\"integer\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:integer\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"nonPositiveInteger\" type=\"tns:nonPositiveInteger\"/>\n    <xs:complexType name=\"nonPositiveInteger\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:nonPositiveInteger\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"negativeInteger\" type=\"tns:negativeInteger\"/>\n    <xs:complexType name=\"negativeInteger\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:negativeInteger\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"long\" type=\"tns:long\"/>\n    <xs:complexType name=\"long\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:long\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"int\" type=\"tns:int\"/>\n    <xs:complexType name=\"int\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:int\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"short\" type=\"tns:short\"/>\n    <xs:complexType name=\"short\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:short\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"byte\" type=\"tns:byte\"/>\n    <xs:complexType name=\"byte\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:byte\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"nonNegativeInteger\" type=\"tns:nonNegativeInteger\"/>\n    <xs:complexType name=\"nonNegativeInteger\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:nonNegativeInteger\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"unsignedLong\" type=\"tns:unsignedLong\"/>\n    <xs:complexType name=\"unsignedLong\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:unsignedLong\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"unsignedInt\" type=\"tns:unsignedInt\"/>\n    <xs:complexType name=\"unsignedInt\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:unsignedInt\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"unsignedShort\" type=\"tns:unsignedShort\"/>\n    <xs:complexType name=\"unsignedShort\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:unsignedShort\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"unsignedByte\" type=\"tns:unsignedByte\"/>\n    <xs:complexType name=\"unsignedByte\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:unsignedByte\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"positiveInteger\" type=\"tns:positiveInteger\"/>\n    <xs:complexType name=\"positiveInteger\">\n\n        <xs:simpleContent>\n            <xs:extension base=\"xs:positiveInteger\">\n                <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n            </xs:extension>\n        </xs:simpleContent>\n    </xs:complexType>\n\n    <xs:element name=\"anyType\"/>\n</xs:schema>\n\n"
  },
  {
    "path": "soap-examples/arquillian/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>arquillian</artifactId>\n    <packaging>jar</packaging>\n    <name>soap-examples - arquillian</name>\n\n    <parent>\n        <artifactId>soap-examples</artifactId>\n        <groupId>org.reficio</groupId>\n        <version>1.0.0-SNAPSHOT</version>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.jboss.spec</groupId>\n            <artifactId>jboss-javaee-6.0</artifactId>\n            <version>1.0.0.Final</version>\n            <type>pom</type>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.jboss.arquillian.junit</groupId>\n            <artifactId>arquillian-junit-container</artifactId>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.jboss.arquillian.container</groupId>\n            <artifactId>arquillian-weld-ee-embedded-1.1</artifactId>\n            <version>1.0.0.CR3</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.jboss.weld</groupId>\n            <artifactId>weld-core</artifactId>\n            <version>1.1.5.Final</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-simple</artifactId>\n            <version>1.6.4</version>\n            <scope>test</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-test</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy-all</artifactId>\n        </dependency>\n\n    </dependencies>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.jboss.arquillian</groupId>\n                <artifactId>arquillian-bom</artifactId>\n                <version>1.0.3.Final</version>\n                <scope>import</scope>\n                <type>pom</type>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n</project>"
  },
  {
    "path": "soap-examples/arquillian/src/test/java/org/reficio/ws/arquillian/Greeter.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.arquillian;\n\nimport groovy.util.XmlSlurper;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.xml.sax.helpers.XMLReaderFactory;\n\nimport java.io.PrintStream;\nimport java.net.URL;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class Greeter {\n\n    public String getConversionRate(String fromCurrency, String toCurrency) throws Exception {\n        URL url = ResourceUtils.getResource(\"wsdl/currency-convertor.wsdl\");\n\n        // generate the message (the quickest way)\n        String input = Wsdl.parse(url)\n                .binding().name(\"{http://www.webserviceX.NET/}CurrencyConvertorSoap\").find()\n                .operation().soapAction(\"http://www.webserviceX.NET/ConversionRate\").find()\n                .buildInputMessage();\n\n        SoapClient client = SoapClient.builder()\n                .endpointUri(\"http://localhost:51515/service\")\n                .build();\n\n        String response = client.post(input);\n\n        XmlSlurper slurper = new XmlSlurper(XMLReaderFactory.createXMLReader());\n        return slurper.parseText(response).toString();\n    }\n\n    public void greet(PrintStream to, String name) {\n        to.println(createGreeting(name));\n    }\n\n    public String createGreeting(String name) {\n        return \"Hello, \" + name + \"!\";\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/arquillian/src/test/java/org/reficio/ws/arquillian/GreeterTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.arquillian;\n\nimport org.jboss.arquillian.container.test.api.Deployment;\nimport org.jboss.arquillian.junit.Arquillian;\nimport org.jboss.shrinkwrap.api.ShrinkWrap;\nimport org.jboss.shrinkwrap.api.asset.EmptyAsset;\nimport org.jboss.shrinkwrap.api.spec.JavaArchive;\nimport org.junit.Assert;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.reficio.ws.test.junit.Server;\nimport org.reficio.ws.test.junit.SoapRule;\n\nimport javax.inject.Inject;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\n@RunWith(Arquillian.class)\npublic class GreeterTest {\n\n    @Rule\n    public SoapRule rule = new SoapRule();\n\n    @Deployment\n    public static JavaArchive createDeployment() {\n        return ShrinkWrap.create(JavaArchive.class)\n                .addClass(Greeter.class)\n                .addAsManifestResource(EmptyAsset.INSTANCE, \"beans.xml\");\n    }\n\n    @Inject\n    Greeter greeter;\n\n    @Test\n    public void should_create_greeting() {\n        Assert.assertEquals(\"Hello, Earthling!\", greeter.createGreeting(\"Earthling\"));\n        greeter.greet(System.out, \"Earthling\");\n    }\n\n    // @Server annotation spawns an instance of a SoapServer for the lifespan of the test / method.\n    // The SOAP server provides a SOAP auto-responder for the specified binding -> messages are generated and sent automatically.\n    // Generated messages are compliant with the WSDL and the schema (including enumerations, etc.)\n    // The @Server annotation may be also used to annotate a method -> it spawns a SoapServer for the lifespan of the test method.\n    // In order to enable the @Server annotation a junit @Rule has to be defined (JUnit requirement):\n    //   - org.junit.ClassRule in order to enable the @Server on a per-class basis\n    //   - org.junit.Rule in order to enable the @Server on a per-class basis\n    @Test\n    @Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\", binding = \"CurrencyConvertorSoap\")\n    public void getConversionRateSoapTest() throws Exception {\n        String rate = greeter.getConversionRate(\"USD\", \"EUR\");\n        Assert.assertNotNull(rate);\n        Float rateFloat = Float.parseFloat(rate);\n        Assert.assertTrue(rateFloat > 0.75);\n    }\n\n}"
  },
  {
    "path": "soap-examples/arquillian/src/test/java/org/reficio/ws/arquillian/README.txt",
    "content": "====\n    Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n====\n\nhttp://arquillian.org/guides/getting_started/"
  },
  {
    "path": "soap-examples/arquillian/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.reficio\">\n        <level value=\"warn\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-examples/arquillian/src/test/resources/wsdl/currency-convertor.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:tm=\"http://microsoft.com/wsdl/mime/textMatching/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\" xmlns:tns=\"http://www.webserviceX.NET/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" targetNamespace=\"http://www.webserviceX.NET/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://www.webserviceX.NET/\">\n      <s:element name=\"ConversionRate\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"FromCurrency\" type=\"tns:Currency\"/>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ToCurrency\" type=\"tns:Currency\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"Currency\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"AFA\"/>\n          <s:enumeration value=\"ALL\"/>\n          <s:enumeration value=\"DZD\"/>\n          <s:enumeration value=\"ARS\"/>\n          <s:enumeration value=\"AWG\"/>\n          <s:enumeration value=\"AUD\"/>\n          <s:enumeration value=\"BSD\"/>\n          <s:enumeration value=\"BHD\"/>\n          <s:enumeration value=\"BDT\"/>\n          <s:enumeration value=\"BBD\"/>\n          <s:enumeration value=\"BZD\"/>\n          <s:enumeration value=\"BMD\"/>\n          <s:enumeration value=\"BTN\"/>\n          <s:enumeration value=\"BOB\"/>\n          <s:enumeration value=\"BWP\"/>\n          <s:enumeration value=\"BRL\"/>\n          <s:enumeration value=\"GBP\"/>\n          <s:enumeration value=\"BND\"/>\n          <s:enumeration value=\"BIF\"/>\n          <s:enumeration value=\"XOF\"/>\n          <s:enumeration value=\"XAF\"/>\n          <s:enumeration value=\"KHR\"/>\n          <s:enumeration value=\"CAD\"/>\n          <s:enumeration value=\"CVE\"/>\n          <s:enumeration value=\"KYD\"/>\n          <s:enumeration value=\"CLP\"/>\n          <s:enumeration value=\"CNY\"/>\n          <s:enumeration value=\"COP\"/>\n          <s:enumeration value=\"KMF\"/>\n          <s:enumeration value=\"CRC\"/>\n          <s:enumeration value=\"HRK\"/>\n          <s:enumeration value=\"CUP\"/>\n          <s:enumeration value=\"CYP\"/>\n          <s:enumeration value=\"CZK\"/>\n          <s:enumeration value=\"DKK\"/>\n          <s:enumeration value=\"DJF\"/>\n          <s:enumeration value=\"DOP\"/>\n          <s:enumeration value=\"XCD\"/>\n          <s:enumeration value=\"EGP\"/>\n          <s:enumeration value=\"SVC\"/>\n          <s:enumeration value=\"EEK\"/>\n          <s:enumeration value=\"ETB\"/>\n          <s:enumeration value=\"EUR\"/>\n          <s:enumeration value=\"FKP\"/>\n          <s:enumeration value=\"GMD\"/>\n          <s:enumeration value=\"GHC\"/>\n          <s:enumeration value=\"GIP\"/>\n          <s:enumeration value=\"XAU\"/>\n          <s:enumeration value=\"GTQ\"/>\n          <s:enumeration value=\"GNF\"/>\n          <s:enumeration value=\"GYD\"/>\n          <s:enumeration value=\"HTG\"/>\n          <s:enumeration value=\"HNL\"/>\n          <s:enumeration value=\"HKD\"/>\n          <s:enumeration value=\"HUF\"/>\n          <s:enumeration value=\"ISK\"/>\n          <s:enumeration value=\"INR\"/>\n          <s:enumeration value=\"IDR\"/>\n          <s:enumeration value=\"IQD\"/>\n          <s:enumeration value=\"ILS\"/>\n          <s:enumeration value=\"JMD\"/>\n          <s:enumeration value=\"JPY\"/>\n          <s:enumeration value=\"JOD\"/>\n          <s:enumeration value=\"KZT\"/>\n          <s:enumeration value=\"KES\"/>\n          <s:enumeration value=\"KRW\"/>\n          <s:enumeration value=\"KWD\"/>\n          <s:enumeration value=\"LAK\"/>\n          <s:enumeration value=\"LVL\"/>\n          <s:enumeration value=\"LBP\"/>\n          <s:enumeration value=\"LSL\"/>\n          <s:enumeration value=\"LRD\"/>\n          <s:enumeration value=\"LYD\"/>\n          <s:enumeration value=\"LTL\"/>\n          <s:enumeration value=\"MOP\"/>\n          <s:enumeration value=\"MKD\"/>\n          <s:enumeration value=\"MGF\"/>\n          <s:enumeration value=\"MWK\"/>\n          <s:enumeration value=\"MYR\"/>\n          <s:enumeration value=\"MVR\"/>\n          <s:enumeration value=\"MTL\"/>\n          <s:enumeration value=\"MRO\"/>\n          <s:enumeration value=\"MUR\"/>\n          <s:enumeration value=\"MXN\"/>\n          <s:enumeration value=\"MDL\"/>\n          <s:enumeration value=\"MNT\"/>\n          <s:enumeration value=\"MAD\"/>\n          <s:enumeration value=\"MZM\"/>\n          <s:enumeration value=\"MMK\"/>\n          <s:enumeration value=\"NAD\"/>\n          <s:enumeration value=\"NPR\"/>\n          <s:enumeration value=\"ANG\"/>\n          <s:enumeration value=\"NZD\"/>\n          <s:enumeration value=\"NIO\"/>\n          <s:enumeration value=\"NGN\"/>\n          <s:enumeration value=\"KPW\"/>\n          <s:enumeration value=\"NOK\"/>\n          <s:enumeration value=\"OMR\"/>\n          <s:enumeration value=\"XPF\"/>\n          <s:enumeration value=\"PKR\"/>\n          <s:enumeration value=\"XPD\"/>\n          <s:enumeration value=\"PAB\"/>\n          <s:enumeration value=\"PGK\"/>\n          <s:enumeration value=\"PYG\"/>\n          <s:enumeration value=\"PEN\"/>\n          <s:enumeration value=\"PHP\"/>\n          <s:enumeration value=\"XPT\"/>\n          <s:enumeration value=\"PLN\"/>\n          <s:enumeration value=\"QAR\"/>\n          <s:enumeration value=\"ROL\"/>\n          <s:enumeration value=\"RUB\"/>\n          <s:enumeration value=\"WST\"/>\n          <s:enumeration value=\"STD\"/>\n          <s:enumeration value=\"SAR\"/>\n          <s:enumeration value=\"SCR\"/>\n          <s:enumeration value=\"SLL\"/>\n          <s:enumeration value=\"XAG\"/>\n          <s:enumeration value=\"SGD\"/>\n          <s:enumeration value=\"SKK\"/>\n          <s:enumeration value=\"SIT\"/>\n          <s:enumeration value=\"SBD\"/>\n          <s:enumeration value=\"SOS\"/>\n          <s:enumeration value=\"ZAR\"/>\n          <s:enumeration value=\"LKR\"/>\n          <s:enumeration value=\"SHP\"/>\n          <s:enumeration value=\"SDD\"/>\n          <s:enumeration value=\"SRG\"/>\n          <s:enumeration value=\"SZL\"/>\n          <s:enumeration value=\"SEK\"/>\n          <s:enumeration value=\"CHF\"/>\n          <s:enumeration value=\"SYP\"/>\n          <s:enumeration value=\"TWD\"/>\n          <s:enumeration value=\"TZS\"/>\n          <s:enumeration value=\"THB\"/>\n          <s:enumeration value=\"TOP\"/>\n          <s:enumeration value=\"TTD\"/>\n          <s:enumeration value=\"TND\"/>\n          <s:enumeration value=\"TRL\"/>\n          <s:enumeration value=\"USD\"/>\n          <s:enumeration value=\"AED\"/>\n          <s:enumeration value=\"UGX\"/>\n          <s:enumeration value=\"UAH\"/>\n          <s:enumeration value=\"UYU\"/>\n          <s:enumeration value=\"VUV\"/>\n          <s:enumeration value=\"VEB\"/>\n          <s:enumeration value=\"VND\"/>\n          <s:enumeration value=\"YER\"/>\n          <s:enumeration value=\"YUM\"/>\n          <s:enumeration value=\"ZMK\"/>\n          <s:enumeration value=\"ZWD\"/>\n          <s:enumeration value=\"TRY\"/>\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"ConversionRateResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ConversionRateResult\" type=\"s:double\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"double\" type=\"s:double\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"ConversionRateSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRate\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRateResponse\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n\n  <wsdl:portType name=\"CurrencyConvertorSoap\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateSoapIn\"/>\n      <wsdl:output message=\"tns:ConversionRateSoapOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n\n  <wsdl:portType name=\"CurrencyConvertorHttpGet\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpGetIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpGetOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:portType name=\"CurrencyConvertorHttpPost\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpPostIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpPostOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"CurrencyConvertorSoap\" type=\"tns:CurrencyConvertorSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorSoap12\" type=\"tns:CurrencyConvertorSoap\">\n    <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap12:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap12:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpGet\" type=\"tns:CurrencyConvertorHttpGet\">\n    <http:binding verb=\"GET\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <http:urlEncoded/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpPost\" type=\"tns:CurrencyConvertorHttpPost\">\n    <http:binding verb=\"POST\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <mime:content type=\"application/x-www-form-urlencoded\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"CurrencyConvertor\">\n    <wsdl:port name=\"CurrencyConvertorSoap\" binding=\"tns:CurrencyConvertorSoap\">\n      <soap:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorSoap12\" binding=\"tns:CurrencyConvertorSoap12\">\n      <soap12:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpGet\" binding=\"tns:CurrencyConvertorHttpGet\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpPost\" binding=\"tns:CurrencyConvertorHttpPost\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>"
  },
  {
    "path": "soap-examples/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-examples</artifactId>\n    <packaging>pom</packaging>\n    <name>soap-examples</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <modules>\n        <module>quickstart</module>\n        <module>arquillian</module>\n        <module>testing</module>\n    </modules>\n\n</project>\n"
  },
  {
    "path": "soap-examples/quickstart/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>quickstart</artifactId>\n    <packaging>jar</packaging>\n    <name>soap-examples - quickstart</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-examples</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-test</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <version>${spring.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy-all</artifactId>\n        </dependency>\n    </dependencies>\n\n    <properties>\n        <spring.version>3.1.2.RELEASE</spring.version>\n    </properties>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/groovy/org/reficio/ws/quickstart/QuickStart.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.quickstart\n\nimport groovy.xml.StreamingMarkupBuilder\nimport groovy.xml.XmlUtil\nimport org.junit.Rule\nimport org.junit.Test\nimport org.reficio.ws.builder.core.Wsdl\nimport org.reficio.ws.client.core.SoapClient\nimport org.reficio.ws.test.junit.Server\nimport org.reficio.ws.test.junit.SoapRule\n\nclass QuickStart {\n\n    @Rule\n    public SoapRule rule = new SoapRule();\n\n    @Test\n    void invokeConversionRate() {\n        // generate the message (the quickest way)\n        String input = Wsdl.parse(\"http://www.webservicex.net/CurrencyConvertor.asmx?WSDL\")\n                .binding().name(\"{http://www.webserviceX.NET/}CurrencyConvertorSoap\").find()\n                .operation().soapAction(\"http://www.webserviceX.NET/ConversionRate\").find()\n                .buildInputMessage()\n\n        // modify the request providing real data\n        def slurper = new XmlSlurper().parseText(input)\n        slurper.Body.ConversionRate.FromCurrency = \"CHF\"\n        slurper.Body.ConversionRate.ToCurrency = \"PLN\"\n        input = toPrettyXml(slurper)\n\n        println input;\n\n        // construct the soap client and post the message\n        SoapClient client = SoapClient.builder()\n        .endpointUri(\"http://www.webservicex.net/CurrencyConvertor.asmx\")\n                .build();\n\n        String output = client.post(\"http://www.webserviceX.NET/ConversionRate\", input);\n        def response = new XmlSlurper().parseText(output)\n\n        // print whole response and the conversion rate only\n        println(toPrettyXml(response))\n        println \"\\n\" + response.Body.ConversionRateResponse.ConversionRateResult.text()\n    }\n\n    def static toPrettyXml(xml) {\n        XmlUtil.serialize(new StreamingMarkupBuilder().bind { mkp.yield xml })\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/java/org/reficio/ws/quickstart/SoapClientExamplesTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.quickstart;\n\nimport org.custommonkey.xmlunit.XMLUnit;\nimport org.junit.AfterClass;\nimport org.junit.BeforeClass;\nimport org.junit.Test;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.reficio.ws.server.responder.AutoResponder;\nimport org.xml.sax.SAXException;\n\nimport javax.wsdl.WSDLException;\nimport javax.xml.namespace.QName;\nimport java.io.IOException;\nimport java.net.URL;\n\nimport static org.junit.Assert.assertTrue;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapClientExamplesTest {\n\n    private static SoapServer server;\n    private static final int port = 9797;\n    private static final String contextPath = \"/stockquote\";\n\n    private static final URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/\", \"wsdl/stockquote-service.wsdl\");\n    private static final QName bindingName = new QName(\"http://reficio.org/stockquote.wsdl\", \"StockQuoteSoapBinding\");\n    private static SoapBuilder builder;\n\n    @BeforeClass\n    public static void startServer() throws WSDLException {\n        server = SoapServer.builder()\n                .httpPort(port)\n                .build();\n        server.start();\n\n        AutoResponder responder = getAutoResponderForTestService();\n        server.registerRequestResponder(contextPath, responder);\n    }\n\n    @AfterClass\n    public static void stopServer() {\n        server.stop();\n    }\n\n    public static AutoResponder getAutoResponderForTestService() throws WSDLException {\n        SoapContext context = SoapContext.builder().exampleContent(false).build();\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        builder = parser.binding().name(bindingName).find();\n\n        AutoResponder responder = new AutoResponder(builder, context);\n        return responder;\n    }\n\n    /**\n     * Here we're gonna generate the SOAP message using SoapBuilder and post it using SoapClient\n     */\n    @Test\n    public void invoke_tradePriceRequest_generatedMessages() throws Exception, SAXException, WSDLException {\n        // construct the client\n        String url = String.format(\"http://localhost:%d%s\", port, contextPath);\n        SoapClient client = SoapClient.builder()\n                .endpointUri(url)\n                .build();\n\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        SoapBuilder soapBuilder = parser.binding().name(bindingName).find();\n\n        // get the operation to invoked -> assumption our operation is the first operation in the WSDL's\n        SoapOperation operation = soapBuilder.operation().name(\"GetLastTradePrice\").find();\n\n        // construct the request\n        String request = soapBuilder.buildInputMessage(operation);\n        // post the request to the server\n        String response = client.post(request);\n        // get the response\n        String expectedResponse = soapBuilder.buildOutputMessage(operation, SoapContext.NO_CONTENT);\n\n        assertTrue(XMLUnit.compareXML(expectedResponse, response).identical());\n    }\n\n    /**\n     * Here we're gonna simply post SOAP hardcoded message using SoapClient\n     */\n    @Test\n    public void invoke_tradePriceRequest_hardcodedMessages() throws IOException, SAXException {\n        String url = String.format(\"http://localhost:%d%s\", port, contextPath);\n        SoapClient client = SoapClient.builder()\n                .endpointUri(url)\n                .build();\n\n        String request =\n                \"<soapenv:Envelope xmlns:soapenv=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\" xmlns:stoc=\\\"http://reficio.org/stockquote.wsdl\\\" xmlns:stoc1=\\\"http://reficio.org/stockquote.xsd\\\">\\n\" +\n                        \"   <soapenv:Header/>\\n\" +\n                        \"   <soapenv:Body>\\n\" +\n                        \"      <stoc:GetLastTradePrice>\\n\" +\n                        \"         <stoc1:TradePriceRequest>\\n\" +\n                        \"            <tickerSymbol>?</tickerSymbol>\\n\" +\n                        \"         </stoc1:TradePriceRequest>\\n\" +\n                        \"      </stoc:GetLastTradePrice>\\n\" +\n                        \"   </soapenv:Body>\\n\" +\n                        \"</soapenv:Envelope>\";\n\n        String response = client.post(request);\n\n        String expectedResponse = \"\" +\n                \"<soapenv:Envelope xmlns:soapenv=\\\"http://schemas.xmlsoap.org/soap/envelope/\\\" xmlns:stoc=\\\"http://reficio.org/stockquote.wsdl\\\" xmlns:stoc1=\\\"http://reficio.org/stockquote.xsd\\\">\\n\" +\n                \"   <soapenv:Header/>\\n\" +\n                \"   <soapenv:Body>\\n\" +\n                \"      <stoc:GetLastTradePriceResponse>\\n\" +\n                \"         <stoc1:TradePrice>\\n\" +\n                \"            <price>?</price>\\n\" +\n                \"         </stoc1:TradePrice>\\n\" +\n                \"      </stoc:GetLastTradePriceResponse>\\n\" +\n                \"   </soapenv:Body>\\n\" +\n                \"</soapenv:Envelope>\";\n\n        assertTrue(XMLUnit.compareXML(expectedResponse, response).identical());\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/java/org/reficio/ws/quickstart/SoapServerExamplesTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.quickstart;\n\nimport org.junit.Test;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.common.XmlUtils;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.reficio.ws.server.responder.AbstractResponder;\nimport org.reficio.ws.server.responder.AutoResponder;\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.wsdl.WSDLException;\nimport javax.xml.transform.Source;\nimport java.net.URL;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapServerExamplesTest {\n\n    @Test\n    public void createServer() {\n        SoapServer server = SoapServer.builder()\n                .httpPort(9090)\n                .build();\n        server.start();\n        server.stop();\n    }\n\n    @Test\n    public void createServer_registerAutoResponder() throws WSDLException {\n        SoapServer server = SoapServer.builder()\n                .httpPort(9090)\n                .build();\n        server.start();\n\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/\", \"wsdl/stockquote-service.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        SoapBuilder builder = parser.binding().localPart(\"StockQuoteSoapBinding\").find();\n        AutoResponder responder = new AutoResponder(builder);\n\n        server.registerRequestResponder(\"/service\", responder);\n        server.stop();\n    }\n\n    @Test\n    public void createServer_registerCustomResponder() throws WSDLException {\n        SoapServer server = SoapServer.builder()\n                .httpPort(9090)\n                .build();\n        server.start();\n\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/\", \"wsdl/stockquote-service.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        final SoapBuilder builder = parser.binding().localPart(\"StockQuoteSoapBinding\").find();\n\n        AbstractResponder customResponder = new AbstractResponder(builder) {\n            @Override\n            public Source respond(SoapOperation invokedOperation, SoapMessage message) {\n                try {\n                    // build the response using builder\n                    String response = builder.buildOutputMessage(invokedOperation);\n                    // here you can tweak the response -> for example with XSLT\n                    //...\n                    return XmlUtils.xmlStringToSource(response);\n                } catch (Exception e) {\n                    // will automatically generate SOAP-FAULT\n                    throw new RuntimeException(\"my custom error\", e);\n                }\n            }\n        };\n\n        server.registerRequestResponder(\"/service\", customResponder);\n        server.stop();\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/java/org/reficio/ws/quickstart/SpringExampleTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.quickstart;\n\nimport org.apache.log4j.Logger;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.test.context.ContextConfiguration;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\n\nimport static junit.framework.Assert.assertNotNull;\nimport static junit.framework.Assert.assertTrue;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@ContextConfiguration(\"classpath:applicationContext.xml\")\npublic class SpringExampleTest {\n\n    private final static Logger log = Logger.getLogger(SpringExampleTest.class);\n\n    @Autowired\n    private SoapBuilder builder;\n\n    @Autowired\n    private SoapClient client;\n\n    @Autowired\n    private SoapServer server;\n\n    @Test\n    public void testInjection() {\n        assertNotNull(builder);\n        assertNotNull(server);\n    }\n\n    @Test\n    public void testServerStarted() {\n        assertTrue(server.isRunning());\n    }\n\n    @Test\n    public void testRequestResponse() {\n        SoapOperation operation = builder.operation().name(\"ConversionRate\").find();\n        SoapContext context = SoapContext.builder().exampleContent(true).build();\n        String request = builder.buildInputMessage(operation, context);\n\n        String response = client.post(request);\n        assertNotNull(response);\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/resources/applicationContext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n    <!-- wsdl-parser part (locally referenced wsdl) -->\n    <bean id=\"wsdlResource\" class=\"org.springframework.core.io.ClassPathResource\">\n        <constructor-arg>\n            <value>wsdl/currency-convertor.wsdl</value>\n        </constructor-arg>\n    </bean>\n\n    <bean id=\"wsdlUrl\" class=\"java.net.URL\" factory-bean=\"wsdlResource\" factory-method=\"getURL\"/>\n\n    <!-- uncomment to use the local wsdl\" -->\n    <!--<bean id=\"wsdl\" class=\"org.reficio.ws.builder.core.Wsdl\" factory-method=\"parse\">-->\n    <!--<constructor-arg ref=\"wsdlUrl\"/>-->\n    <!--</bean>-->\n\n    <!-- wsdl-parser part (remote wsdl) -->\n    <bean id=\"wsdl\" class=\"org.reficio.ws.builder.core.Wsdl\" factory-method=\"parse\">\n        <constructor-arg>\n            <value>http://www.webservicex.net/CurrencyConvertor.asmx?WSDL</value>\n        </constructor-arg>\n    </bean>\n\n\n    <!-- soap-builder part -->\n    <bean id=\"soapContext\" class=\"org.reficio.ws.SoapContext\">\n        <constructor-arg name=\"exampleContent\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"typeComments\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"buildOptional\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"alwaysBuildHeaders\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"valueComments\" type=\"boolean\" value=\"true\"/>\n    </bean>\n\n    <bean id=\"soapBuilder\" class=\"org.reficio.ws.builder.SoapBuilder\" factory-bean=\"wsdl\" factory-method=\"getBuilder\">\n        <constructor-arg name=\"bindingName\">\n            <value>{http://www.webserviceX.NET/}CurrencyConvertorSoap</value>\n        </constructor-arg>\n        <constructor-arg name=\"context\" ref=\"soapContext\"/>\n    </bean>\n\n    <!-- security part -->\n    <bean id=\"securityFactory\" class=\"org.reficio.ws.client.core.SecurityFactory\">\n        <property name=\"authUsername\" value=\"tom\"/>\n        <property name=\"authPassword\" value=\"007\"/>\n        <property name=\"authMethod\" value=\"basic\"/>\n        <property name=\"strictHostVerification\" value=\"true\"/>\n        <property name=\"sslContextProtocol\" value=\"SSLv3\"/>\n    </bean>\n\n    <bean id=\"security\" class=\"org.reficio.ws.client.core.Security\" factory-bean=\"securityFactory\" factory-method=\"create\"/>\n\n    <!-- soap-client part -->\n    <bean id=\"soapClientFactory\" class=\"org.reficio.ws.client.core.SoapClientFactory\">\n        <property name=\"endpointUri\" value=\"http://localhost:8778/currencyConverter/soap\"/>\n        <property name=\"endpointSecurity\" ref=\"security\"/>\n    </bean>\n\n    <bean id=\"soapClient\" class=\"org.reficio.ws.client.core.SoapClient\" factory-bean=\"soapClientFactory\" factory-method=\"create\"/>\n\n\n    <!-- soap-server part -->\n    <bean id=\"autoResponder\" class=\"org.reficio.ws.server.responder.AutoResponder\">\n        <constructor-arg ref=\"soapBuilder\"/>\n    </bean>\n\n    <bean id=\"soapServerFactory\" class=\"org.reficio.ws.server.core.SoapServerFactory\">\n        <property name=\"httpPort\" value=\"8778\"/>\n        <property name=\"responders\">\n            <map>\n                <entry key=\"/currencyConverter/soap\" value-ref=\"autoResponder\"/>\n            </map>\n        </property>\n    </bean>\n\n    <bean id=\"soapServer\" factory-bean=\"soapServerFactory\" factory-method=\"create\" init-method=\"start\"/>\n\n</beans>\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.reficio\">\n        <level value=\"warn\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/resources/wsdl/currency-convertor.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\"\n                  xmlns:tns=\"http://www.webserviceX.NET/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  targetNamespace=\"http://www.webserviceX.NET/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://www.webserviceX.NET/\">\n      <s:element name=\"ConversionRate\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"FromCurrency\" type=\"tns:Currency\"/>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ToCurrency\" type=\"tns:Currency\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"Currency\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"AFA\"/>\n          <s:enumeration value=\"ALL\"/>\n          <s:enumeration value=\"DZD\"/>\n          <s:enumeration value=\"ARS\"/>\n          <s:enumeration value=\"AWG\"/>\n          <s:enumeration value=\"AUD\"/>\n          <s:enumeration value=\"BSD\"/>\n          <s:enumeration value=\"BHD\"/>\n          <s:enumeration value=\"BDT\"/>\n          <s:enumeration value=\"BBD\"/>\n          <s:enumeration value=\"BZD\"/>\n          <s:enumeration value=\"BMD\"/>\n          <s:enumeration value=\"BTN\"/>\n          <s:enumeration value=\"BOB\"/>\n          <s:enumeration value=\"BWP\"/>\n          <s:enumeration value=\"BRL\"/>\n          <s:enumeration value=\"GBP\"/>\n          <s:enumeration value=\"BND\"/>\n          <s:enumeration value=\"BIF\"/>\n          <s:enumeration value=\"XOF\"/>\n          <s:enumeration value=\"XAF\"/>\n          <s:enumeration value=\"KHR\"/>\n          <s:enumeration value=\"CAD\"/>\n          <s:enumeration value=\"CVE\"/>\n          <s:enumeration value=\"KYD\"/>\n          <s:enumeration value=\"CLP\"/>\n          <s:enumeration value=\"CNY\"/>\n          <s:enumeration value=\"COP\"/>\n          <s:enumeration value=\"KMF\"/>\n          <s:enumeration value=\"CRC\"/>\n          <s:enumeration value=\"HRK\"/>\n          <s:enumeration value=\"CUP\"/>\n          <s:enumeration value=\"CYP\"/>\n          <s:enumeration value=\"CZK\"/>\n          <s:enumeration value=\"DKK\"/>\n          <s:enumeration value=\"DJF\"/>\n          <s:enumeration value=\"DOP\"/>\n          <s:enumeration value=\"XCD\"/>\n          <s:enumeration value=\"EGP\"/>\n          <s:enumeration value=\"SVC\"/>\n          <s:enumeration value=\"EEK\"/>\n          <s:enumeration value=\"ETB\"/>\n          <s:enumeration value=\"EUR\"/>\n          <s:enumeration value=\"FKP\"/>\n          <s:enumeration value=\"GMD\"/>\n          <s:enumeration value=\"GHC\"/>\n          <s:enumeration value=\"GIP\"/>\n          <s:enumeration value=\"XAU\"/>\n          <s:enumeration value=\"GTQ\"/>\n          <s:enumeration value=\"GNF\"/>\n          <s:enumeration value=\"GYD\"/>\n          <s:enumeration value=\"HTG\"/>\n          <s:enumeration value=\"HNL\"/>\n          <s:enumeration value=\"HKD\"/>\n          <s:enumeration value=\"HUF\"/>\n          <s:enumeration value=\"ISK\"/>\n          <s:enumeration value=\"INR\"/>\n          <s:enumeration value=\"IDR\"/>\n          <s:enumeration value=\"IQD\"/>\n          <s:enumeration value=\"ILS\"/>\n          <s:enumeration value=\"JMD\"/>\n          <s:enumeration value=\"JPY\"/>\n          <s:enumeration value=\"JOD\"/>\n          <s:enumeration value=\"KZT\"/>\n          <s:enumeration value=\"KES\"/>\n          <s:enumeration value=\"KRW\"/>\n          <s:enumeration value=\"KWD\"/>\n          <s:enumeration value=\"LAK\"/>\n          <s:enumeration value=\"LVL\"/>\n          <s:enumeration value=\"LBP\"/>\n          <s:enumeration value=\"LSL\"/>\n          <s:enumeration value=\"LRD\"/>\n          <s:enumeration value=\"LYD\"/>\n          <s:enumeration value=\"LTL\"/>\n          <s:enumeration value=\"MOP\"/>\n          <s:enumeration value=\"MKD\"/>\n          <s:enumeration value=\"MGF\"/>\n          <s:enumeration value=\"MWK\"/>\n          <s:enumeration value=\"MYR\"/>\n          <s:enumeration value=\"MVR\"/>\n          <s:enumeration value=\"MTL\"/>\n          <s:enumeration value=\"MRO\"/>\n          <s:enumeration value=\"MUR\"/>\n          <s:enumeration value=\"MXN\"/>\n          <s:enumeration value=\"MDL\"/>\n          <s:enumeration value=\"MNT\"/>\n          <s:enumeration value=\"MAD\"/>\n          <s:enumeration value=\"MZM\"/>\n          <s:enumeration value=\"MMK\"/>\n          <s:enumeration value=\"NAD\"/>\n          <s:enumeration value=\"NPR\"/>\n          <s:enumeration value=\"ANG\"/>\n          <s:enumeration value=\"NZD\"/>\n          <s:enumeration value=\"NIO\"/>\n          <s:enumeration value=\"NGN\"/>\n          <s:enumeration value=\"KPW\"/>\n          <s:enumeration value=\"NOK\"/>\n          <s:enumeration value=\"OMR\"/>\n          <s:enumeration value=\"XPF\"/>\n          <s:enumeration value=\"PKR\"/>\n          <s:enumeration value=\"XPD\"/>\n          <s:enumeration value=\"PAB\"/>\n          <s:enumeration value=\"PGK\"/>\n          <s:enumeration value=\"PYG\"/>\n          <s:enumeration value=\"PEN\"/>\n          <s:enumeration value=\"PHP\"/>\n          <s:enumeration value=\"XPT\"/>\n          <s:enumeration value=\"PLN\"/>\n          <s:enumeration value=\"QAR\"/>\n          <s:enumeration value=\"ROL\"/>\n          <s:enumeration value=\"RUB\"/>\n          <s:enumeration value=\"WST\"/>\n          <s:enumeration value=\"STD\"/>\n          <s:enumeration value=\"SAR\"/>\n          <s:enumeration value=\"SCR\"/>\n          <s:enumeration value=\"SLL\"/>\n          <s:enumeration value=\"XAG\"/>\n          <s:enumeration value=\"SGD\"/>\n          <s:enumeration value=\"SKK\"/>\n          <s:enumeration value=\"SIT\"/>\n          <s:enumeration value=\"SBD\"/>\n          <s:enumeration value=\"SOS\"/>\n          <s:enumeration value=\"ZAR\"/>\n          <s:enumeration value=\"LKR\"/>\n          <s:enumeration value=\"SHP\"/>\n          <s:enumeration value=\"SDD\"/>\n          <s:enumeration value=\"SRG\"/>\n          <s:enumeration value=\"SZL\"/>\n          <s:enumeration value=\"SEK\"/>\n          <s:enumeration value=\"CHF\"/>\n          <s:enumeration value=\"SYP\"/>\n          <s:enumeration value=\"TWD\"/>\n          <s:enumeration value=\"TZS\"/>\n          <s:enumeration value=\"THB\"/>\n          <s:enumeration value=\"TOP\"/>\n          <s:enumeration value=\"TTD\"/>\n          <s:enumeration value=\"TND\"/>\n          <s:enumeration value=\"TRL\"/>\n          <s:enumeration value=\"USD\"/>\n          <s:enumeration value=\"AED\"/>\n          <s:enumeration value=\"UGX\"/>\n          <s:enumeration value=\"UAH\"/>\n          <s:enumeration value=\"UYU\"/>\n          <s:enumeration value=\"VUV\"/>\n          <s:enumeration value=\"VEB\"/>\n          <s:enumeration value=\"VND\"/>\n          <s:enumeration value=\"YER\"/>\n          <s:enumeration value=\"YUM\"/>\n          <s:enumeration value=\"ZMK\"/>\n          <s:enumeration value=\"ZWD\"/>\n          <s:enumeration value=\"TRY\"/>\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"ConversionRateResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ConversionRateResult\" type=\"s:double\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"double\" type=\"s:double\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"ConversionRateSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRate\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRateResponse\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n  <wsdl:portType name=\"CurrencyConvertorSoap\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateSoapIn\"/>\n      <wsdl:output message=\"tns:ConversionRateSoapOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:portType name=\"CurrencyConvertorHttpGet\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpGetIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpGetOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:portType name=\"CurrencyConvertorHttpPost\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpPostIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpPostOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"CurrencyConvertorSoap\" type=\"tns:CurrencyConvertorSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorSoap12\" type=\"tns:CurrencyConvertorSoap\">\n    <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap12:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap12:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpGet\" type=\"tns:CurrencyConvertorHttpGet\">\n    <http:binding verb=\"GET\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <http:urlEncoded/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpPost\" type=\"tns:CurrencyConvertorHttpPost\">\n    <http:binding verb=\"POST\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <mime:content type=\"application/x-www-form-urlencoded\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"CurrencyConvertor\">\n    <wsdl:port name=\"CurrencyConvertorSoap\" binding=\"tns:CurrencyConvertorSoap\">\n      <soap:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorSoap12\" binding=\"tns:CurrencyConvertorSoap12\">\n      <soap12:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpGet\" binding=\"tns:CurrencyConvertorHttpGet\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpPost\" binding=\"tns:CurrencyConvertorHttpPost\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/resources/wsdl/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-examples/quickstart/src/test/resources/wsdl/stockquote-service.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-examples/testing/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>testing</artifactId>\n    <packaging>jar</packaging>\n    <name>soap-examples - testing</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-examples</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-common</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>xerces</groupId>\n                    <artifactId>xercesImpl</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>xml-apis</groupId>\n                    <artifactId>xml-apis</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>org.apache.xmlbeans</groupId>\n                    <artifactId>xmlbeans-xmlpublic</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-test</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework</groupId>\n            <artifactId>spring-test</artifactId>\n            <version>3.1.2.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.gmaven.runtime</groupId>\n            <artifactId>gmaven-runtime-2.0</artifactId>\n            <version>${gmaven.version}</version>\n            <exclusions>\n                <exclusion>\n                    <groupId>org.codehaus.groovy</groupId>\n                    <artifactId>groovy-all</artifactId>\n                </exclusion>\n                <exclusion>\n                    <groupId>org.sonatype.gossip</groupId>\n                    <artifactId>gossip</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n        <dependency>\n            <groupId>org.codehaus.groovy</groupId>\n            <artifactId>groovy-all</artifactId>\n            <version>${groovy.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.spockframework</groupId>\n            <artifactId>spock-core</artifactId>\n            <version>0.7-groovy-2.0</version>\n        </dependency>\n    </dependencies>\n\n</project>"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/BankService.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\ninterface BankService {\n\n    Double getExpenses(String account, String category);\n\n    Double getExpenses(String account, String category, String currency);\n\n    String getCurrency();\n\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/BankServiceImpl.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample\n\nimport groovy.xml.StreamingMarkupBuilder\nimport groovy.xml.XmlUtil\nimport org.reficio.ws.builder.SoapBuilder\nimport org.reficio.ws.builder.core.Wsdl\nimport org.reficio.ws.client.core.SoapClient\nimport org.reficio.ws.common.ResourceUtils\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass BankServiceImpl implements BankService {\n\n    String conversionServiceUri\n    SoapClient client;\n\n    BankServiceImpl() {\n        this.conversionServiceUri = \"http://127.0.0.1:9090/service\"\n    }\n\n    BankServiceImpl(String conversionServiceUri) {\n        this.conversionServiceUri = conversionServiceUri\n    }\n\n    BankServiceImpl(SoapClient client) {\n        this.client = client\n    }\n\n    Double getExpenses(String account, String category) {\n        if (!account) {\n            return -1\n        } else if (category == \"BEER\") {\n            return 317\n        } else {\n            return Random.newInstance().nextInt(1000)\n        }\n    }\n\n    Double getExpenses(String account, String category, String currency) {\n        Double balance = getExpenses(account, category)\n        Double conversionRate = getConversionRate(getDefaultCurrency(), currency)\n        return balance * conversionRate\n    }\n\n    String getCurrency() {\n        return \"GBP\"\n    }\n\n    String getDefaultCurrency() {\n        return \"GBP\"\n    }\n\n    Double getConversionRate(String fromCurrency, String toCurrency) {\n        URL url = ResourceUtils.getResource(\"wsdl/currency-convertor.wsdl\")\n        Wsdl wsdl = Wsdl.parse(url)\n\n        SoapBuilder builder = wsdl.binding().localPart(\"CurrencyConvertorSoap\").find()\n        String request = builder.operation().name(\"ConversionRate\").find().buildInputMessage()\n\n        def slurper = new XmlSlurper().parseText(request)\n        slurper.Body.ConversionRate.FromCurrency = fromCurrency\n        slurper.Body.ConversionRate.ToCurrency = toCurrency\n        request = toPrettyXml(slurper)\n\n        if (!client) {\n            client = SoapClient.builder()\n                    .endpointUri(conversionServiceUri)\n                    .build()\n        }\n        String response = client.post(request)\n        return parseResponse(response)\n    }\n\n    Double parseResponse(String response) {\n        def slurper = new XmlSlurper().parseText(response)\n        Double conversionRate = slurper.Body.ConversionRateResponse.ConversionRateResult.toString() as Double\n        return conversionRate\n    }\n\n    String toPrettyXml(def xml) {\n        XmlUtil.serialize(new StreamingMarkupBuilder().bind { mkp.yield xml })\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/testing/BalanceClientPlainTest.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample.testing\n\nimport org.junit.Rule\nimport org.junit.Test\nimport org.reficio.sample.BankService\nimport org.reficio.sample.BankServiceImpl\nimport org.reficio.ws.test.junit.Server\nimport org.reficio.ws.test.junit.SoapRule\n\nimport static org.junit.Assert.assertTrue\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass BalanceClientPlainTest {\n\n    private BankService bankService = new BankServiceImpl()\n\n    @Test\n    void getBeerExpenses() {\n        int expenses = bankService.getExpenses(\"CH01-1231-4141-2386\", \"BEER\")\n        // println \"Beer expenses = \" + expenses + \" \" + bankService.getCurrency()\n        assertTrue(expenses < 350)\n    }\n\n    @Rule\n    public SoapRule rule = new SoapRule();\n\n    @Test\n    @Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\",\n            binding = \"CurrencyConvertorSoap\",\n            port = 9090)\n    void getBeerExpensesInEuro() {\n        int expenses = bankService.getExpenses(\"CH01-1231-4141-2386\", \"BEER\", \"EUR\")\n        // println \"Beer expenses = \" + expenses + \" EUR\"\n        assertTrue(expenses < 450)\n    }\n\n\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/testing/BalanceClientSpringTest.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample.testing\n\nimport org.junit.After\nimport org.junit.Before\nimport org.junit.Test\nimport org.junit.runner.RunWith\nimport org.reficio.sample.BankService\nimport org.reficio.ws.builder.SoapBuilder\nimport org.reficio.ws.builder.SoapOperation\nimport org.reficio.ws.client.core.SoapClient\nimport org.reficio.ws.server.core.SoapServer\nimport org.reficio.ws.server.responder.AbstractResponder\nimport org.reficio.ws.server.responder.RequestResponder\nimport org.springframework.beans.factory.annotation.Autowired\nimport org.springframework.test.context.ContextConfiguration\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner\nimport org.springframework.ws.soap.SoapMessage\n\nimport javax.xml.transform.Source\n\nimport static org.junit.Assert.assertTrue\nimport static org.reficio.sample.util.ExampleUtils.toPrettyXml\nimport static org.reficio.ws.common.XmlUtils.xmlStringToSource\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\n@RunWith(SpringJUnit4ClassRunner.class)\n@ContextConfiguration(\"classpath:applicationContext.xml\")\nclass BalanceClientSpringTest {\n\n    @Autowired\n    private BankService balanceService\n\n    @Autowired\n    private SoapBuilder builder;\n\n    @Autowired\n    private SoapClient client;\n\n    @Autowired\n    private SoapServer server;\n\n    @Before\n    public void before() {\n        RequestResponder responder = new AbstractResponder(builder) {\n            @Override\n            public Source respond(SoapOperation invokedOperation, SoapMessage message) {\n                String response = builder.buildOutputMessage(invokedOperation)\n\n                def slurper = new XmlSlurper().parseText(response)\n                slurper.Body.ConversionRateResponse.ConversionRateResult = 2.0\n                response = toPrettyXml(slurper)\n\n                // println response\n                return xmlStringToSource(response)\n            }\n        }\n        server.registerRequestResponder(\"/service\", responder)\n\n    }\n\n    @After\n    public void cleanup() {\n        server.stop();\n    }\n\n    @Test\n    void getBeerExpensesInEuro() {\n        int expenses = balanceService.getExpenses(\"CH01-1231-4141-2386\", \"BEER\", \"EUR\")\n        // println \"Beer expenses = \" + expenses + \" EUR\"\n        assertTrue(expenses < 700)\n    }\n\n\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/testing/ConverterServerTest.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample.testing\n\nimport org.reficio.ws.builder.core.Wsdl\nimport org.reficio.ws.client.core.SoapClient\nimport org.reficio.ws.common.ResourceUtils\nimport org.reficio.ws.test.spock.Server\nimport spock.lang.Specification\n\nimport static org.reficio.sample.util.ExampleUtils.toPrettyXml\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass ConverterServerTest extends Specification {\n\n    URL url = ResourceUtils.getResource(\"wsdl/currency-convertor.wsdl\")\n\n    String supplement(String message, String from, String to) {\n        def slurper = new XmlSlurper().parseText(message)\n        slurper.Body.ConversionRate.FromCurrency = from\n        slurper.Body.ConversionRate.ToCurrency = to\n        return toPrettyXml(slurper)\n    }\n\n    Double extractRate(String response) {\n        def slurper = new XmlSlurper().parseText(response)\n        Double conversionRate = slurper.Body.ConversionRateResponse.ConversionRateResult.toString() as Double\n        return conversionRate\n    }\n\n    @Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\",\n            binding = \"CurrencyConvertorSoap\",\n            port = 9090)\n    def \"conversion rate test\"() {\n\n        setup:\n        SoapClient client = SoapClient.builder()\n                .endpointUri(\"http://127.0.0.1:9090/service\")\n                .build()\n        String message = Wsdl.parse(url)\n                .binding().localPart(\"CurrencyConvertorSoap\").find()\n                .operation().name(\"ConversionRate\").find()\n                .buildInputMessage()\n\n        message = supplement(message, from, to)\n        String response = client.post(message)\n        Double rate = extractRate(response)\n\n\n        expect:\n        min < rate && rate < max\n\n        where:\n        from  | to    | min   | max\n        \"EUR\" | \"CHF\" | 1.112 | 1.784\n        \"EUR\" | \"GBP\" | 0.546 | 2.134\n        \"GBP\" | \"CHF\" | 1.152 | 3.863\n\n\n    }\n\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/groovy/org/reficio/sample/util/ExampleUtils.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.sample.util\n\nimport groovy.xml.StreamingMarkupBuilder\nimport groovy.xml.XmlUtil\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass ExampleUtils {\n    def static toPrettyXml(xml) {\n        XmlUtil.serialize(new StreamingMarkupBuilder().bind { mkp.yield xml })\n    }\n}\n"
  },
  {
    "path": "soap-examples/testing/src/test/resources/applicationContext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\">\n\n    <!-- wsdl-parser part (locally referenced wsdl) -->\n    <bean id=\"wsdlResource\" class=\"org.springframework.core.io.ClassPathResource\">\n        <constructor-arg>\n            <value>wsdl/currency-convertor.wsdl</value>\n        </constructor-arg>\n    </bean>\n\n    <bean id=\"wsdlUrl\" class=\"java.net.URL\" factory-bean=\"wsdlResource\" factory-method=\"getURL\"/>\n\n    <!-- wsdl-parser part  -->\n    <bean id=\"wsdl\" class=\"org.reficio.ws.builder.core.Wsdl\" factory-method=\"parse\">\n        <constructor-arg>\n            <!--<value>http://www.webservicex.net/CurrencyConvertor.asmx?WSDL</value>-->\n            <ref bean=\"wsdlUrl\"/>\n        </constructor-arg>\n    </bean>\n\n    <!-- soap-builder part -->\n    <bean id=\"soapContext\" class=\"org.reficio.ws.SoapContext\">\n        <constructor-arg name=\"exampleContent\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"typeComments\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"buildOptional\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"alwaysBuildHeaders\" type=\"boolean\" value=\"true\"/>\n        <constructor-arg name=\"valueComments\" type=\"boolean\" value=\"true\"/>\n    </bean>\n\n    <bean id=\"soapBuilder\" class=\"org.reficio.ws.builder.SoapBuilder\" factory-bean=\"wsdl\" factory-method=\"getBuilder\">\n        <constructor-arg name=\"bindingName\">\n            <value>{http://www.webserviceX.NET/}CurrencyConvertorSoap</value>\n        </constructor-arg>\n        <constructor-arg name=\"context\" ref=\"soapContext\"/>\n    </bean>\n\n    <!-- soap-client part -->\n    <bean id=\"soapClientFactory\" class=\"org.reficio.ws.client.core.SoapClientFactory\">\n        <property name=\"endpointUri\" value=\"http://localhost:9090/service\"/>\n    </bean>\n\n    <bean id=\"soapClient\" class=\"org.reficio.ws.client.core.SoapClient\" factory-bean=\"soapClientFactory\" factory-method=\"create\"/>\n\n    <!-- soap-server part -->\n    <bean id=\"autoResponder\" class=\"org.reficio.ws.server.responder.AutoResponder\">\n        <constructor-arg ref=\"soapBuilder\"/>\n    </bean>\n\n    <bean id=\"soapServerFactory\" class=\"org.reficio.ws.server.core.SoapServerFactory\">\n        <property name=\"httpPort\" value=\"9090\"/>\n        <property name=\"responders\">\n            <map>\n                <entry key=\"/service1\" value-ref=\"autoResponder\"/>\n                <entry key=\"/service2\" value-ref=\"autoResponder\"/>\n                <entry key=\"/service3\" value-ref=\"autoResponder\"/>\n            </map>\n        </property>\n    </bean>\n\n    <bean id=\"soapServer\" factory-bean=\"soapServerFactory\" factory-method=\"create\" init-method=\"start\"/>\n\n    <bean id=\"balanceService\" class=\"org.reficio.sample.BankServiceImpl\">\n        <constructor-arg name=\"client\" ref=\"soapClient\"/>\n    </bean>\n\n</beans>\n"
  },
  {
    "path": "soap-examples/testing/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"com.centeractive.soap\">\n        <level value=\"warn\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>"
  },
  {
    "path": "soap-examples/testing/src/test/resources/wsdl/currency-convertor.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\"\n                  xmlns:tns=\"http://www.webserviceX.NET/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  targetNamespace=\"http://www.webserviceX.NET/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n    <wsdl:types>\n        <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://www.webserviceX.NET/\">\n            <s:element name=\"ConversionRate\">\n                <s:complexType>\n                    <s:sequence>\n                        <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"FromCurrency\" type=\"tns:Currency\"/>\n                        <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ToCurrency\" type=\"tns:Currency\"/>\n                    </s:sequence>\n                </s:complexType>\n            </s:element>\n            <s:simpleType name=\"Currency\">\n                <s:restriction base=\"s:string\">\n                    <s:enumeration value=\"AFA\"/>\n                    <s:enumeration value=\"ALL\"/>\n                    <s:enumeration value=\"DZD\"/>\n                    <s:enumeration value=\"ARS\"/>\n                    <s:enumeration value=\"AWG\"/>\n                    <s:enumeration value=\"AUD\"/>\n                    <s:enumeration value=\"BSD\"/>\n                    <s:enumeration value=\"BHD\"/>\n                    <s:enumeration value=\"BDT\"/>\n                    <s:enumeration value=\"BBD\"/>\n                    <s:enumeration value=\"BZD\"/>\n                    <s:enumeration value=\"BMD\"/>\n                    <s:enumeration value=\"BTN\"/>\n                    <s:enumeration value=\"BOB\"/>\n                    <s:enumeration value=\"BWP\"/>\n                    <s:enumeration value=\"BRL\"/>\n                    <s:enumeration value=\"GBP\"/>\n                    <s:enumeration value=\"BND\"/>\n                    <s:enumeration value=\"BIF\"/>\n                    <s:enumeration value=\"XOF\"/>\n                    <s:enumeration value=\"XAF\"/>\n                    <s:enumeration value=\"KHR\"/>\n                    <s:enumeration value=\"CAD\"/>\n                    <s:enumeration value=\"CVE\"/>\n                    <s:enumeration value=\"KYD\"/>\n                    <s:enumeration value=\"CLP\"/>\n                    <s:enumeration value=\"CNY\"/>\n                    <s:enumeration value=\"COP\"/>\n                    <s:enumeration value=\"KMF\"/>\n                    <s:enumeration value=\"CRC\"/>\n                    <s:enumeration value=\"HRK\"/>\n                    <s:enumeration value=\"CUP\"/>\n                    <s:enumeration value=\"CYP\"/>\n                    <s:enumeration value=\"CZK\"/>\n                    <s:enumeration value=\"DKK\"/>\n                    <s:enumeration value=\"DJF\"/>\n                    <s:enumeration value=\"DOP\"/>\n                    <s:enumeration value=\"XCD\"/>\n                    <s:enumeration value=\"EGP\"/>\n                    <s:enumeration value=\"SVC\"/>\n                    <s:enumeration value=\"EEK\"/>\n                    <s:enumeration value=\"ETB\"/>\n                    <s:enumeration value=\"EUR\"/>\n                    <s:enumeration value=\"FKP\"/>\n                    <s:enumeration value=\"GMD\"/>\n                    <s:enumeration value=\"GHC\"/>\n                    <s:enumeration value=\"GIP\"/>\n                    <s:enumeration value=\"XAU\"/>\n                    <s:enumeration value=\"GTQ\"/>\n                    <s:enumeration value=\"GNF\"/>\n                    <s:enumeration value=\"GYD\"/>\n                    <s:enumeration value=\"HTG\"/>\n                    <s:enumeration value=\"HNL\"/>\n                    <s:enumeration value=\"HKD\"/>\n                    <s:enumeration value=\"HUF\"/>\n                    <s:enumeration value=\"ISK\"/>\n                    <s:enumeration value=\"INR\"/>\n                    <s:enumeration value=\"IDR\"/>\n                    <s:enumeration value=\"IQD\"/>\n                    <s:enumeration value=\"ILS\"/>\n                    <s:enumeration value=\"JMD\"/>\n                    <s:enumeration value=\"JPY\"/>\n                    <s:enumeration value=\"JOD\"/>\n                    <s:enumeration value=\"KZT\"/>\n                    <s:enumeration value=\"KES\"/>\n                    <s:enumeration value=\"KRW\"/>\n                    <s:enumeration value=\"KWD\"/>\n                    <s:enumeration value=\"LAK\"/>\n                    <s:enumeration value=\"LVL\"/>\n                    <s:enumeration value=\"LBP\"/>\n                    <s:enumeration value=\"LSL\"/>\n                    <s:enumeration value=\"LRD\"/>\n                    <s:enumeration value=\"LYD\"/>\n                    <s:enumeration value=\"LTL\"/>\n                    <s:enumeration value=\"MOP\"/>\n                    <s:enumeration value=\"MKD\"/>\n                    <s:enumeration value=\"MGF\"/>\n                    <s:enumeration value=\"MWK\"/>\n                    <s:enumeration value=\"MYR\"/>\n                    <s:enumeration value=\"MVR\"/>\n                    <s:enumeration value=\"MTL\"/>\n                    <s:enumeration value=\"MRO\"/>\n                    <s:enumeration value=\"MUR\"/>\n                    <s:enumeration value=\"MXN\"/>\n                    <s:enumeration value=\"MDL\"/>\n                    <s:enumeration value=\"MNT\"/>\n                    <s:enumeration value=\"MAD\"/>\n                    <s:enumeration value=\"MZM\"/>\n                    <s:enumeration value=\"MMK\"/>\n                    <s:enumeration value=\"NAD\"/>\n                    <s:enumeration value=\"NPR\"/>\n                    <s:enumeration value=\"ANG\"/>\n                    <s:enumeration value=\"NZD\"/>\n                    <s:enumeration value=\"NIO\"/>\n                    <s:enumeration value=\"NGN\"/>\n                    <s:enumeration value=\"KPW\"/>\n                    <s:enumeration value=\"NOK\"/>\n                    <s:enumeration value=\"OMR\"/>\n                    <s:enumeration value=\"XPF\"/>\n                    <s:enumeration value=\"PKR\"/>\n                    <s:enumeration value=\"XPD\"/>\n                    <s:enumeration value=\"PAB\"/>\n                    <s:enumeration value=\"PGK\"/>\n                    <s:enumeration value=\"PYG\"/>\n                    <s:enumeration value=\"PEN\"/>\n                    <s:enumeration value=\"PHP\"/>\n                    <s:enumeration value=\"XPT\"/>\n                    <s:enumeration value=\"PLN\"/>\n                    <s:enumeration value=\"QAR\"/>\n                    <s:enumeration value=\"ROL\"/>\n                    <s:enumeration value=\"RUB\"/>\n                    <s:enumeration value=\"WST\"/>\n                    <s:enumeration value=\"STD\"/>\n                    <s:enumeration value=\"SAR\"/>\n                    <s:enumeration value=\"SCR\"/>\n                    <s:enumeration value=\"SLL\"/>\n                    <s:enumeration value=\"XAG\"/>\n                    <s:enumeration value=\"SGD\"/>\n                    <s:enumeration value=\"SKK\"/>\n                    <s:enumeration value=\"SIT\"/>\n                    <s:enumeration value=\"SBD\"/>\n                    <s:enumeration value=\"SOS\"/>\n                    <s:enumeration value=\"ZAR\"/>\n                    <s:enumeration value=\"LKR\"/>\n                    <s:enumeration value=\"SHP\"/>\n                    <s:enumeration value=\"SDD\"/>\n                    <s:enumeration value=\"SRG\"/>\n                    <s:enumeration value=\"SZL\"/>\n                    <s:enumeration value=\"SEK\"/>\n                    <s:enumeration value=\"CHF\"/>\n                    <s:enumeration value=\"SYP\"/>\n                    <s:enumeration value=\"TWD\"/>\n                    <s:enumeration value=\"TZS\"/>\n                    <s:enumeration value=\"THB\"/>\n                    <s:enumeration value=\"TOP\"/>\n                    <s:enumeration value=\"TTD\"/>\n                    <s:enumeration value=\"TND\"/>\n                    <s:enumeration value=\"TRL\"/>\n                    <s:enumeration value=\"USD\"/>\n                    <s:enumeration value=\"AED\"/>\n                    <s:enumeration value=\"UGX\"/>\n                    <s:enumeration value=\"UAH\"/>\n                    <s:enumeration value=\"UYU\"/>\n                    <s:enumeration value=\"VUV\"/>\n                    <s:enumeration value=\"VEB\"/>\n                    <s:enumeration value=\"VND\"/>\n                    <s:enumeration value=\"YER\"/>\n                    <s:enumeration value=\"YUM\"/>\n                    <s:enumeration value=\"ZMK\"/>\n                    <s:enumeration value=\"ZWD\"/>\n                    <s:enumeration value=\"TRY\"/>\n                </s:restriction>\n            </s:simpleType>\n            <s:element name=\"ConversionRateResponse\">\n                <s:complexType>\n                    <s:sequence>\n                        <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ConversionRateResult\" type=\"s:double\"/>\n                    </s:sequence>\n                </s:complexType>\n            </s:element>\n            <s:element name=\"double\" type=\"s:double\"/>\n        </s:schema>\n    </wsdl:types>\n    <wsdl:message name=\"ConversionRateSoapIn\">\n        <wsdl:part name=\"parameters\" element=\"tns:ConversionRate\"/>\n    </wsdl:message>\n    <wsdl:message name=\"ConversionRateSoapOut\">\n        <wsdl:part name=\"parameters\" element=\"tns:ConversionRateResponse\"/>\n    </wsdl:message>\n    <wsdl:message name=\"ConversionRateHttpGetIn\">\n        <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n        <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n    </wsdl:message>\n    <wsdl:message name=\"ConversionRateHttpGetOut\">\n        <wsdl:part name=\"Body\" element=\"tns:double\"/>\n    </wsdl:message>\n    <wsdl:message name=\"ConversionRateHttpPostIn\">\n        <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n        <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n    </wsdl:message>\n    <wsdl:message name=\"ConversionRateHttpPostOut\">\n        <wsdl:part name=\"Body\" element=\"tns:double\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"CurrencyConvertorSoap\">\n        <wsdl:operation name=\"ConversionRate\">\n            <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency\n                to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct\n                currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font\n                face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine\n                Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh\n                Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian\n                Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi\n                Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian\n                Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese\n                Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban\n                Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican\n                Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian\n                Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian\n                Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana\n                Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian\n                Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli\n                Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan\n                Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian\n                Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian\n                Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian\n                Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius\n                Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique\n                Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles\n                Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North\n                Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium\n                Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian\n                Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian\n                Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles\n                Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak\n                Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South\n                African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam\n                Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian\n                Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago\n                Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan\n                Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan\n                Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe\n                Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n            <wsdl:input message=\"tns:ConversionRateSoapIn\"/>\n            <wsdl:output message=\"tns:ConversionRateSoapOut\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n\n    <wsdl:portType name=\"CurrencyConvertorHttpGet\">\n        <wsdl:operation name=\"ConversionRate\">\n            <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency\n                to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct\n                currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font\n                face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine\n                Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh\n                Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian\n                Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi\n                Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian\n                Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese\n                Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban\n                Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican\n                Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian\n                Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian\n                Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana\n                Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian\n                Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli\n                Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan\n                Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian\n                Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian\n                Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian\n                Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius\n                Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique\n                Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles\n                Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North\n                Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium\n                Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian\n                Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian\n                Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles\n                Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak\n                Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South\n                African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam\n                Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian\n                Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago\n                Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan\n                Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan\n                Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe\n                Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n            <wsdl:input message=\"tns:ConversionRateHttpGetIn\"/>\n            <wsdl:output message=\"tns:ConversionRateHttpGetOut\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:portType name=\"CurrencyConvertorHttpPost\">\n        <wsdl:operation name=\"ConversionRate\">\n            <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency\n                to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct\n                currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font\n                face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine\n                Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh\n                Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian\n                Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi\n                Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian\n                Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese\n                Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban\n                Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican\n                Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian\n                Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian\n                Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana\n                Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian\n                Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli\n                Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan\n                Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian\n                Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian\n                Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian\n                Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius\n                Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique\n                Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles\n                Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North\n                Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium\n                Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian\n                Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian\n                Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles\n                Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak\n                Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South\n                African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam\n                Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian\n                Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago\n                Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan\n                Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan\n                Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe\n                Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n            <wsdl:input message=\"tns:ConversionRateHttpPostIn\"/>\n            <wsdl:output message=\"tns:ConversionRateHttpPostOut\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"CurrencyConvertorSoap\" type=\"tns:CurrencyConvertorSoap\">\n        <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"ConversionRate\">\n            <soap:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n            <wsdl:input>\n                <soap:body use=\"literal\"/>\n            </wsdl:input>\n            <wsdl:output>\n                <soap:body use=\"literal\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:binding name=\"CurrencyConvertorSoap12\" type=\"tns:CurrencyConvertorSoap\">\n        <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"ConversionRate\">\n            <soap12:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n            <wsdl:input>\n                <soap12:body use=\"literal\"/>\n            </wsdl:input>\n            <wsdl:output>\n                <soap12:body use=\"literal\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:binding name=\"CurrencyConvertorHttpGet\" type=\"tns:CurrencyConvertorHttpGet\">\n        <http:binding verb=\"GET\"/>\n        <wsdl:operation name=\"ConversionRate\">\n            <http:operation location=\"/ConversionRate\"/>\n            <wsdl:input>\n                <http:urlEncoded/>\n            </wsdl:input>\n            <wsdl:output>\n                <mime:mimeXml part=\"Body\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:binding name=\"CurrencyConvertorHttpPost\" type=\"tns:CurrencyConvertorHttpPost\">\n        <http:binding verb=\"POST\"/>\n        <wsdl:operation name=\"ConversionRate\">\n            <http:operation location=\"/ConversionRate\"/>\n            <wsdl:input>\n                <mime:content type=\"application/x-www-form-urlencoded\"/>\n            </wsdl:input>\n            <wsdl:output>\n                <mime:mimeXml part=\"Body\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"CurrencyConvertor\">\n        <wsdl:port name=\"CurrencyConvertorSoap\" binding=\"tns:CurrencyConvertorSoap\">\n            <soap:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n        </wsdl:port>\n        <wsdl:port name=\"CurrencyConvertorSoap12\" binding=\"tns:CurrencyConvertorSoap12\">\n            <soap12:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n        </wsdl:port>\n        <wsdl:port name=\"CurrencyConvertorHttpGet\" binding=\"tns:CurrencyConvertorHttpGet\">\n            <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n        </wsdl:port>\n        <wsdl:port name=\"CurrencyConvertorHttpPost\" binding=\"tns:CurrencyConvertorHttpPost\">\n            <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>"
  },
  {
    "path": "soap-it/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-it</artifactId>\n    <packaging>jar</packaging>\n    <name>soap-it - integration tests</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>${project.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>${project.version}</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.littleshoot</groupId>\n            <artifactId>littleproxy</artifactId>\n            <version>0.4</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/AbstractCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.core.SoapUtils;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.common.XmlUtils;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.it.util.TestUtils;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.wsdl.OperationType;\nimport javax.wsdl.WSDLException;\nimport javax.xml.namespace.QName;\nimport java.io.InputStream;\nimport java.net.URL;\nimport java.security.KeyStore;\n\nimport static junit.framework.Assert.assertTrue;\n\n/**\n * Abstract SoapServer<->SoapClient integration test with lots of convenience methods.\n * Basically, what it does is:\n * - read the test set from the resources folder -> test set id is passed to the reader\n * - starts the soap server and registers an auto-responder for the specified WSDL\n * - generates an XML request and response for every operation in the WSDL\n * - creates a SoapClient and post the XML request to the Server\n * - receives the response from the server and compares it to the response generated locally by the client.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic abstract class AbstractCooperationTest {\n\n    private final static Log log = LogFactory.getLog(AbstractCooperationTest.class);\n\n    public static final String HOST_URL = \"localhost\";\n    public static final int HOST_PORT = 9696;\n\n    protected SoapServer server;\n\n    protected static URL getKeyStoreUrlOne() {\n        return ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores/single-cert-keystore\", \".keystore_1\");\n    }\n\n    protected static URL getKeyStoreUrlTwo() {\n        return ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores/single-cert-keystore\", \".keystore_2\");\n    }\n\n    protected static URL getMultiKeyStoreUrl() {\n        return ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores/multi-cert-keystore\", \".keystore\");\n    }\n\n    protected String getKeyStorePassword() {\n        return \"changeit\";\n    }\n\n    protected void verifyServiceBehavior(int testServiceId, ClientBuilder clientBuilder) throws Exception {\n        verifyServiceBehavior(testServiceId, null, clientBuilder);\n    }\n\n    protected void verifyServiceBehavior(int testServiceId) throws Exception {\n        verifyServiceBehavior(testServiceId, new ClientBuilderImpl());\n    }\n\n    protected void verifyServiceBehavior(int testServiceId, Boolean postSoapAction, ClientBuilder clientBuilder) throws Exception {\n        log.info(String.format(\"------------------- TESTING SERVICE [%d] -----------------------\", testServiceId));\n        Wsdl parser = TestUtils.createParserForService(testServiceId);\n        registerHandler(server, testServiceId, parser);\n\n        for (QName bindingName : parser.getBindings()) {\n            SoapBuilder builder = parser.binding().name(bindingName).find();\n            String contextPath = TestUtils.formatContextPath(testServiceId, builder.getBindingName());\n            String endpointUrl = formatEndpointAddress(contextPath);\n\n            for (SoapOperation operation : builder.getOperations()) {\n                if (postSoapAction == null) {\n                    // test both with and without soap action\n                    testOperation(clientBuilder, builder, operation, endpointUrl, Boolean.TRUE);\n                    testOperation(clientBuilder, builder, operation, endpointUrl, Boolean.FALSE);\n                } else {\n                    testOperation(clientBuilder, builder, operation, endpointUrl, postSoapAction);\n                }\n            }\n        }\n    }\n\n    protected void verifyServiceBehavior(int testServiceId, Boolean postSoapAction) throws Exception {\n        verifyServiceBehavior(testServiceId, postSoapAction, new ClientBuilderImpl());\n    }\n\n    private void testOperation(ClientBuilder clientBuilder, SoapBuilder soapBuilder, SoapOperation operation, String endpointUrl, Boolean postSoapAction) throws Exception {\n        log.info(\"Testing operation: \" + operation);\n        String request = soapBuilder.buildInputMessage(operation);\n\n        if (!operation.isInputSoapEncoded()) {\n            soapBuilder.validateInputMessage(operation, request);\n        }\n        assertTrue(\"Generated request is empty!\", request.length() > 0);\n\n        Binding binding = soapBuilder.getBinding();\n        BindingOperation op = binding.getBindingOperation(operation.getOperationName(), operation.getOperationInputName(),\n                operation.getOperationOutputName());\n\n        String response;\n        SoapClient client = clientBuilder.buildClient(endpointUrl);\n        if (postSoapAction.booleanValue()) {\n            String soapAction = SoapUtils.getSOAPActionUri(op);\n            response = postRequest(client, request, soapAction);\n        } else {\n            response = postRequest(client, request);\n        }\n\n        SoapContext context = SoapContext.builder().exampleContent(true).build();\n        if (op.getOperation().getStyle().equals(OperationType.REQUEST_RESPONSE)) {\n            String expectedResponse = soapBuilder.buildOutputMessage(operation, context);\n            if (!operation.isOutputSoapEncoded()) {\n                soapBuilder.validateOutputMessage(operation, response);\n            }\n            assertTrue(\"Generated expectedResponse is empty!\", expectedResponse.length() > 0);\n            boolean identical = XmlUtils.isIdenticalNormalizedWithoutValues(expectedResponse, response);\n            assertTrue(\"Error during validation of service \" + endpointUrl, identical);\n        }\n    }\n\n    private void registerHandler(SoapServer server, int testServiceId, Wsdl parser) throws WSDLException {\n        TestUtils.registerService(server, testServiceId, parser);\n    }\n\n    private String formatEndpointAddress(String contextPath) {\n        return String.format(\"%s:%s%s\", HOST_URL, HOST_PORT, contextPath);\n    }\n\n    private String postRequest(SoapClient client, String request) {\n        return client.post(request);\n    }\n\n    private String postRequest(SoapClient client, String request, String soapAction) {\n        return client.post(soapAction, request);\n    }\n\n    class ClientBuilderImpl implements ClientBuilder {\n        @Override\n        public SoapClient buildClient(String endpointUrl) {\n            return SoapClient.builder().endpointUri(\"http://\" + endpointUrl).build();\n        }\n    }\n\n    protected KeyStore readKeyStore(URL keyStoreUrl, String keyStorePassword, String keyStoreType) {\n        InputStream in = null;\n        try {\n            in = keyStoreUrl.openStream();\n            KeyStore ks = KeyStore.getInstance(keyStoreType);\n            ks.load(in, keyStorePassword.toCharArray());\n            return ks;\n        } catch (Exception e) {\n            throw new RuntimeException(e);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Test;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport static junit.framework.Assert.assertEquals;\nimport static junit.framework.Assert.assertNotNull;\n\n/**\n * Test SoapServer<->SoapClient communication using plain HTTP connection\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class HttpCooperationTest extends AbstractCooperationTest {\n\n    private final static boolean SKIP_SOAP_ACTION = false;\n    private final static boolean POST_SOAP_ACTION = true;\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .httpPort(HOST_PORT)\n                .build();\n        server.start();\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n    }\n\n    @Test\n    public void testService1() throws Exception {\n        verifyServiceBehavior(1);\n    }\n\n    @Test\n    public void testService2() throws Exception {\n        verifyServiceBehavior(2);\n    }\n\n    @Test\n    public void testService3() throws Exception {\n        verifyServiceBehavior(3);\n    }\n\n    @Test\n    public void testService4() throws Exception {\n        verifyServiceBehavior(4);\n    }\n\n    @Test\n    public void testService5() throws Exception {\n        verifyServiceBehavior(5);\n    }\n\n    @Test\n    public void testService6() throws Exception {\n        verifyServiceBehavior(6);\n    }\n\n    @Test\n    public void testService7() throws Exception {\n        verifyServiceBehavior(7);\n    }\n\n    @Test\n    public void testService8() throws Exception {\n        verifyServiceBehavior(8);\n    }\n\n    @Test\n    public void testService9() throws Exception {\n        verifyServiceBehavior(9);\n    }\n\n    @Test\n    public void testService10() throws Exception {\n        verifyServiceBehavior(10);\n    }\n\n    @Test\n    public void testService11() throws Exception {\n        verifyServiceBehavior(11);\n    }\n\n    @Test\n    public void testService12() throws Exception {\n        verifyServiceBehavior(12);\n    }\n\n    @Test\n    public void testService13() throws Exception {\n        verifyServiceBehavior(13);\n    }\n\n    @Test\n    public void testService14() throws Exception {\n        verifyServiceBehavior(14);\n    }\n\n    @Test\n    public void testService15_noSoapAction() throws Exception {\n        TransmissionException expected = null;\n        try {\n            verifyServiceBehavior(15, SKIP_SOAP_ACTION);\n        } catch (TransmissionException ex) {\n            expected = ex;\n        }\n        assertNotNull(expected);\n        assertEquals(Integer.valueOf(500), expected.getErrorCode());\n    }\n\n    @Test\n    public void testService15_withSoapAction() throws Exception {\n        verifyServiceBehavior(15, POST_SOAP_ACTION);\n    }\n\n    @Test\n    public void testService16() throws Exception {\n        verifyServiceBehavior(16);\n    }\n\n    @Test\n    public void testService17() throws Exception {\n        verifyServiceBehavior(17);\n    }\n\n    @Test\n    public void testService18() throws Exception {\n        verifyServiceBehavior(18);\n    }\n\n    @Test\n    public void testService19() throws Exception {\n        verifyServiceBehavior(19);\n    }\n\n    @Test\n    public void testService20() throws Exception {\n        verifyServiceBehavior(20);\n    }\n\n    @Test\n    public void testService22() throws Exception {\n        verifyServiceBehavior(22);\n    }\n\n    @Test\n    public void testService23() throws Exception {\n        TransmissionException expected = null;\n        try {\n            verifyServiceBehavior(23);\n        } catch (TransmissionException ex) {\n            expected = ex;\n        }\n        assertNotNull(expected);\n        assertEquals(Integer.valueOf(500), expected.getErrorCode());\n    }\n\n    @Test\n    public void testService25() throws Exception {\n        verifyServiceBehavior(25, POST_SOAP_ACTION);\n    }\n\n    @Test\n    public void testService26() throws Exception {\n        verifyServiceBehavior(26);\n    }\n\n    //    TODO add WSDL validation\n//    @Test\n    // not a valid WSDL test\n    public void testService27() throws Exception {\n        verifyServiceBehavior(27);\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpProxyHttpCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.littleshoot.proxy.DefaultHttpProxyServer;\nimport org.littleshoot.proxy.HttpProxyServer;\nimport org.littleshoot.proxy.ProxyAuthorizationHandler;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.client.core.Security;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.server.core.SoapServer;\n\n/**\n * Test SoapServer<->SoapClient communication using HTTPS\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class HttpProxyHttpCooperationTest extends AbstractCooperationTest {\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    private final static int PROXY_PORT = 9797;\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .httpPort(HOST_PORT)\n                .build();\n        server.start();\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n    }\n\n    public HttpProxyServer initProxy() {\n        HttpProxyServer proxyServer = new DefaultHttpProxyServer(PROXY_PORT);\n        proxyServer.start(true, true);\n        return proxyServer;\n    }\n\n    @Test\n    public void testService1_httpProxy_defaultProxySetting() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_directProxy() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_noAuthentication() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_success() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n        try {\n\n            final Security security = Security.builder()\n                    .authBasic(\"tom\", \"007\")\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder()\n                            .endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .proxySecurity(security)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_failure() throws Exception {\n\n        exception.expect(TransmissionException.class);\n        exception.expectMessage(\"[407]\");\n\n        HttpProxyServer proxyServer = initProxy();\n\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security props = Security.builder()\n                .authBasic(\"james\", \"003\")\n                .build();\n\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .proxySecurity(props)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpProxyHttpsCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.littleshoot.proxy.DefaultHttpProxyServer;\nimport org.littleshoot.proxy.HttpProxyServer;\nimport org.littleshoot.proxy.ProxyAuthorizationHandler;\nimport org.reficio.ws.client.SoapClientException;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.client.core.Security;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.server.core.SoapServer;\n\n/**\n * Test SoapServer<->SoapClient communication using HTTPS\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class HttpProxyHttpsCooperationTest extends AbstractCooperationTest {\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    private final static int PROXY_PORT = 9797;\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .keyStoreUrl(getKeyStoreUrlOne())\n                .keyStorePassword(getKeyStorePassword())\n                .httpsPort(HOST_PORT)\n                .build();\n        server.start();\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n    }\n\n    public HttpProxyServer initProxy() {\n        HttpProxyServer proxyServer = new DefaultHttpProxyServer(PROXY_PORT);\n        proxyServer.start(true, true);\n        return proxyServer;\n    }\n\n    @Test\n    public void testService1_httpProxy_defaultProxySetting() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                            .endpointSecurity(securityContext)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_directProxy() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                            .endpointSecurity(securityContext)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_noAuthentication() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .endpointSecurity(securityContext)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_success() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            final Security security = Security.builder()\n                    .authBasic(\"tom\", \"007\")\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder()\n                            .endpointUri(\"https://\" + endpointUrl)\n                            .endpointSecurity(securityContext)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .proxySecurity(security)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_wrongKeystore_failure() throws Exception {\n        exception.expect(SoapClientException.class);\n        exception.expectMessage(\"peer not authenticated\");\n\n        HttpProxyServer proxyServer = initProxy();\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlTwo())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            final Security security = Security.builder()\n                    .authBasic(\"tom\", \"007\")\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder()\n                            .endpointUri(\"https://\" + endpointUrl)\n                            .endpointSecurity(securityContext)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .proxySecurity(security)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_failure() throws Exception {\n\n        exception.expect(TransmissionException.class);\n        exception.expectMessage(\"[407]\");\n\n        HttpProxyServer proxyServer = initProxy();\n\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security props = Security.builder()\n                .authBasic(\"james\", \"003\")\n                .build();\n\n        try {\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                            .proxyUri(\"http://127.0.0.1:\" + PROXY_PORT)\n                            .proxySecurity(props)\n                            .endpointSecurity(securityContext)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpsCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.junit.runner.RunWith;\nimport org.junit.runners.Parameterized;\nimport org.reficio.ws.client.SoapClientException;\nimport org.reficio.ws.client.core.Security;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport java.net.URL;\nimport java.util.Arrays;\nimport java.util.Collection;\n\n/**\n * Test SoapServer<->SoapClient communication using HTTPS\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\n@RunWith(Parameterized.class)\npublic class HttpsCooperationTest extends AbstractCooperationTest {\n\n    private URL keyStoreUrl;\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    public HttpsCooperationTest(URL url) {\n        keyStoreUrl = url;\n    }\n\n    @Parameterized.Parameters\n    public static Collection keyStores() {\n        return Arrays.asList(new Object[][]{{getKeyStoreUrlOne()}, {getMultiKeyStoreUrl()}});\n    }\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .keyStoreUrl(keyStoreUrl)\n                .keyStorePassword(getKeyStorePassword())\n                .httpsPort(HOST_PORT)\n                .build();\n        server.start();\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n    }\n\n    @Test\n    public void testService1() throws Exception {\n        verifyServiceBehavior(1, client());\n    }\n\n    @Test\n    public void testService2() throws Exception {\n        verifyServiceBehavior(2, client());\n    }\n\n    @Test\n    public void testService2_wrongKeyStore_failure() throws Exception {\n\n        exception.expect(SoapClientException.class);\n        exception.expectMessage(\"not authenticated\");\n\n        verifyServiceBehavior(2, new ClientBuilder() {\n            @Override\n            public SoapClient buildClient(String endpointUrl) {\n                Security securityContext = Security.builder()\n                        .trustStoreUrl(getKeyStoreUrlTwo())\n                        .trustStorePassword(getKeyStorePassword())\n                        .build();\n\n                return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                        .endpointSecurity(securityContext)\n                        .build();\n            }\n        });\n    }\n\n    private class HttpsClientBuilder implements ClientBuilder {\n        @Override\n        public SoapClient buildClient(String endpointUrl) {\n            Security securityContext = Security.builder()\n                    .trustStoreUrl(keyStoreUrl)\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                    .endpointSecurity(securityContext)\n                    .build();\n        }\n    }\n\n    private ClientBuilder client() {\n        return new HttpsClientBuilder();\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpsProxyHttpCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.littleshoot.proxy.DefaultHttpProxyServer;\nimport org.littleshoot.proxy.HttpProxyServer;\nimport org.littleshoot.proxy.ProxyAuthorizationHandler;\nimport org.reficio.ws.client.SoapClientException;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.client.core.Security;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.it.util.SslTunnel;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport java.security.KeyStore;\n\n/**\n * Test SoapServer<->SoapClient communication using HTTPS\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class HttpsProxyHttpCooperationTest extends AbstractCooperationTest {\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    private final static int PROXY_PORT = 9797;\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .httpPort(HOST_PORT)\n                .build();\n        server.start();\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n    }\n\n    public HttpProxyServer initProxy() {\n        HttpProxyServer proxyServer = new DefaultHttpProxyServer(PROXY_PORT);\n        proxyServer.start(true, true);\n        return proxyServer;\n    }\n\n    @Test\n    public void testService1_httpsProxy_defaultProxySetting() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpsProxy_directProxy() throws Exception {\n        HttpProxyServer proxyServer = initProxy();\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .build();\n                }\n            });\n        } finally {\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpsProxy_noAuthentication() throws Exception {\n\n        KeyStore ks = readKeyStore(getKeyStoreUrlOne(), getKeyStorePassword(), \"JKS\");\n        SslTunnel tunnel = new SslTunnel(ks, getKeyStorePassword(), 9898, \"localhost\", 9797);\n        tunnel.start();\n\n        HttpProxyServer proxyServer = initProxy();\n        try {\n\n            final Security securityContext = Security.builder()\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"https://127.0.0.1:\" + 9898)\n                            .proxySecurity(securityContext)\n                            .build();\n                }\n            });\n        } finally {\n            tunnel.stop();\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_success() throws Exception {\n\n        KeyStore ks = readKeyStore(getKeyStoreUrlOne(), getKeyStorePassword(), \"JKS\");\n        SslTunnel tunnel = new SslTunnel(ks, getKeyStorePassword(), 9898, \"localhost\", 9797);\n        tunnel.start();\n\n        HttpProxyServer proxyServer = initProxy();\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n        try {\n\n            final Security security = Security.builder()\n                    .authBasic(\"tom\", \"007\")\n                    .trustStoreUrl(getKeyStoreUrlOne())\n                    .trustStorePassword(getKeyStorePassword())\n                    .build();\n\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder()\n                            .endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"https://127.0.0.1:\" + 9898)\n                            .proxySecurity(security)\n                            .build();\n                }\n            });\n        } finally {\n            tunnel.stop();\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_failure() throws Exception {\n\n        exception.expect(TransmissionException.class);\n        exception.expectMessage(\"[407]\");\n\n        KeyStore ks = readKeyStore(getKeyStoreUrlOne(), getKeyStorePassword(), \"JKS\");\n        SslTunnel tunnel = new SslTunnel(ks, getKeyStorePassword(), 9898, \"localhost\", 9797);\n        tunnel.start();\n\n        HttpProxyServer proxyServer = initProxy();\n\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security props = Security.builder()\n                .authBasic(\"james\", \"003\")\n                .trustStoreUrl(getKeyStoreUrlOne())\n                .trustStorePassword(getKeyStorePassword())\n                .build();\n\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"https://127.0.0.1:\" + 9898)\n                            .proxySecurity(props)\n                            .build();\n                }\n            });\n        } finally {\n            tunnel.stop();\n            proxyServer.stop();\n        }\n    }\n\n    @Test\n    public void testService1_httpProxy_basicAuthentication_wrongKeystore_failure() throws Exception {\n\n        exception.expect(SoapClientException.class);\n        exception.expectMessage(\"peer not authenticated\");\n\n        KeyStore ks = readKeyStore(getKeyStoreUrlTwo(), getKeyStorePassword(), \"JKS\");\n        SslTunnel tunnel = new SslTunnel(ks, getKeyStorePassword(), 9898, \"localhost\", 9797);\n        tunnel.start();\n\n        HttpProxyServer proxyServer = initProxy();\n\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security props = Security.builder()\n                .authBasic(\"tom\", \"007\")\n                .trustStoreUrl(getKeyStoreUrlOne())\n                .trustStorePassword(getKeyStorePassword())\n                .build();\n\n        try {\n            verifyServiceBehavior(1, new ClientBuilder() {\n                @Override\n                public SoapClient buildClient(String endpointUrl) {\n                    return SoapClient.builder().endpointUri(\"http://\" + endpointUrl)\n                            .proxyUri(\"https://127.0.0.1:\" + 9898)\n                            .proxySecurity(props)\n                            .build();\n                }\n            });\n        } finally {\n            tunnel.stop();\n            proxyServer.stop();\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/HttpsProxyHttpsCooperationTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it;\n\nimport org.junit.After;\nimport org.junit.Before;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.littleshoot.proxy.DefaultHttpProxyServer;\nimport org.littleshoot.proxy.HttpFilter;\nimport org.littleshoot.proxy.HttpProxyServer;\nimport org.littleshoot.proxy.ProxyAuthorizationHandler;\nimport org.reficio.ws.client.TransmissionException;\nimport org.reficio.ws.client.core.Security;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.it.util.ClientBuilder;\nimport org.reficio.ws.it.util.SslTunnel;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport java.security.KeyStore;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * Test SoapServer<->SoapClient communication using HTTPS\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class HttpsProxyHttpsCooperationTest extends AbstractCooperationTest {\n\n    @Rule\n    public ExpectedException exception = ExpectedException.none();\n\n    private final static int PROXY_PORT = 9797;\n    private final static int PROXY_SSL_PORT = 9898;\n\n    private SslTunnel tunnel;\n    private HttpProxyServer proxyServer;\n\n\n    @Before\n    public void initializeServer() {\n        server = SoapServer.builder()\n                .keyStoreUrl(getKeyStoreUrlOne())\n                .keyStorePassword(getKeyStorePassword())\n                .httpsPort(HOST_PORT)\n                .build();\n        server.start();\n\n        tunnel = getProxyTunnel();\n        tunnel.start();\n\n        proxyServer = getProxy();\n        proxyServer.start(true, true);\n\n    }\n\n    @After\n    public void destroyServer() {\n        server.stop();\n        proxyServer.stop();\n        tunnel.stop();\n        try {\n            Thread.sleep(1000);\n        } catch (InterruptedException e) {\n        }\n    }\n\n    public HttpProxyServer getProxy() {\n        Map<String, HttpFilter> filters = new HashMap<String, HttpFilter>();\n        HttpProxyServer proxyServer = new DefaultHttpProxyServer(PROXY_PORT, filters, null, null, null);\n        return proxyServer;\n    }\n\n    private Security proxySecurity() {\n        Security securityContext = Security.builder()\n                .trustStoreUrl(getKeyStoreUrlTwo())\n                .trustStorePassword(getKeyStorePassword())\n                .build();\n        return securityContext;\n    }\n\n    private SslTunnel getProxyTunnel() {\n        KeyStore ks = readKeyStore(getKeyStoreUrlTwo(), getKeyStorePassword(), \"JKS\");\n        SslTunnel tunnel = new SslTunnel(ks, getKeyStorePassword(), PROXY_SSL_PORT, \"localhost\", PROXY_PORT);\n        return tunnel;\n    }\n\n    private Security endpointSecurity() {\n        Security securityContext = Security.builder()\n                .trustStoreUrl(getKeyStoreUrlOne())\n                .trustStorePassword(getKeyStorePassword())\n                .build();\n        return securityContext;\n    }\n\n//    @Test\n//    public void testService1_httpProxy_defaultProxySetting_noProxy() throws Exception {\n//        verifyServiceBehavior(1, new ClientBuilder() {\n//            @Override\n//            public SoapClient buildClient(String endpointUrl) {\n//                return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n//                        .endpointSecurity(endpointSecurity())\n//                        .build();\n//            }\n//        });\n//    }\n\n    @Test\n    public void testService1_httpProxy_noAuthentication() throws Exception {\n        verifyServiceBehavior(1, new ClientBuilder() {\n            @Override\n            public SoapClient buildClient(String endpointUrl) {\n                return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                        .endpointSecurity(endpointSecurity())\n                        .proxyUri(\"https://127.0.0.1:\" + PROXY_SSL_PORT)\n                        .proxySecurity(proxySecurity())\n                        .build();\n            }\n        });\n    }\n\n    @Test\n    public void testService1_httpsProxy_basicAuthentication_success() throws Exception {\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security securityContext = Security.builder()\n                .trustStoreUrl(getKeyStoreUrlTwo())\n                .trustStorePassword(getKeyStorePassword())\n                .authBasic(\"tom\", \"007\")\n                .build();\n\n        verifyServiceBehavior(1, new ClientBuilder() {\n            @Override\n            public SoapClient buildClient(String endpointUrl) {\n                return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                        .endpointSecurity(endpointSecurity())\n                        .proxyUri(\"https://127.0.0.1:\" + PROXY_SSL_PORT)\n                        .proxySecurity(securityContext)\n                        .build();\n            }\n        });\n    }\n\n\n    @Test\n    public void testService1_httpsProxy_basicAuthentication_failure() throws Exception {\n\n        exception.expect(TransmissionException.class);\n        exception.expectMessage(\"[407]\");\n\n        proxyServer.addProxyAuthenticationHandler(new ProxyAuthorizationHandler() {\n            @Override\n            public boolean authenticate(String user, String pass) {\n                return user.equals(\"tom\") && pass.equals(\"007\");\n            }\n        });\n\n        final Security securityContext = Security.builder()\n                .trustStoreUrl(getKeyStoreUrlTwo())\n                .trustStorePassword(getKeyStorePassword())\n                .authBasic(\"james\", \"003\")\n                .build();\n\n        verifyServiceBehavior(1, new ClientBuilder() {\n            @Override\n            public SoapClient buildClient(String endpointUrl) {\n                return SoapClient.builder().endpointUri(\"https://\" + endpointUrl)\n                        .endpointSecurity(endpointSecurity())\n                        .proxyUri(\"https://127.0.0.1:\" + PROXY_SSL_PORT)\n                        .proxySecurity(securityContext)\n                        .build();\n            }\n        });\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/util/ClientBuilder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it.util;\n\nimport org.reficio.ws.client.core.SoapClient;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic interface ClientBuilder {\n    SoapClient buildClient(String endpointUrl);\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/util/SslTunnel.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it.util;\n\nimport org.apache.commons.io.IOUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport javax.net.ssl.*;\nimport java.io.InputStream;\nimport java.io.OutputStream;\nimport java.net.InetSocketAddress;\nimport java.net.ServerSocket;\nimport java.net.Socket;\nimport java.security.KeyStore;\nimport java.security.SecureRandom;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.concurrent.CountDownLatch;\nimport java.util.concurrent.atomic.AtomicBoolean;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class SslTunnel {\n\n    private final static Log log = LogFactory.getLog(SslTunnel.class);\n\n    private final KeyStore trustStore;\n    private final KeyStore keyStore;\n    private final String keyStorePassword;\n    private final int sourcePort;\n    private final String targetHost;\n    private final int targetPort;\n    private final AtomicBoolean run = new AtomicBoolean(true);\n\n    private SSLContext sslContext;\n    private ServerSocket socket;\n    private CountDownLatch latch = new CountDownLatch(3);\n\n    private List<Socket> clients = new ArrayList<Socket>();\n\n    public SslTunnel(KeyStore keyStore, String keyStorePassword, int sourcePort, String targetHost, int targetPort) {\n        this.trustStore = null;\n        this.keyStore = keyStore;\n        this.keyStorePassword = keyStorePassword;\n        this.sourcePort = sourcePort;\n        this.targetHost = targetHost;\n        this.targetPort = targetPort;\n    }\n\n    public SslTunnel(KeyStore keyStore, String keyStorePassword, KeyStore trustStore, int sourcePort, String targetHost, int targetPort) {\n        this.trustStore = trustStore;\n        this.keyStore = keyStore;\n        this.keyStorePassword = keyStorePassword;\n        this.sourcePort = sourcePort;\n        this.targetHost = targetHost;\n        this.targetPort = targetPort;\n    }\n\n    public void start() {\n        try {\n            sslContext = SSLContext.getInstance(\"SSLv3\");\n            KeyManager[] keyManagers = null;\n            TrustManager[] trustManagers = null;\n\n            if (keyStore != null) {\n                KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());\n                keyManagerFactory.init(keyStore, keyStorePassword.toCharArray());\n                X509KeyManager defaultKeyManager = (X509KeyManager) keyManagerFactory.getKeyManagers()[0];\n                keyManagers = new KeyManager[]{defaultKeyManager};\n\n            }\n            if (trustStore != null) {\n                TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());\n                trustManagerFactory.init(trustStore);\n                X509TrustManager defaultTrustManager = (X509TrustManager) trustManagerFactory.getTrustManagers()[0];\n                trustManagers = new TrustManager[]{defaultTrustManager};\n            }\n\n            sslContext.init(keyManagers, trustManagers, new SecureRandom());\n\n            SSLServerSocketFactory socketFactory = sslContext.getServerSocketFactory();\n            socket = socketFactory.createServerSocket();\n            socket.setReuseAddress(true);\n            socket.bind(new InetSocketAddress(sourcePort));\n            new ServerThread(socket, run).start();\n        } catch (Exception ex) {\n            throw new RuntimeException(ex.getMessage(), ex);\n        }\n    }\n\n    class ServerThread extends Thread {\n        private final ServerSocket server;\n        private final AtomicBoolean run;\n\n        public ServerThread(ServerSocket server, AtomicBoolean run) {\n            this.server = server;\n            this.run = run;\n        }\n\n        public void run() {\n            try {\n                server.setSoTimeout(100);\n            } catch (Exception e) {\n            }\n            while (run.get()) {\n                try {\n                    Socket client = server.accept();\n                    if (client != null) {\n                        clients.add(client);\n                        new PipeThread(client, run).start();\n                    }\n                } catch (Exception e) {\n                }\n            }\n            IOUtils.closeQuietly(server);\n            latch.countDown();\n        }\n    }\n\n    public void stop() {\n        try {\n            run.set(false);\n            IOUtils.closeQuietly(socket);\n            for(Socket client : clients) {\n                IOUtils.closeQuietly(client);\n            }\n            latch.await();\n        } catch (Exception ex) {\n            throw new RuntimeException();\n        }\n    }\n\n    class PipeThread extends Thread {\n        private final Socket client;\n        private final AtomicBoolean run;\n\n        public PipeThread(Socket client, AtomicBoolean run) {\n            this.client = client;\n            this.run = run;\n        }\n\n        public void run() {\n            try {\n                final Socket target = new Socket(targetHost, targetPort);\n                final InputStream ti = target.getInputStream();\n                final OutputStream to = target.getOutputStream();\n                target.setSoTimeout(100);\n\n                final InputStream ci = client.getInputStream();\n                final OutputStream co = client.getOutputStream();\n                client.setSoTimeout(100);\n\n                new Thread() {\n                    public void run() {\n                        try {\n                            while (run.get()) {\n                                try {\n                                    int read = 0;\n                                    byte[] buffer = new byte[4096];\n                                    read = ti.read(buffer);\n                                    if (read == -1) {\n                                        break;\n                                    }\n                                    co.write(buffer, 0, read);\n                                } catch (Exception ex) {\n                                }\n                            }\n                            IOUtils.closeQuietly(client);\n                        } finally {\n                            latch.countDown();\n                        }\n                    }\n                }.start();\n\n                new Thread() {\n                    public void run() {\n                        try {\n                            while (run.get()) {\n                                try {\n                                    int read = 0;\n                                    byte[] buffer = new byte[4096];\n                                    read = ci.read(buffer);\n                                    if (read == -1) {\n                                        break;\n                                    }\n                                    to.write(buffer, 0, read);\n                                } catch (Exception ex) {\n                                }\n                            }\n                        } finally {\n                            IOUtils.closeQuietly(client);\n                        }\n                        latch.countDown();\n                    }\n                }.start();\n            } catch (Exception ex) {\n                latch.countDown();\n                latch.countDown();\n                throw new RuntimeException(ex.getMessage(), ex);\n            }\n        }\n\n    }\n\n\n}\n"
  },
  {
    "path": "soap-it/src/test/java/org/reficio/ws/it/util/TestUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.it.util;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.reficio.ws.server.responder.AutoResponder;\n\nimport javax.wsdl.WSDLException;\nimport javax.xml.namespace.QName;\nimport java.net.URL;\n\nimport static junit.framework.Assert.assertNotNull;\n\n/**\n * Utils used in SoapClient<->Soap Server integration testing\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class TestUtils {\n\n    private final static Log log = LogFactory.getLog(TestUtils.class);\n\n    public static Wsdl createParserForService(int testServiceId) throws WSDLException {\n        String path = getTestServiceFolderPath(testServiceId);\n        URL wsdlUrl = ResourceUtils.getResourceWithAbsolutePackagePath(path, \"TestService.wsdl\");\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        assertNotNull(parser);\n        return parser;\n    }\n\n    public static String formatContextPath(int testServiceId, QName bindingName) {\n        return \"/service\" + formatServiceId(testServiceId) + \"_\" + bindingName.getLocalPart();\n    }\n\n    public static String getTestServiceFolderPath(int testServiceId) {\n        String testServiceIdString = formatServiceId(testServiceId);\n        return \"/services/test\" + testServiceIdString;\n    }\n\n    public static String formatServiceId(int testServiceId) {\n        return (testServiceId < 10) ? \"0\" + testServiceId : \"\" + testServiceId;\n    }\n\n    public static void registerService(SoapServer server, int testServiceId) throws WSDLException {\n        Wsdl parser = TestUtils.createParserForService(testServiceId);\n        registerAutoResponderForAllServiceBindings(server, testServiceId, parser);\n    }\n\n    public static void registerService(SoapServer server, int testServiceId, Wsdl parser) throws WSDLException {\n        registerAutoResponderForAllServiceBindings(server, testServiceId, parser);\n    }\n\n    public static void registerAutoResponderForAllServiceBindings(SoapServer server, int testServiceId, Wsdl parser) {\n        for (QName bindingName : parser.getBindings()) {\n            String contextPath = TestUtils.formatContextPath(testServiceId, bindingName);\n            log.info(String.format(\"Registering auto responder for service [%d] undex context path [%s]\", testServiceId, contextPath));\n            SoapContext context = SoapContext.builder().exampleContent(true).build();\n            SoapBuilder builder = parser.binding().name(bindingName).find();\n            server.registerRequestResponder(contextPath, new AutoResponder(builder, context));\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-it/src/test/resources/keystores/multi-cert-keystore/gen.sh",
    "content": "#!/bin/bash\nkeytool -genkey -keystore .keystore -alias john -storepass changeit -keypass changeit -dname \"CN=John Smith, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\nkeytool -genkey -keystore .keystore -alias george -storepass changeit -keypass changeit -dname \"CN=George Kowalski, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\n"
  },
  {
    "path": "soap-it/src/test/resources/keystores/single-cert-keystore/gen.sh",
    "content": "#!/bin/bash\nkeytool -genkey -keystore .keystore_1 -alias john -storepass changeit -keypass changeit -dname \"CN=John Smith, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\nkeytool -genkey -keystore .keystore_2 -alias george -storepass changeit -keypass changeit -dname \"CN=George Kowalski, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\n\n"
  },
  {
    "path": "soap-it/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <!-- Appenders -->\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <!--<logger name=\"org.reficio.ws.server.HttpsCooperationTest\">-->\n        <!--<level value=\"info\"/>-->\n    <!--</logger>-->\n\n    <logger name=\"org.reficio\">\n        <level value=\"error\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <!-- Root Logger -->\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test01/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\"\n                  xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\"\n                  xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n\n<wsp:Policy wsu:Id=\"UsernameTokenPolicy\" >\n\t\t<sp:UsernameToken/>\n     </wsp:Policy>\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\"><![CDATA[Read page da\n      asd\n      asd\n      s\n      ds\n      a\n      da\n      s\n      d\n      s\n      ds\n      a\n      sd\n      s\n      da\n      sd\n      as\n      da\n      s\n      da\n      sd\n      as\n      da\n      sdta from Test]]></documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test01/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" >\n            \t</s:element>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n      \t<s:restriction base=\"s:string\">\n      \t\t<s:pattern value=\"([\\w\\.@-]{3,30})?\"></s:pattern>\n      \t</s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test01/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:annotation>\n        \t<s:documentation><![CDATA[\n        \t\t<html><p><b>test <i>test</i></b></p></html>]]>\n        \t</s:documentation>\n        </s:annotation>\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" >\n          \t<s:annotation>\n          \t\t<s:documentation>WorkID is good to h</s:documentation>\n          \t</s:annotation></s:element>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test02/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test02/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test02/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test03/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:import schemaLocation=\"testservice1.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test03/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test03/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test04/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:import schemaLocation=\"testservice1.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n        <s:include schemaLocation=\"testservice2.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test04/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test04/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test05/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test05/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test05/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test05/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test06/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test06/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"./xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test06/wsdls/xsds/sub/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test06/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"./sub/testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test07/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test07/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test07/wsdls/xsds/sub/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test07/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"sub/testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test08/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n \n   <wsdl:import namespace=\"http://schemas.eviware.com/TestService/v1/\" location=\"wsdls/TestBinding.wsdl\"/>\n \n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test08/wsdls/TestBinding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"xsds/testservice1.xsd\"/>\n    </s:schema>\n     <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v2/\">\n       <s:complexType name=\"TestType\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  \n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test08/wsdls/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test08/wsdls/xsds/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:import schemaLocation=\"../testservice2.xsd\" namespace=\"http://schemas.eviware.com/TestService/v1/\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test09/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://testcase/wsdl\" targetNamespace=\"http://testcase/wsdl\">\n   <wsdl:types>\n      <xs:schema targetNamespace=\"http://testcase/wsdl\" xmlns:one=\"http://testcase/one\" xmlns:two=\"http://testcase/two\" elementFormDefault=\"qualified\">\n         <xs:import namespace=\"http://testcase/one\" schemaLocation=\"one.xsd\"/>\n         <xs:import namespace=\"http://testcase/two\" schemaLocation=\"two.xsd\"/>\n         <xs:element name=\"One\" type=\"one:OneType\"/>\n\t\t\t<xs:element name=\"Two\" type=\"two:TwoType\"/>\n      </xs:schema>\n   </wsdl:types>\n   <wsdl:message name=\"MessageRequest\">\n      <wsdl:part name=\"One\" element=\"tns:One\"/>\n   </wsdl:message>\n   <wsdl:message name=\"MessageResponse\">\n      <wsdl:part name=\"Two\" element=\"tns:One\"/>\n   </wsdl:message>\n   <wsdl:portType name=\"PortType\">\n      <wsdl:operation name=\"Operation\">\n         <wsdl:input message=\"tns:MessageRequest\"/>\n         <wsdl:output message=\"tns:MessageResponse\"/>\n      </wsdl:operation>\n   </wsdl:portType>\n   <wsdl:binding name=\"Binding\" type=\"tns:PortType\">\n      <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n      <wsdl:operation name=\"Operation\">\n         <soap:operation soapAction=\"Operation\"/>\n         <wsdl:input>\n            <soap:body use=\"literal\"/>\n         </wsdl:input>\n         <wsdl:output>\n            <soap:body use=\"literal\"/>\n         </wsdl:output>\n      </wsdl:operation>\n   </wsdl:binding>\n   <wsdl:service name=\"Service\">\n      <wsdl:port name=\"Port\" binding=\"tns:Binding\">\n         <soap:address location=\"http://testcase/wsdl\"/>\n      </wsdl:port>\n   </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test09/common.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:complexType name=\"SharedType\">\n      <xs:sequence>\n         <xs:element name=\"Content\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test09/one.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:tns=\"http://testcase/one\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://testcase/one\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:include schemaLocation=\"common.xsd\"/>\n   <xs:complexType name=\"OneType\">\n      <xs:sequence>\n         <xs:element name=\"shared\" type=\"tns:SharedType\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test09/two.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:tns=\"http://testcase/two\" xmlns:one=\"http://testcase/one\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://testcase/two\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n   <xs:include schemaLocation=\"common.xsd\"/>\n   <xs:import namespace=\"http://testcase/one\" schemaLocation=\"one.xsd\"/>\n   <xs:complexType name=\"TwoType\">\n      <xs:sequence>\n         <xs:element name=\"shared\" type=\"tns:SharedType\"/>\n         <xs:element name=\"one\" type=\"one:OneType\"/>\n      </xs:sequence>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test10/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- testing -->\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  \n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n \n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n    </wsdl:operation>\n  \n   <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n    \n    </wsdl:operation>\n     <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://localhost:8082/soapui-tests/testonewayop/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test10/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Equal\" />\n          <s:enumeration value=\"GreaterThan\" />\n          <s:enumeration value=\"LessThan\" />\n          <s:enumeration value=\"NotEqual\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test10/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test11/TestService.wsdl",
    "content": "<!--\n  ~ soapUI, copyright (C) 2004-2008 eviware.com\n  ~\n  ~ soapUI is free software; you can redistribute it and/or modify it under the\n  ~ terms of version 2.1 of the GNU Lesser General Public License as published by\n  ~ the Free Software Foundation.\n  ~\n  ~ soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\n  ~ even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  ~ See the GNU Lesser General Public License for more details at gnu.org.\n  -->\n\n<definitions name=\"urnADEC_MAST\"\n             targetNamespace=\"urn:ADEC_MAST\"\n             xmlns:typens=\"urn:ADEC_MAST\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n             xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n  <!-- Types for search - result elements, directory categories -->\n\n  <types>\n    <xsd:schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"urn:ADEC_MAST\">\n\n      <xsd:complexType name=\"SummaryResult\">\n        <xsd:all>\n          <xsd:element name=\"missionName\"       type=\"xsd:string\"/>\n          <xsd:element name=\"dataIdCount\"       type=\"xsd:int\"/>\n        </xsd:all>\n      </xsd:complexType>\n\n      <xsd:complexType name=\"SummaryResultArray\">\n        <xsd:complexContent>\n          <xsd:restriction base=\"soapenc:Array\">\n             <xsd:attribute ref=\"soapenc:arrayType\" wsdl:arrayType=\"typens:SummaryResult[]\"/>\n          </xsd:restriction>\n        </xsd:complexContent>\n\n      </xsd:complexType>\n\n    </xsd:schema>\n  </types>\n\n  <!-- Messages for ADEC MAST Web APIs - get summary by position. -->\n\n  <message name=\"doGetSummary\">\n    <part name=\"ra\"            type=\"xsd:double\"/>\n    <part name=\"dec\"           type=\"xsd:double\"/>\n    <part name=\"radius\"        type=\"xsd:double\"/>\n  </message>\n\n  <message name=\"doGetSummaryResponse\">\n    <part name=\"return\"  type=\"typens:SummaryResult\"/>\n  </message>\n\n  <!-- Port for ADEC MAST Web APIs, \"ADEC_MAST\" -->\n\n  <portType name=\"ADEC_MAST_Port\">\n\n    <operation name=\"doGetSummary\">\n      <input message=\"typens:doGetSummary\"/>\n      <output message=\"typens:doGetSummaryResponse\"/>\n    </operation>\n\n  </portType>\n\n\n  <!-- Binding for ADEC MAST Web APIs - RPC, SOAP over HTTP -->\n\n  <binding name=\"ADEC_MAST_Binding\" type=\"typens:ADEC_MAST_Port\">\n    <soap:binding style=\"rpc\"\n                  transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n    <operation name=\"doGetSummary\">\n      <soap:operation soapAction=\"urn:ADEC_MAST#doGetSummary\"/>\n      <input>\n        <soap:body use=\"encoded\"\n                   namespace=\"urn:ADEC_MAST\"\n                   encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </input>\n      <output>\n        <soap:body use=\"encoded\"\n                   namespace=\"urn:ADEC_MAST\"\n                   encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </output>\n    </operation>\n\n  </binding>\n\n  <!-- Endpoint for ADEC MAST Web APIs -->\n  <service name=\"ADEC_MAST_Service\">\n    <port name=\"ADEC_MAST_Port\" binding=\"typens:ADEC_MAST_Binding\">\n      <soap:address location=\"http://faxafloi.stsci.edu:4547/soap/\"/>\n    </port>\n  </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test12/TestService.wsdl",
    "content": "<definitions name=\"incrementService\"\n             targetNamespace=\"http://orchestra.objectweb.org/samples/incrementService\"\n             xmlns:tns=\"http://orchestra.objectweb.org/samples/incrementService\"\n             xmlns:plnk=\"http://schemas.xmlsoap.org/ws/2003/05/partner-link/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n  <types>\n    <schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://orchestra.objectweb.org/samples/incrementService\">\n      <complexType name=\"ProcessIncrementServiceType\">\n        <sequence>\n          <element name=\"value\" type=\"xsd:int\"/>\n        </sequence>\n      </complexType>\n      <complexType name=\"ProcessIncrementServiceResponseType\">\n        <sequence>\n          <element name=\"result\" type=\"xsd:int\"/>\n        </sequence>\n      </complexType>\n      <element name=\"processIncrementService\" type=\"tns:ProcessIncrementServiceType\"/>\n      <element name=\"processIncrementServiceResponse\" type=\"tns:ProcessIncrementServiceResponseType\"/>\n    </schema>\n  </types>\n\n  <message name=\"processIncrementServiceSoapRequest\">\n    <part name=\"parameters\" element=\"tns:processIncrementService\"/>\n  </message>\n\n  <message name=\"processIncrementServiceSoapResponse\">\n    <part name=\"parameters\" element=\"tns:processIncrementServiceResponse\"/>\n  </message>\n\n  <portType name=\"IncrementServicePT\">\n    <operation name=\"process\">\n      <input message=\"tns:processIncrementServiceSoapRequest\"/>\n      <output message=\"tns:processIncrementServiceSoapResponse\"/>\n    </operation>\n  </portType>\n\n  <plnk:partnerLinkType name=\"IncrementService\">\n    <plnk:role name=\"service\">\n      <plnk:portType name=\"tns:IncrementServicePT\"/>\n    </plnk:role>\n  </plnk:partnerLinkType>\n\n  <binding name=\"IncrementServicePTSOAPBinding\" type=\"tns:IncrementServicePT\">\n    <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <operation name=\"process\">\n      <input>\n        <soap:body use=\"encoded\" namespace=\"http://orchestra.objectweb.org/samples/incrementService\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </input>\n      <output>\n        <soap:body use=\"encoded\" namespace=\"http://orchestra.objectweb.org/samples/incrementService\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n      </output>\n    </operation>\n  </binding>\n\n  <service name=\"IncrementServiceServiceBP\">\n    <port name=\"IncrementServicePT\" binding=\"tns:IncrementServicePTSOAPBinding\">\n      <soap:address location=\"http://localhost:9000/axis/services/IncrementServicePT\"/>\n    </port>\n  </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test13/TestService.wsdl",
    "content": "<definitions xmlns=\"http://schemas.xmlsoap.org/wsdl/\" targetNamespace=\"http://api.ifyouwannabecool.com/\"\n             xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:ns0=\"http://api.ifyouwannabecool.com/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n  <types>\n    <xs:schema targetNamespace=\"http://api.ifyouwannabecool.com/\" xmlns=\"http://api.ifyouwannabecool.com/\">\n      <xs:include schemaLocation=\"chameleon.xsd\"/>\n      <xs:element name=\"createLink\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"createLink\". (Creates a link between two personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"persona1Id\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the first persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"persona2Id\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the second persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createLinkResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"createLink\". (Creates a link between two personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"link\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The link that was created.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"PermissionDeniedException\">\n        <xs:annotation>\n          <xs:documentation>\n            Thrown when an attempt is made to do something without the correct permissions.\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"message\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createSocialGroup\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"createSocialGroup\". (Create a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupLeader\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the group leader.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"memberIds\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n              <xs:annotation>\n                <xs:documentation>\n                  The ids of the members of the group.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"exclusive\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the group is exclusive.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"createSocialGroupResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"createSocialGroup\". (Create a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"socialGroup\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The group that was created.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"addToSocialGroup\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the group to add the persona to.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to add to the group.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"addToSocialGroupResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the persona was successfully added.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"ExclusiveGroupException\">\n        <xs:annotation>\n          <xs:documentation>\n            Thrown when trying to add someone to a social group that is exclusive.\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"groupId\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"groupLeader\" type=\"persona\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            <xs:element name=\"message\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readGroups\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readGroupsResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"socialGroup\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The social groups that were read.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readPersona\". (Reads a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to read.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readPersona\". (Reads a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The persona.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonas\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"readPersonas\". (Reads a set of personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaIds\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"unbounded\">\n              <xs:annotation>\n                <xs:documentation>\n                  The ids of the personas.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"readPersonasResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"readPersonas\". (Reads a set of personas.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The personas.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"storePersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"storePersona\". (Store a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"persona\" type=\"persona\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Th\ne persona to store.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"storePersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"storePersona\". (Store a persona.)\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"deletePersona\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit request wrapper for operation \"deletePersona\". (Delete a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"personaId\" type=\"xs:string\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  The id of the persona to delete.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n      <xs:element name=\"deletePersonaResponse\">\n        <xs:annotation>\n          <xs:documentation>\n            doc/lit response wrapper for operation \"deletePersona\". (Delete a persona.)\n          </xs:documentation>\n        </xs:annotation>\n        <xs:complexType>\n          <xs:sequence>\n            <xs:element name=\"return\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n              <xs:annotation>\n                <xs:documentation>\n                  Whether the persona was successfully deleted.\n                </xs:documentation>\n              </xs:annotation>\n            </xs:element>\n          </xs:sequence>\n        </xs:complexType>\n      </xs:element>\n    </xs:schema>\n  </types>\n  <message name=\"LinkageService.createLink\">\n    <documentation>\n      request message for operation \"createLink\". (Creates a link between two personas.)\n    </documentation>\n    <part name=\"createLink\" element=\"ns0:createLink\"/>\n  </message>\n  <message name=\"LinkageService.createLinkResponse\">\n    <documentation>\n      response message for operation \"createLink\". (Creates a link between two personas.)\n    </documentation>\n    <part name=\"createLinkResponse\" element=\"ns0:createLinkResponse\"/>\n  </message>\n  <message name=\"PermissionDeniedException\">\n    <documentation>\n      Thrown when an attempt is made to do something without the correct permissions.\n    </documentation>\n    <part name=\"PermissionDeniedException\" element=\"ns0:PermissionDeniedException\"/>\n  </message>\n  <message name=\"LinkageService.createSocialGroup\">\n    <documentation>\n      request message for operation \"createSocialGroup\". (Create a social group.)\n    </documentation>\n    <part name=\"createSocialGroup\" element=\"ns0:createSocialGroup\"/>\n  </message>\n  <message name=\"LinkageService.createSocialGroupResponse\">\n    <documentation>\n      response message for operation \"createSocialGroup\". (Create a social group.)\n    </documentation>\n    <part name=\"createSocialGroupResponse\" element=\"ns0:createSocialGroupResponse\"/>\n  </message>\n  <message name=\"LinkageService.addToSocialGroup\">\n    <documentation>\n      request message for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n    </documentation>\n    <part name=\"addToSocialGroup\" element=\"ns0:addToSocialGroup\"/>\n  </message>\n  <message name=\"LinkageService.addToSocialGroupResponse\">\n    <documentation>\n      response message for operation \"addToSocialGroup\". (Adds a persona to a social group.)\n    </documentation>\n    <part name=\"addToSocialGroupResponse\" element=\"ns0:addToSocialGroupResponse\"/>\n  </message>\n  <message name=\"ExclusiveGroupException\">\n    <documentation>\n      Thrown when trying to add someone to a social group that is exclusive.\n    </documentation>\n    <part name=\"ExclusiveGroupException\" element=\"ns0:ExclusiveGroupException\"/>\n  </message>\n  <message name=\"LinkageService.readGroups\">\n    <documentation>\n      request message for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n    </documentation>\n    <part name=\"readGroups\" element=\"ns0:readGroups\"/>\n  </message>\n  <message name=\"LinkageService.readGroupsResponse\">\n    <documentation>\n      response message for operation \"readGroups\". (Reads the social groups to which a specified persona belongs.)\n    </documentation>\n    <part name=\"readGroupsResponse\" element=\"ns0:readGroupsResponse\"/>\n  </message>\n  <message name=\"PersonaService.readPersona\">\n    <documentation>\n      request message for operation \"readPersona\". (Reads a persona.)\n    </documentation>\n    <part name=\"readPersona\" element=\"ns0:readPersona\"/>\n  </message>\n  <message name=\"PersonaService.readPersonaResponse\">\n    <documentation>\n      response m\nessage for operation \"readPersona\". (Reads a persona.)\n    </documentation>\n    <part name=\"readPersonaResponse\" element=\"ns0:readPersonaResponse\"/>\n  </message>\n  <message name=\"PersonaService.readPersonas\">\n    <documentation>\n      request message for operation \"readPersonas\". (Reads a set of personas.)\n    </documentation>\n    <part name=\"readPersonas\" element=\"ns0:readPersonas\"/>\n  </message>\n  <message name=\"PersonaService.readPersonasResponse\">\n    <documentation>\n      response message for operation \"readPersonas\". (Reads a set of personas.)\n    </documentation>\n    <part name=\"readPersonasResponse\" element=\"ns0:readPersonasResponse\"/>\n  </message>\n  <message name=\"PersonaService.storePersona\">\n    <documentation>\n      request message for operation \"storePersona\". (Store a persona.)\n    </documentation>\n    <part name=\"storePersona\" element=\"ns0:storePersona\"/>\n  </message>\n  <message name=\"PersonaService.storePersonaResponse\">\n    <documentation>\n      response message for operation \"storePersona\". (Store a persona.)\n    </documentation>\n    <part name=\"storePersonaResponse\" element=\"ns0:storePersonaResponse\"/>\n  </message>\n  <message name=\"PersonaService.deletePersona\">\n    <documentation>\n      request message for operation \"deletePersona\". (Delete a persona.)\n    </documentation>\n    <part name=\"deletePersona\" element=\"ns0:deletePersona\"/>\n  </message>\n  <message name=\"PersonaService.deletePersonaResponse\">\n    <documentation>\n      response message for operation \"deletePersona\". (Delete a persona.)\n    </documentation>\n    <part name=\"deletePersonaResponse\" element=\"ns0:deletePersonaResponse\"/>\n  </message>\n  <portType name=\"LinkageService\">\n    <documentation>\n      The linkage service is used to service the data for creating links between personas. This\nincludes links and social groups.\n    </documentation>\n    <operation name=\"createLink\">\n      <documentation>\n        Creates a link between two personas.\n      </documentation>\n      <input message=\"ns0:LinkageService.createLink\"/>\n      <output message=\"ns0:LinkageService.createLinkResponse\"/>\n      <fault name=\"PermissionDeniedException\" message=\"ns0:PermissionDeniedException\"/>\n    </operation>\n    <operation name=\"createSocialGroup\">\n      <documentation>\n        Create a social group.\n      </documentation>\n      <input message=\"ns0:LinkageService.createSocialGroup\"/>\n      <output message=\"ns0:LinkageService.createSocialGroupResponse\"/>\n    </operation>\n    <operation name=\"addToSocialGroup\">\n      <documentation>\n        Adds a persona to a social group.\n      </documentation>\n      <input message=\"ns0:LinkageService.addToSocialGroup\"/>\n      <output message=\"ns0:LinkageService.addToSocialGroupResponse\"/>\n      <fault name=\"ExclusiveGroupException\" message=\"ns0:ExclusiveGroupException\"/>\n    </operation>\n    <operation name=\"readGroups\">\n      <documentation>\n        Reads the social groups to which a specified persona belongs.\n      </documentation>\n      <input message=\"ns0:LinkageService.readGroups\"/>\n      <output message=\"ns0:LinkageService.readGroupsResponse\"/>\n    </operation>\n  </portType>\n  <portType name=\"PersonaService\">\n    <documentation>\n      The persona services is used to perform actions on the data associated with a persona.\n    </documentation>\n    <operation name=\"readPersona\">\n      <documentation>\n        Reads a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.readPersona\"/>\n      <output message=\"ns0:PersonaService.readPersonaResponse\"/>\n    </operation>\n    <operation name=\"readPersonas\">\n      <documentation>\n        Reads a set of personas.\n      </documentation>\n      <input message=\"ns0:PersonaService.readPersonas\"/>\n      <output message=\"ns0:PersonaService.readPersonasResponse\"/>\n    </operation>\n    <operation name=\"storePersona\">\n      <documentation>\n        Store a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.storePersona\"/>\n      <output message=\"ns0:PersonaService.storePersonaResponse\"/>\n    </operation>\n    <operation name=\"deletePersona\">\n      <documentation>\n        Delete a persona.\n      </documentation>\n      <input message=\"ns0:PersonaService.deletePersona\"/>\n      <output message=\"ns0:PersonaService.deletePersonaResponse\"/>\n      <fault name=\"PermissionDeniedException\" message=\"ns0:PermissionDeniedException\"/>\n    </operation>\n  </portType>\n  <binding name=\"LinkageServiceSOAPBinding\" type=\"ns0:LinkageService\">\n    <documentation>\n      SOAP Binding for LinkageService\n    </documentation>\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\"/>\n    <operation name=\"createLink\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"PermissionDeniedException\">\n        <soap:fault name=\"PermissionDeniedException\" use=\"literal\"/>\n      </fault>\n    </operation>\n    <operation name=\"createSocialGroup\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"addToSocialGroup\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"ExclusiveGroupException\">\n        <soap:fault name=\"ExclusiveGroupException\" use=\"literal\"/>\n      </fault>\n    </operation>\n    <operation name=\"readGroups\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n  </binding>\n  <binding name=\"PersonaServiceSOAPBinding\" type=\"ns0:PersonaService\">\n    <documentation>\n      SOAP Binding for PersonaService\n    </documentation>\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\"/>\n    <operation name=\"readPersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"readPersonas\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"storePersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n    </operation>\n    <operation name=\"deletePersona\">\n      <soap:operation soapAction=\"\" style=\"document\"/>\n      <input>\n        <soap:body use=\"literal\"/>\n      </input>\n      <output>\n        <soap:body use=\"literal\"/>\n      </output>\n      <fault name=\"PermissionDeniedException\">\n        <soap:fault name=\"PermissionDeniedException\" use=\"literal\"/>\n      </fault>\n    </operation>\n  </binding>\n  <service name=\"LinkageServiceService\">\n    <port name=\"LinkageServiceSOAPPort\" binding=\"ns0:LinkageServiceSOAPBinding\">\n      <soap:address location=\"http://www.ifyouwannabecool.com/api/LinkageServiceService\"/>\n    </port>\n  </service>\n  <service name=\"PersonaServiceService\">\n    <port name=\"PersonaServiceSOAPPort\" binding=\"ns0:PersonaServiceSOAPBinding\">\n      <soap:address location=\"http://www.ifyouwannabecool.com/api/PersonaServiceService\"/>\n    </port>\n  </service>\n</definitions>\n\n \t  \t \n"
  },
  {
    "path": "soap-it/src/test/resources/services/test13/chameleon.xsd",
    "content": "<xs:schema version=\"1.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <xs:complexType name=\"link\">\n    <xs:annotation>\n      <xs:documentation>\n        A link between two personas.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"persona1Id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the first persona.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"persona2Id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the second persona.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"socialGroup\">\n    <xs:annotation>\n      <xs:documentation>\n        A social group.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the social group.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"memberIds\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n        <xs:annotation>\n          <xs:documentation>\n            The ids of the members in the social group.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"groupLeaderId\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            The id of the group leader.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n      <xs:element name=\"exclusive\" type=\"xs:boolean\" minOccurs=\"1\" maxOccurs=\"1\">\n        <xs:annotation>\n          <xs:documentation>\n            Whether the group is exclusive.\n          </xs:documentation>\n        </xs:annotation>\n      </xs:element>\n    </xs:sequence>\n  </xs:complexType>\n  <xs:complexType name=\"name\">\n    <xs:annotation>\n      <xs:documentation>\n        A name of a persona.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:complexContent>\n      <xs:extension base=\"xs:anyType\"/>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"persona\">\n    <xs:sequence>\n      <xs:element name=\"id\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"email\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"alias\" type=\"xs:string\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"name\" type=\"name\" minOccurs=\"0\" maxOccurs=\"1\"/>\n      <xs:element name=\"picture\" type=\"xs:base64Binary\" minOccurs=\"0\" maxOccurs=\"1\"/>\n    </xs:sequence>\n  </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test14/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions targetNamespace=\"http://cyclic.test\" xmlns:impl=\"http://cyclic.test\"\n                  xmlns:intf=\"http://cyclic.test\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                  xmlns:wsdlsoap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n    <wsdl:types>\n        <schema targetNamespace=\"http://cyclic.test\"\n                xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:impl=\"http://cyclic.test\"\n                xmlns:intf=\"http://cyclic.test\"\n                xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n            <import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <complexType name=\"Person\">\n                <sequence>\n                    <element name=\"name\" nillable=\"true\" type=\"xsd:string\"/>\n                    <element name=\"friend\" nillable=\"true\" type=\"impl:Person\"/>\n                </sequence>\n            </complexType>\n            <element name=\"Person\" nillable=\"true\" type=\"impl:Person\"/>\n        </schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"makeFriendResponse\">\n        <wsdl:part name=\"makeFriendReturn\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:message name=\"makeFriendRequest\">\n        <wsdl:part name=\"A\" type=\"intf:Person\"/>\n        <wsdl:part name=\"B\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"MakeFriends\">\n        <wsdl:operation name=\"makeFriend\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\"\n                         name=\"makeFriendResponse\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"MakeFriendsSoapBinding\" type=\"intf:MakeFriends\">\n        <wsdlsoap:binding style=\"rpc\"\n                          transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"makeFriend\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"MakeFriendsService\">\n        <wsdl:port binding=\"intf:MakeFriendsSoapBinding\" name=\"MakeFriends\">\n            <wsdlsoap:address\n                    location=\"http://localhost:9080/CyclicTestEJBClient/services/MakeFriends\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test15/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n        <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test15/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test16/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"encoded\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>Stock service</documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test16/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test17/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n        <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test17/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test18/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:s0=\"http://tempuri.org/encodedTypes\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n             xmlns:tns=\"http://tempuri.org/\"\n             targetNamespace=\"http://tempuri.org/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <s:schema targetNamespace=\"http://tempuri.org/encodedTypes\">\n            <s:import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <s:import namespace=\"http://schemas.xmlsoap.org/wsdl/\"/>\n            <s:complexType name=\"ArrayOfTest\">\n                <s:complexContent mixed=\"false\">\n                    <s:restriction base=\"soapenc:Array\">\n                        <s:attribute d7p1:arrayType=\"s0:Test[]\" ref=\"soapenc:arrayType\"\n                                     xmlns:d7p1=\"http://schemas.xmlsoap.org/wsdl/\"/>\n                    </s:restriction>\n                </s:complexContent>\n            </s:complexType>\n            <s:complexType name=\"Test\">\n                <s:sequence>\n                    <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"S\" type=\"s:string\"/>\n                </s:sequence>\n            </s:complexType>\n        </s:schema>\n    </types>\n\n    <message name=\"SayHelloWorldSoapIn\"/>\n    <message name=\"SayHelloWorldSoapOut\">\n        <part name=\"SayHelloWorldResult\" type=\"s0:ArrayOfTest\"/>\n    </message>\n\n    <portType name=\"HelloWorldSoap\">\n        <operation name=\"SayHelloWorld\">\n            <input message=\"tns:SayHelloWorldSoapIn\"/>\n            <output message=\"tns:SayHelloWorldSoapOut\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"HelloWorldSoap\" type=\"tns:HelloWorldSoap\">\n        <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"rpc\"/>\n        <operation name=\"SayHelloWorld\">\n            <soap:operation soapAction=\"http://tempuri.org/SayHelloWorld\" style=\"rpc\"/>\n            <input>\n                <soap:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <binding name=\"HelloWorldSoap12\" type=\"tns:HelloWorldSoap\">\n        <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"rpc\"/>\n        <operation name=\"SayHelloWorld\">\n            <soap12:operation soapAction=\"http://tempuri.org/SayHelloWorld\" soapActionRequired=\"true\" style=\"rpc\"/>\n            <input>\n                <soap12:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                             encodingStyle=\"http://www.w3.org/2001/12/soap-encoding\"/>\n            </input>\n            <output>\n                <soap12:body use=\"encoded\" namespace=\"http://tempuri.org/\"\n                             encodingStyle=\"http://www.w3.org/2001/12/soap-encoding\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"HelloWorld\">\n        <port name=\"HelloWorldSoap\" binding=\"tns:HelloWorldSoap\">\n            <soap:address location=\"http://localhost/bugs/soap12/helloworld.asmx\"/>\n        </port>\n\n        <port name=\"HelloWorldSoap12\" binding=\"tns:HelloWorldSoap12\">\n            <soap12:address location=\"http://localhost/bugs/soap12/helloworld.asmx\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test19/TestService.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <element name=\"TradePriceRequest\">\n                <complexType>\n                    <all>\n                        <element name=\"tickerSymbol\" type=\"string\"/>\n                    </all>\n                </complexType>\n            </element>\n            <element name=\"TradePrice\">\n                <complexType>\n                    <all>\n                        <element name=\"price\" type=\"float\"/>\n                    </all>\n                </complexType>\n            </element>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test20/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions targetNamespace=\"http://cyclic.test\" xmlns:impl=\"http://cyclic.test\"\n                  xmlns:intf=\"http://cyclic.test\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                  xmlns:wsdlsoap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n    <wsdl:types>\n        <schema targetNamespace=\"http://cyclic.test\"\n                xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:impl=\"http://cyclic.test\"\n                xmlns:intf=\"http://cyclic.test\"\n                xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n            <import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <complexType name=\"Person\">\n                <sequence>\n                    <element name=\"name\" nillable=\"true\" type=\"xsd:string\"/>\n                    <element name=\"friend\" nillable=\"true\" type=\"impl:Person\"/>\n                </sequence>\n            </complexType>\n            <element name=\"Person\" nillable=\"true\" type=\"impl:Person\"/>\n        </schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"makeFriendResponse\">\n        <wsdl:part name=\"makeFriendReturn\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:message name=\"makeFriendRequest\">\n        <wsdl:part name=\"A\" type=\"intf:Person\"/>\n        <wsdl:part name=\"B\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"MakeFriends\">\n        <wsdl:operation name=\"makeFriend\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\"\n                         name=\"makeFriendResponse\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"MakeFriendsSoapBinding\" type=\"intf:MakeFriends\">\n        <wsdlsoap:binding style=\"rpc\"\n                          transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"makeFriend\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"MakeFriendsService\">\n        <wsdl:port binding=\"intf:MakeFriendsSoapBinding\" name=\"MakeFriends\">\n            <wsdlsoap:address\n                    location=\"http://localhost:9080/CyclicTestEJBClient/services/MakeFriends\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test22/TestService.wsdl",
    "content": "<!--\n  ~ soapUI, copyright (C) 2004-2008 eviware.com\n  ~\n  ~ soapUI is free software; you can redistribute it and/or modify it under the\n  ~ terms of version 2.1 of the GNU Lesser General Public License as published by\n  ~ the Free Software Foundation.\n  ~\n  ~ soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\n  ~ even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  ~ See the GNU Lesser General Public License for more details at gnu.org.\n  -->\n\n<definitions name=\"urnADEC_MAST\"\n             targetNamespace=\"urn:ADEC_MAST\"\n             xmlns:typens=\"urn:ADEC_MAST\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\"\n             xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <!-- Types for search - result elements, directory categories -->\n\n    <types>\n        <xsd:schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"urn:ADEC_MAST\">\n\n            <xsd:complexType name=\"SummaryResult\">\n                <xsd:all>\n                    <xsd:element name=\"missionName\" type=\"xsd:string\"/>\n                    <xsd:element name=\"dataIdCount\" type=\"xsd:int\"/>\n                </xsd:all>\n            </xsd:complexType>\n\n            <xsd:complexType name=\"SummaryResultArray\">\n                <xsd:complexContent>\n                    <xsd:restriction base=\"soapenc:Array\">\n                        <xsd:attribute ref=\"soapenc:arrayType\" wsdl:arrayType=\"typens:SummaryResult[]\"/>\n                    </xsd:restriction>\n                </xsd:complexContent>\n\n            </xsd:complexType>\n\n        </xsd:schema>\n    </types>\n\n    <!-- Messages for ADEC MAST Web APIs - get summary by position. -->\n\n    <message name=\"doGetSummary\"/>\n\n    <message name=\"doGetSummaryResponse\">\n        <part name=\"return\" type=\"typens:SummaryResult\"/>\n    </message>\n\n    <message name=\"doGetSummary2\"/>\n\n    <message name=\"doGetSummaryResponse2\"/>\n\n\n    <message name=\"doGetSummary3\">\n        <part name=\"ra\" type=\"xsd:double\"/>\n        <part name=\"dec\" type=\"xsd:double\"/>\n        <part name=\"radius\" type=\"xsd:double\"/>\n    </message>\n\n    <message name=\"doGetSummaryResponse3\"/>\n\n    <!-- Port for ADEC MAST Web APIs, \"ADEC_MAST\" -->\n\n    <portType name=\"ADEC_MAST_Port\">\n\n        <operation name=\"doGetSummary\">\n            <input message=\"typens:doGetSummary\"/>\n            <output message=\"typens:doGetSummaryResponse\"/>\n        </operation>\n\n        <operation name=\"doGetSummary2\">\n            <input message=\"typens:doGetSummary2\"/>\n            <output message=\"typens:doGetSummaryResponse2\"/>\n        </operation>\n\n        <operation name=\"doGetSummary3\">\n            <input message=\"typens:doGetSummary3\"/>\n            <output message=\"typens:doGetSummaryResponse3\"/>\n        </operation>\n\n\n    </portType>\n\n\n    <!-- Binding for ADEC MAST Web APIs - RPC, SOAP over HTTP -->\n\n    <binding name=\"ADEC_MAST_Binding\" type=\"typens:ADEC_MAST_Port\">\n        <soap:binding style=\"rpc\"\n                      transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"doGetSummary\">\n            <soap:operation soapAction=\"urn:ADEC_MAST#doGetSummary\"/>\n            <input>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </output>\n        </operation>\n\n        <operation name=\"doGetSummary2\">\n            <soap:operation soapAction=\"urn:ADEC_MAST#doGetSummary2\"/>\n            <input>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </output>\n        </operation>\n\n        <operation name=\"doGetSummary3\">\n            <soap:operation soapAction=\"urn:ADEC_MAST#doGetSummary3\"/>\n            <input>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"\n                           namespace=\"urn:ADEC_MAST\"\n                           encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            </output>\n        </operation>\n\n    </binding>\n\n    <!-- Endpoint for ADEC MAST Web APIs -->\n    <service name=\"ADEC_MAST_Service\">\n        <port name=\"ADEC_MAST_Port\" binding=\"typens:ADEC_MAST_Binding\">\n            <soap:address location=\"http://faxafloi.stsci.edu:4547/soap/\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test23/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions targetNamespace=\"http://cyclic.test\" xmlns:impl=\"http://cyclic.test\"\n                  xmlns:intf=\"http://cyclic.test\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                  xmlns:wsdlsoap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n    <wsdl:types>\n        <schema targetNamespace=\"http://cyclic.test\"\n                xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:impl=\"http://cyclic.test\"\n                xmlns:intf=\"http://cyclic.test\"\n                xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n            <import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <complexType name=\"Person\">\n                <sequence>\n                    <element name=\"name\" nillable=\"true\" type=\"xsd:string\"/>\n                    <element name=\"friend\" nillable=\"true\" type=\"impl:Person\"/>\n                </sequence>\n            </complexType>\n            <element name=\"Person\" nillable=\"true\" type=\"impl:Person\"/>\n        </schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"makeFriendRequest\">\n        <wsdl:part name=\"A\" type=\"intf:Person\"/>\n        <wsdl:part name=\"B\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:message name=\"makeFriendResponse\">\n        <wsdl:part name=\"makeFriendReturn\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"MakeFriends\">\n        <wsdl:operation name=\"makeFriend\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\" name=\"makeFriendResponse\"/>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend2\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest2\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\" name=\"makeFriendResponse2\"/>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend3\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest3\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\" name=\"makeFriendResponse3\"/>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend4\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" />\n            <wsdl:output message=\"intf:makeFriendResponse\" />\n        </wsdl:operation>\n    </wsdl:portType>\n\n    <wsdl:binding name=\"MakeFriendsSoapBinding\" type=\"intf:MakeFriends\">\n        <wsdlsoap:binding style=\"document\"\n                          transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <wsdl:operation name=\"makeFriend\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest\">\n                <wsdlsoap:body namespace=\"http://cyclic.test\" use=\"literal\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse\">\n                <wsdlsoap:body namespace=\"http://cyclic.test\" use=\"literal\"/>\n            </wsdl:output>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend2\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest2\">\n                <wsdlsoap:body namespace=\"http://cyclic.test\" use=\"literal\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse2\">\n                <wsdlsoap:body namespace=\"http://cyclic.test\" use=\"literal\"/>\n            </wsdl:output>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend3\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest3\">\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse3\">\n            </wsdl:output>\n        </wsdl:operation>\n\n        <wsdl:operation name=\"makeFriend4\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input >\n            </wsdl:input>\n            <wsdl:output >\n            </wsdl:output>\n        </wsdl:operation>\n\n    </wsdl:binding>\n    <wsdl:service name=\"MakeFriendsService\">\n        <wsdl:port binding=\"intf:MakeFriendsSoapBinding\" name=\"MakeFriends\">\n            <wsdlsoap:address\n                    location=\"http://localhost:9080/CyclicTestEJBClient/services/MakeFriends\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test25/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:tns=\"http://tempuri.org/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\"\n                  xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" targetNamespace=\"http://tempuri.org/\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://tempuri.org/\">\n      <s:element name=\"Add\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"AddResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"AddResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Subtract\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"SubtractResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SubtractResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Multiply\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MultiplyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"MultiplyResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Divide\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intA\" type=\"s:int\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"intB\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DivideResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"DivideResult\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"AddSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Add\" />\n  </wsdl:message>\n  <wsdl:message name=\"AddSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:AddResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SubtractSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Subtract\" />\n  </wsdl:message>\n  <wsdl:message name=\"SubtractSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SubtractResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MultiplySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Multiply\" />\n  </wsdl:message>\n  <wsdl:message name=\"MultiplySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MultiplyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DivideSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Divide\" />\n  </wsdl:message>\n  <wsdl:message name=\"DivideSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DivideResponse\" />\n  </wsdl:message>\n  <wsdl:portType name=\"CalculatorSoap\">\n    <wsdl:operation name=\"Add\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">Adds two integers. This is a test WebService. ©DNE Online</wsdl:documentation>\n      <wsdl:input message=\"tns:AddSoapIn\" />\n      <wsdl:output message=\"tns:AddSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <wsdl:input message=\"tns:SubtractSoapIn\" />\n      <wsdl:output message=\"tns:SubtractSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <wsdl:input message=\"tns:MultiplySoapIn\" />\n      <wsdl:output message=\"tns:MultiplySoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <wsdl:input message=\"tns:DivideSoapIn\" />\n      <wsdl:output message=\"tns:DivideSoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"CalculatorSoap\" type=\"tns:CalculatorSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" />\n    <wsdl:operation name=\"Add\">\n      <soap:operation soapAction=\"http://tempuri.org/Add\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <soap:operation soapAction=\"http://tempuri.org/Subtract\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <soap:operation soapAction=\"http://tempuri.org/Multiply\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <soap:operation soapAction=\"http://tempuri.org/Divide\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CalculatorSoap12\" type=\"tns:CalculatorSoap\">\n    <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\" />\n    <wsdl:operation name=\"Add\">\n      <soap12:operation soapAction=\"http://tempuri.org/Add\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Subtract\">\n      <soap12:operation soapAction=\"http://tempuri.org/Subtract\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Multiply\">\n      <soap12:operation soapAction=\"http://tempuri.org/Multiply\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Divide\">\n      <soap12:operation soapAction=\"http://tempuri.org/Divide\" style=\"document\" />\n      <wsdl:input>\n        <soap12:body use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"Calculator\">\n    <wsdl:port name=\"CalculatorSoap\" binding=\"tns:CalculatorSoap\">\n      <soap:address location=\"http://www.dneonline.com/calculator.asmx\" />\n    </wsdl:port>\n    <wsdl:port name=\"CalculatorSoap12\" binding=\"tns:CalculatorSoap12\">\n      <soap12:address location=\"http://www.dneonline.com/calculator.asmx\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test25/info.txt",
    "content": "http://www.dneonline.com/calculator.asmx?WSDL\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test26/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Licensed to the Apache Software Foundation (ASF) under one\n  or more contributor license agreements. See the NOTICE file\n  distributed with this work for additional information\n  regarding copyright ownership. The ASF licenses this file\n  to you under the Apache License, Version 2.0 (the\n  \"License\"); you may not use this file except in compliance\n  with the License. You may obtain a copy of the License at\n \n  http://www.apache.org/licenses/LICENSE-2.0\n \n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an\n  \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n  KIND, either express or implied. See the License for the\n  specific language governing permissions and limitations\n  under the License.\n-->\n<wsdl:definitions name=\"CustomerServiceService\" targetNamespace=\"http://customerservice.example.com/\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:tns=\"http://customerservice.example.com/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\">\n    <wsdl:types>\n        <xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://customerservice.example.com/\"\n                   attributeFormDefault=\"unqualified\" elementFormDefault=\"unqualified\"\n                   targetNamespace=\"http://customerservice.example.com/\">\n            <xs:element name=\"getCustomersByName\" type=\"tns:getCustomersByName\"/>\n            <xs:element name=\"getCustomersByNameResponse\" type=\"tns:getCustomersByNameResponse\"/>\n            <xs:element name=\"updateCustomer\" type=\"tns:updateCustomer\"/>\n            <xs:complexType name=\"updateCustomer\">\n                <xs:sequence>\n                    <xs:element minOccurs=\"0\" name=\"customer\" type=\"tns:customer\"/>\n                </xs:sequence>\n            </xs:complexType>\n            <xs:complexType name=\"customer\">\n                <xs:sequence>\n                    <xs:element name=\"customerId\" type=\"xs:int\"/>\n                    <xs:element minOccurs=\"0\" name=\"name\" type=\"xs:string\"/>\n                    <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"address\" nillable=\"true\" type=\"xs:string\"/>\n                    <xs:element minOccurs=\"0\" name=\"numOrders\" type=\"xs:int\"/>\n                    <xs:element name=\"revenue\" type=\"xs:double\"/>\n                    <xs:element minOccurs=\"0\" name=\"test\" type=\"xs:decimal\"/>\n                    <xs:element minOccurs=\"0\" name=\"birthDate\" type=\"xs:date\"/>\n                    <xs:element minOccurs=\"0\" name=\"type\" type=\"tns:customerType\"/>\n                </xs:sequence>\n            </xs:complexType>\n            <xs:complexType name=\"getCustomersByName\">\n                <xs:sequence>\n                    <xs:element minOccurs=\"0\" name=\"name\" type=\"xs:string\"/>\n                </xs:sequence>\n            </xs:complexType>\n            <xs:complexType name=\"getCustomersByNameResponse\">\n                <xs:sequence>\n                    <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"return\" type=\"tns:customer\"/>\n                </xs:sequence>\n            </xs:complexType>\n            <xs:simpleType name=\"customerType\">\n                <xs:restriction base=\"xs:string\">\n                    <xs:enumeration value=\"PRIVATE\"/>\n                    <xs:enumeration value=\"BUSINESS\"/>\n                </xs:restriction>\n            </xs:simpleType>\n            <xs:element name=\"NoSuchCustomer\" type=\"tns:NoSuchCustomer\"/>\n            <xs:complexType name=\"NoSuchCustomer\">\n                <xs:sequence>\n                    <xs:element name=\"customerName\" nillable=\"true\" type=\"xs:string\"/>\n                </xs:sequence>\n            </xs:complexType>\n        </xs:schema>\n    </wsdl:types>\n    <wsdl:message name=\"getCustomersByNameResponse\">\n        <wsdl:part name=\"parameters\" element=\"tns:getCustomersByNameResponse\">\n        </wsdl:part>\n    </wsdl:message>\n    <wsdl:message name=\"getCustomersByName\">\n        <wsdl:part name=\"parameters\" element=\"tns:getCustomersByName\">\n        </wsdl:part>\n    </wsdl:message>\n    <wsdl:message name=\"updateCustomer\">\n        <wsdl:part name=\"parameters\" element=\"tns:updateCustomer\">\n        </wsdl:part>\n    </wsdl:message>\n    <wsdl:message name=\"NoSuchCustomerException\">\n        <wsdl:part name=\"NoSuchCustomerException\" element=\"tns:NoSuchCustomer\">\n        </wsdl:part>\n    </wsdl:message>\n    <wsdl:portType name=\"CustomerService\">\n        <wsdl:operation name=\"updateCustomer\">\n            <wsdl:input name=\"updateCustomer\" message=\"tns:updateCustomer\">\n            </wsdl:input>\n        </wsdl:operation>\n        <wsdl:operation name=\"getCustomersByName\">\n            <wsdl:input name=\"getCustomersByName\" message=\"tns:getCustomersByName\">\n            </wsdl:input>\n            <wsdl:output name=\"getCustomersByNameResponse\" message=\"tns:getCustomersByNameResponse\">\n            </wsdl:output>\n            <wsdl:fault name=\"NoSuchCustomerException\" message=\"tns:NoSuchCustomerException\">\n            </wsdl:fault>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"CustomerServiceServiceSoapBinding\" type=\"tns:CustomerService\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"updateCustomer\">\n            <soap:operation soapAction=\"\" style=\"document\"/>\n            <wsdl:input name=\"updateCustomer\">\n                <soap:body use=\"literal\"/>\n            </wsdl:input>\n        </wsdl:operation>\n        <wsdl:operation name=\"getCustomersByName\">\n            <soap:operation soapAction=\"\" style=\"document\"/>\n            <wsdl:input name=\"getCustomersByName\">\n                <soap:body use=\"literal\"/>\n            </wsdl:input>\n            <wsdl:output name=\"getCustomersByNameResponse\">\n                <soap:body use=\"literal\"/>\n            </wsdl:output>\n            <wsdl:fault name=\"NoSuchCustomerException\">\n                <soap:fault name=\"NoSuchCustomerException\" use=\"literal\"/>\n            </wsdl:fault>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"CustomerServiceService\">\n        <wsdl:port name=\"CustomerServicePort\" binding=\"tns:CustomerServiceServiceSoapBinding\">\n            <!-- embedded deployment -->\n            <soap:address location=\"http://localhost:9090/CustomerServicePort\"/>\n            <!-- standalone Tomcat deployment -->\n            <!--soap:address location=\"http://localhost:8080/wsdl_first/services/CustomerServicePort\"/-->\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test27/TestService.wsdl",
    "content": "<wsdl:definitions name=\"EndorsementSearch\" targetNamespace=\"http://namespaces.snowboard-info.com\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:esxsd=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:es=\"http://www.snowboard-info.com/EndorsementSearch.wsdl\"\n                    xmlns:s=\"http://www.w3.org/2001/XMLSchema\">\n    <wsdl:types>\n        <xsd:schema targetNamespace=\"http://namespaces.snowboard-info.com\" xmlns:xsd=\"http://www.w3.org/1999/XMLSchema\">\n\n            <!-- xsd definition: GetEndorsingBoarder [manufacturer string, model string] -->\n            <xsd:element name=\"GetEndorsingBoarder\">\n                <xsd:complexType>\n                    <xsd:sequence>\n                        <xsd:element name=\"manufacturer\" type=\"s:string\"/>\n                        <xsd:element name=\"model\" type=\"s:string\"/>\n                    </xsd:sequence>\n                </xsd:complexType>\n            </xsd:element>\n\n            <!-- xsd definition: GetEndorsingBoarderResponse [... endorsingBoarder string ...] -->\n            <xsd:element name=\"GetEndorsingBoarderResponse\">\n                <xsd:complexType>\n                    <xsd:all>\n                        <xsd:element name=\"endorsingBoarder\" type=\"s:string\"/>\n                    </xsd:all>\n                </xsd:complexType>\n            </xsd:element>\n\n            <!-- xsd definition: GetEndorsingBoarderFault [... errorMessage string ...] -->\n            <!--<xsd:element name=\"GetEndorsingBoarderFault\">-->\n                <!--<xsd:complexType>-->\n                    <!--<xsd:all>-->\n                        <!--<xsd:element name=\"errorMessage\" type=\"s:string\"/>-->\n                    <!--</xsd:all>-->\n                <!--</xsd:complexType>-->\n            <!--</xsd:element>-->\n\n        </xsd:schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"GetEndorsingBoarderResponse\">\n        <wsdl:part name=\"body\" element=\"esxsd:GetEndorsingBoarderResponse\">\n        </wsdl:part>\n    </wsdl:message>\n    <wsdl:message name=\"GetEndorsingBoarderRequest\">\n        <wsdl:part name=\"body\" element=\"esxsd:GetEndorsingBoarder\">\n        </wsdl:part>\n    </wsdl:message>\n\n    <!--<wsdl:message name=\"GetEndorsingBoarderFault\">-->\n        <!--<wsdl:part name=\"body\" element=\"esxsd:GetEndorsingBoarderFault\">-->\n        <!--</wsdl:part>-->\n    <!--</wsdl:message>-->\n\n    <wsdl:portType name=\"GetEndorsingBoarderPortType\">\n        <wsdl:operation name=\"GetEndorsingBoarder\">\n            <wsdl:input message=\"es:GetEndorsingBoarderRequest\">\n            </wsdl:input>\n            <wsdl:output message=\"es:GetEndorsingBoarderResponse\">\n            </wsdl:output>\n            <!--<wsdl:fault message=\"es:GetEndorsingBoarderFault\" name=\"a\">-->\n            <!--</wsdl:fault>-->\n        </wsdl:operation>\n    </wsdl:portType>\n\n    <wsdl:binding name=\"EndorsementSearchSoapBinding\" type=\"es:GetEndorsingBoarderPortType\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"GetEndorsingBoarder\">\n            <soap:operation soapAction=\"http://www.snowboard-info.com/EndorsementSearch\"/>\n            <wsdl:input>\n                <soap:body use=\"literal\" namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\"/>\n            </wsdl:input>\n            <wsdl:output>\n                <soap:body use=\"literal\" namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\"/>\n            </wsdl:output>\n            <!--<wsdl:fault name=\"a\">-->\n                <!--<soap:body namespace=\"http://schemas.snowboard-info.com/EndorsementSearch.xsd\" use=\"literal\"/>-->\n            <!--</wsdl:fault>-->\n        </wsdl:operation>\n    </wsdl:binding>\n\n    <wsdl:service name=\"EndorsementSearchService\">\n        <wsdl:documentation>snowboarding-info.com Endorsement Service</wsdl:documentation>\n        <wsdl:port name=\"GetEndorsingBoarderPort\" binding=\"es:EndorsementSearchSoapBinding\">\n            <soap:address location=\"http://www.snowboard-info.com/EndorsementSearch\"/>\n        </wsdl:port>\n    </wsdl:service>\n\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/services/test27/info.txt",
    "content": "http://www.w3.org/2001/03/14-annotated-WSDL-examples.html\n\nnot valid WSDL"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/doc.literal/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/doc.literal/stockquote-ws.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n        <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n        <operation name=\"GetLastTradePrice2\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n\n        <operation name=\"GetLastTradePrice2\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice2\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>My first service\n        </documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/rpc.encoded/friend-ws.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions targetNamespace=\"http://cyclic.test\" xmlns:impl=\"http://cyclic.test\"\n                  xmlns:intf=\"http://cyclic.test\"\n                  xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                  xmlns:wsdlsoap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n\n    <wsdl:types>\n        <schema targetNamespace=\"http://cyclic.test\"\n                xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:impl=\"http://cyclic.test\"\n                xmlns:intf=\"http://cyclic.test\"\n                xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\"\n                xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n            <import namespace=\"http://schemas.xmlsoap.org/soap/encoding/\"/>\n            <complexType name=\"Person\">\n                <sequence>\n                    <element name=\"name\" nillable=\"true\" type=\"xsd:string\"/>\n                    <element name=\"friend\" nillable=\"true\" type=\"impl:Person\"/>\n                </sequence>\n            </complexType>\n            <element name=\"Person\" nillable=\"true\" type=\"impl:Person\"/>\n        </schema>\n    </wsdl:types>\n\n    <wsdl:message name=\"makeFriendResponse\">\n        <wsdl:part name=\"makeFriendReturn\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:message name=\"makeFriendRequest\">\n        <wsdl:part name=\"A\" type=\"intf:Person\"/>\n        <wsdl:part name=\"B\" type=\"intf:Person\"/>\n    </wsdl:message>\n\n    <wsdl:portType name=\"MakeFriends\">\n        <wsdl:operation name=\"makeFriend\" parameterOrder=\"A B\">\n            <wsdl:input message=\"intf:makeFriendRequest\" name=\"makeFriendRequest\"/>\n            <wsdl:output message=\"intf:makeFriendResponse\"\n                         name=\"makeFriendResponse\"/>\n        </wsdl:operation>\n    </wsdl:portType>\n    <wsdl:binding name=\"MakeFriendsSoapBinding\" type=\"intf:MakeFriends\">\n        <wsdlsoap:binding style=\"rpc\"\n                          transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsdl:operation name=\"makeFriend\">\n            <wsdlsoap:operation soapAction=\"\"/>\n            <wsdl:input name=\"makeFriendRequest\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:input>\n            <wsdl:output name=\"makeFriendResponse\">\n                <wsdlsoap:body encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"\n                               namespace=\"http://cyclic.test\" use=\"encoded\"/>\n            </wsdl:output>\n        </wsdl:operation>\n    </wsdl:binding>\n    <wsdl:service name=\"MakeFriendsService\">\n        <wsdl:port binding=\"intf:MakeFriendsSoapBinding\" name=\"MakeFriends\">\n            <wsdlsoap:address\n                    location=\"http://localhost:9080/CyclicTestEJBClient/services/MakeFriends\"/>\n        </wsdl:port>\n    </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/rpc.encoded/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/rpc.encoded/stockquote-ws.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\" />\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"encoded\"/>\n            </input>\n            <output>\n                <soap:body use=\"encoded\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>Stock service</documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/rpc.literal/stockquote-schema.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<schema targetNamespace=\"http://reficio.org/stockquote.xsd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n    <element name=\"TradePriceRequest\">\n        <complexType>\n            <all>\n                <element name=\"tickerSymbol\" type=\"string\"/>\n            </all>\n        </complexType>\n    </element>\n    <element name=\"TradePrice\">\n        <complexType>\n            <all>\n                <element name=\"price\" type=\"float\"/>\n            </all>\n        </complexType>\n    </element>\n</schema>\n"
  },
  {
    "path": "soap-it/src/test/resources/wsdl/rpc.literal/stockquote-ws.wsdl",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<definitions name=\"StockQuote\" targetNamespace=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n             xmlns:types=\"http://reficio.org/stockquote.xsd\"\n             xmlns:tns=\"http://reficio.org/stockquote.wsdl\"\n             xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n             xmlns=\"http://schemas.xmlsoap.org/wsdl/\">\n\n    <types>\n        <xsd:schema targetNamespace=\"http://reficio.org/stockquote.xsd\">\n            <xsd:import namespace=\"http://reficio.org/stockquote.xsd\" schemaLocation=\"stockquote-schema.xsd\"/>\n        </xsd:schema>\n    </types>\n\n    <message name=\"GetLastTradePriceInput\">\n        <part name=\"body\" element=\"types:TradePriceRequest\"/>\n    </message>\n    <message name=\"GetLastTradePriceOutput\">\n        <part name=\"body\" element=\"types:TradePrice\"/>\n    </message>\n\n    <portType name=\"StockQuotePortType\">\n        <operation name=\"GetLastTradePrice\">\n            <input message=\"tns:GetLastTradePriceInput\"/>\n            <output message=\"tns:GetLastTradePriceOutput\"/>\n        </operation>\n    </portType>\n\n    <binding name=\"StockQuoteSoapBinding\" type=\"tns:StockQuotePortType\">\n        <soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <operation name=\"GetLastTradePrice\">\n            <soap:operation soapAction=\"stock:quote:getlasttradeprice\"/>\n            <input>\n                <soap:body use=\"literal\"/>\n            </input>\n            <output>\n                <soap:body use=\"literal\"/>\n            </output>\n        </operation>\n    </binding>\n\n    <service name=\"StockQuoteService\">\n        <documentation>Stock service</documentation>\n        <port name=\"StockQuotePort\" binding=\"tns:StockQuoteSoapBinding\">\n            <soap:address location=\"http://reficio.org/stockquote\"/>\n        </port>\n    </service>\n\n</definitions>\n"
  },
  {
    "path": "soap-legacy/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-legacy</artifactId>\n    <packaging>bundle</packaging>\n    <name>soap-legacy - 3rd party inherited code</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <licenses>\n        <license>\n            <name>GNU Library or Lesser General Public License (LGPL) 2.1</name>\n            <url>http://www.gnu.org/licenses/lgpl-2.1.html</url>\n        </license>\n    </licenses>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-common</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>xmlunit</groupId>\n            <artifactId>xmlunit</artifactId>\n            <version>1.3</version>\n        </dependency>\n        <dependency>\n            <groupId>xml-apis</groupId>\n            <artifactId>xml-apis</artifactId>\n            <version>1.0.b2</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.xmlgraphics</groupId>\n            <artifactId>batik-ext</artifactId>\n            <version>1.7</version>\n        </dependency>\n        <dependency>\n            <groupId>xerces</groupId>\n            <artifactId>xercesImpl</artifactId>\n            <version>2.10.0</version>\n        </dependency>\n        <dependency>\n            <groupId>xmlbeans</groupId>\n            <artifactId>xbean</artifactId>\n            <version>fixed-2.4.0</version>\n        </dependency>\n        <dependency>\n            <groupId>xmlbeans</groupId>\n            <artifactId>xbean_xpath</artifactId>\n            <version>2.4.0</version>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.xmlbeans</groupId>\n            <artifactId>xmlbeans-xmlpublic</artifactId>\n            <version>2.5.0</version>\n        </dependency>\n        <dependency>\n            <groupId>javax.xml</groupId>\n            <artifactId>jsr173</artifactId>\n            <version>1.0</version>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.saxon</groupId>\n            <artifactId>saxon</artifactId>\n            <version>9.1.0.8</version>\n        </dependency>\n        <dependency>\n            <groupId>net.sf.saxon</groupId>\n            <artifactId>saxon-dom</artifactId>\n            <version>9.1.0.8</version>\n        </dependency>\n        <dependency>\n            <groupId>wsrf</groupId>\n            <artifactId>wsrf-xbeans</artifactId>\n            <version>1.0</version>\n        </dependency>\n        <dependency>\n            <groupId>wsdl4j</groupId>\n            <artifactId>wsdl4j</artifactId>\n            <version>1.6.2</version>\n        </dependency>\n\n        <dependency>\n            <groupId>org.apache.ws.commons.schema</groupId>\n            <artifactId>XmlSchema</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-io</groupId>\n            <artifactId>commons-io</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.commons</groupId>\n            <artifactId>commons-lang3</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>log4j</groupId>\n            <artifactId>log4j</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-javadoc-plugin</artifactId>\n                <version>2.8.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/AbstractSoapVersion.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.log4j.Logger;\nimport org.apache.xmlbeans.*;\n\nimport javax.xml.namespace.QName;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\n/**\n * Common behaviour for all SOAP Versions\n *\n * @author ole.matzura\n */\nabstract class AbstractSoapVersion implements SoapVersion {\n    private final static Logger log = Logger.getLogger(AbstractSoapVersion.class);\n\n    @SuppressWarnings(\"unchecked\")\n    public void validateSoapEnvelope(String soapMessage, List<XmlError> errors) {\n        List<XmlError> errorList = new ArrayList<XmlError>();\n\n        try {\n            XmlOptions xmlOptions = new XmlOptions();\n            xmlOptions.setLoadLineNumbers();\n            xmlOptions.setValidateTreatLaxAsSkip();\n            xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT);\n            XmlObject xmlObject = getSoapEnvelopeSchemaLoader().parse(soapMessage, getEnvelopeType(), xmlOptions);\n            xmlOptions.setErrorListener(errorList);\n            xmlObject.validate(xmlOptions);\n        } catch (XmlException e) {\n            if (e.getErrors() != null)\n                errorList.addAll(e.getErrors());\n\n            errors.add(XmlError.forMessage(e.getMessage()));\n        } catch (Exception e) {\n            errors.add(XmlError.forMessage(e.getMessage()));\n        } finally {\n            for (XmlError error : errorList) {\n                if (error instanceof XmlValidationError && shouldIgnore((XmlValidationError) error)) {\n                    log.warn(\"Ignoring validation error: \" + error.toString());\n                    continue;\n                }\n\n                errors.add(error);\n            }\n        }\n    }\n\n    protected abstract SchemaTypeLoader getSoapEnvelopeSchemaLoader();\n\n    public boolean shouldIgnore(XmlValidationError error) {\n        QName offendingQName = error.getOffendingQName();\n        if (offendingQName != null) {\n            if (offendingQName.equals(new QName(getEnvelopeNamespace(), \"encodingStyle\"))) {\n                return true;\n            } else if (offendingQName.equals(new QName(getEnvelopeNamespace(), \"mustUnderstand\"))) {\n                return true;\n            }\n        }\n\n        return false;\n    }\n\n    public abstract SchemaType getFaultType();\n\n    public abstract SchemaType getEnvelopeType();\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/Constants.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\n/**\n * Namespace Constants\n *\n * @author ole.matzura\n */\n\ninterface Constants {\n    public static final String XSD_NS = \"http://www.w3.org/2001/XMLSchema\";\n    public static final String XML_NS = \"http://www.w3.org/2000/xmlns/\";\n    public static final String WSDL11_NS = \"http://schemas.xmlsoap.org/wsdl/\";\n    public static final String SOAP_ENCODING_NS = \"http://schemas.xmlsoap.org/soap/encoding/\";\n    public static final String SOAP11_ENVELOPE_NS = \"http://schemas.xmlsoap.org/soap/envelope/\";\n    public static final String SOAP_HTTP_TRANSPORT = \"http://schemas.xmlsoap.org/soap/http\";\n    public static final String SOAP_HTTP_BINDING_NS = \"http://schemas.xmlsoap.org/wsdl/soap/\";\n    public static final String SOAP12_HTTP_BINDING_NS = \"http://www.w3.org/2003/05/soap/bindings/HTTP/\";\n    public static final String XSI_NS = \"http://www.w3.org/2001/XMLSchema-instance\";\n    public static final String XSI_NS_2000 = \"http://www.w3.org/2000/XMLSchema-instance\";\n    public static final String SOAP12_ENVELOPE_NS = \"http://www.w3.org/2003/05/soap-envelope\";\n    public static final String WADL10_NS = \"http://research.sun.com/wadl/2006/10\";\n    public static final String WADL11_NS = \"http://wadl.dev.java.net/2009/02\";\n    public static final String SOAP_MICROSOFT_TCP = \"http://schemas.microsoft.com/wse/2003/06/tcp\";\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/DefinitionLoader.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n * <p/>\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\ninterface DefinitionLoader extends SchemaLoader {\n\n    void setProgressInfo(String info);\n\n    boolean isAborted();\n\n    boolean abort();\n\n    void setNewBaseURI(String uri);\n\n    String getFirstNewURI();\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SampleXmlUtil.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.xmlbeans.*;\nimport org.apache.xmlbeans.impl.util.Base64;\nimport org.apache.xmlbeans.impl.util.HexBin;\nimport org.apache.xmlbeans.soap.SOAPArrayType;\nimport org.apache.xmlbeans.soap.SchemaWSDLArrayType;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.SoapMultiValuesProvider;\n\nimport javax.xml.namespace.QName;\nimport java.math.BigDecimal;\nimport java.math.BigInteger;\nimport java.util.*;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - introduction of SoapContext class\n */\n\n/**\n * XmlBeans class for generating XML from XML Schemas\n */\nclass SampleXmlUtil {\n    private Random picker = new Random(1);\n\n    private boolean soapEnc;\n    private boolean exampleContent = false;\n    private boolean typeComment = false;\n\n    private boolean skipComments = false;\n    private boolean ignoreOptional = false;\n\n    /*\n     * A list of XML-Schema types and global elements in the form of name@namespace which\n     * will be excluded when generating sample requests and responses and input forms.\n     * By default the XML-Schema root element is added since it is quite common in .NET\n     * services and generates a sample xml fragment of about 300 kb!.\n     */\n    private Set<QName> excludedTypes = new HashSet<QName>();\n    private SoapMultiValuesProvider multiValuesProvider;\n\n    private ArrayList<SchemaType> typeStack = new ArrayList<SchemaType>();\n\n\n    public SampleXmlUtil(boolean soapEnc, SoapContext context) {\n        this.soapEnc = soapEnc;\n        excludedTypes.addAll(context.getExcludedTypes());\n        this.exampleContent = context.isExampleContent();\n        this.typeComment = context.isTypeComments();\n        this.skipComments = !context.isValueComments();\n        this.ignoreOptional = !context.isBuildOptional();\n        this.multiValuesProvider = context.getMultiValuesProvider();\n    }\n\n    public boolean isSoapEnc() {\n        return soapEnc;\n    }\n\n    public String createSample(SchemaType sType) {\n        XmlObject object = XmlObject.Factory.newInstance();\n        XmlCursor cursor = object.newCursor();\n        // Skip the document node\n        cursor.toNextToken();\n        // Using the type and the cursor, call the utility method to get a\n        // sample XML payload for that Schema element\n        createSampleForType(sType, cursor);\n        // Cursor now contains the sample payload\n        // Pretty print the result. Note that the cursor is positioned at the\n        // end of the doc so we use the original xml object that the cursor was\n        // created upon to do the xmlText() against.\n\n        cursor.dispose();\n\n        XmlOptions options = new XmlOptions();\n        options.put(XmlOptions.SAVE_PRETTY_PRINT);\n        options.put(XmlOptions.SAVE_PRETTY_PRINT_INDENT, 3);\n        options.put(XmlOptions.SAVE_AGGRESSIVE_NAMESPACES);\n        options.setSaveOuter();\n        String result = object.xmlText(options);\n\n        return result;\n    }\n\n\n    /**\n     * Cursor position Before: <theElement>^</theElement> After:\n     * <theElement><lots of stuff/>^</theElement>\n     */\n    public void createSampleForType(SchemaType stype, XmlCursor xmlc) {\n        QName nm = stype.getName();\n        if (nm == null && stype.getContainerField() != null)\n            nm = stype.getContainerField().getName();\n\n        if (nm != null && excludedTypes.contains(nm)) {\n            if (!skipComments)\n                xmlc.insertComment(\"Ignoring type [\" + nm + \"]\");\n            return;\n        }\n\n        if (typeStack.contains(stype))\n            return;\n\n        typeStack.add(stype);\n\n        try {\n            if (stype.isSimpleType() || stype.isURType()) {\n                processSimpleType(stype, xmlc);\n                return;\n            }\n\n            // complex Type\n            // <theElement>^</theElement>\n            processAttributes(stype, xmlc);\n\n            // <theElement attri1=\"string\">^</theElement>\n            switch (stype.getContentType()) {\n                case SchemaType.NOT_COMPLEX_TYPE:\n                case SchemaType.EMPTY_CONTENT:\n                    // noop\n                    break;\n                case SchemaType.SIMPLE_CONTENT: {\n                    processSimpleType(stype, xmlc);\n                }\n                break;\n                case SchemaType.MIXED_CONTENT:\n                    xmlc.insertChars(pick(WORDS) + \" \");\n                    if (stype.getContentModel() != null) {\n                        processParticle(stype.getContentModel(), xmlc, true);\n                    }\n                    xmlc.insertChars(pick(WORDS));\n                    break;\n                case SchemaType.ELEMENT_CONTENT:\n                    if (stype.getContentModel() != null) {\n                        processParticle(stype.getContentModel(), xmlc, false);\n                    }\n                    break;\n            }\n        } finally {\n            typeStack.remove(typeStack.size() - 1);\n        }\n    }\n\n    private void processSimpleType(SchemaType stype, XmlCursor xmlc) {\n        if (soapEnc) {\n            QName typeName = stype.getName();\n            if (typeName != null) {\n                xmlc.insertAttributeWithValue(XSI_TYPE, formatQName(xmlc, typeName));\n            }\n        }\n\n        String sample = sampleDataForSimpleType(stype);\n        xmlc.insertChars(sample);\n    }\n\n    private String sampleDataForSimpleType(SchemaType sType) {\n        // swaRef\n        if (sType.getName() != null) {\n            if (sType.getName().equals(new QName(\"http://ws-i.org/profiles/basic/1.1/xsd\", \"swaRef\")))\n                return \"cid:\" + (long) (System.currentTimeMillis() * Math.random());\n\n            // xmime base64\n            if (sType.getName().equals(new QName(\"http://www.w3.org/2005/05/xmlmime\", \"base64Binary\")))\n                return \"cid:\" + (long) (System.currentTimeMillis() * Math.random());\n\n            // xmime hexBinary\n            if (sType.getName().equals(new QName(\"http://www.w3.org/2005/05/xmlmime\", \"hexBinary\")))\n                return \"cid:\" + (long) (System.currentTimeMillis() * Math.random());\n        }\n\n        SchemaType primitiveType = sType.getPrimitiveType();\n        if (primitiveType != null\n                && (primitiveType.getBuiltinTypeCode() == SchemaType.BTC_BASE_64_BINARY || primitiveType\n                .getBuiltinTypeCode() == SchemaType.BTC_HEX_BINARY))\n            return \"cid:\" + (long) (System.currentTimeMillis() * Math.random());\n\n        // if( sType != null )\n        if (!exampleContent)\n            return \"?\";\n\n        if (XmlObject.type.equals(sType))\n            return \"anyType\";\n\n        if (XmlAnySimpleType.type.equals(sType))\n            return \"anySimpleType\";\n\n        if (sType.getSimpleVariety() == SchemaType.LIST) {\n            SchemaType itemType = sType.getListItemType();\n            StringBuffer sb = new StringBuffer();\n            int length = pickLength(sType);\n            if (length > 0)\n                sb.append(sampleDataForSimpleType(itemType));\n            for (int i = 1; i < length; i += 1) {\n                sb.append(' ');\n                sb.append(sampleDataForSimpleType(itemType));\n            }\n            return sb.toString();\n        }\n\n        if (sType.getSimpleVariety() == SchemaType.UNION) {\n            SchemaType[] possibleTypes = sType.getUnionConstituentTypes();\n            if (possibleTypes.length == 0)\n                return \"\";\n            return sampleDataForSimpleType(possibleTypes[pick(possibleTypes.length)]);\n        }\n\n        XmlAnySimpleType[] enumValues = sType.getEnumerationValues();\n        if (enumValues != null && enumValues.length > 0) {\n            return enumValues[pick(enumValues.length)].getStringValue();\n        }\n\n        switch (primitiveType.getBuiltinTypeCode()) {\n            default:\n            case SchemaType.BTC_NOT_BUILTIN:\n                return \"\";\n\n            case SchemaType.BTC_ANY_TYPE:\n            case SchemaType.BTC_ANY_SIMPLE:\n                return \"anything\";\n\n            case SchemaType.BTC_BOOLEAN:\n                return pick(2) == 0 ? \"true\" : \"false\";\n\n            case SchemaType.BTC_BASE_64_BINARY: {\n                String result = null;\n                try {\n                    result = new String(Base64.encode(formatToLength(pick(WORDS), sType).getBytes(\"utf-8\")));\n                } catch (java.io.UnsupportedEncodingException e) {\n                }\n                return result;\n            }\n\n            case SchemaType.BTC_HEX_BINARY:\n                return HexBin.encode(formatToLength(pick(WORDS), sType));\n\n            case SchemaType.BTC_ANY_URI:\n                return formatToLength(\"http://www.\" + pick(DNS1) + \".\" + pick(DNS2) + \"/\" + pick(WORDS) + \"/\"\n                        + pick(WORDS), sType);\n\n            case SchemaType.BTC_QNAME:\n                return formatToLength(\"qname\", sType);\n\n            case SchemaType.BTC_NOTATION:\n                return formatToLength(\"notation\", sType);\n\n            case SchemaType.BTC_FLOAT:\n                return \"1.25\";\n//                return Float.valueOf(new Random().nextFloat()).toString();\n            case SchemaType.BTC_DOUBLE:\n                return \"1.30\";\n//                return Double.valueOf(new Random().nextDouble()).toString();\n            case SchemaType.BTC_DECIMAL:\n                switch (closestBuiltin(sType).getBuiltinTypeCode()) {\n                    case SchemaType.BTC_SHORT:\n                        return formatDecimal(\"1\", sType);\n                    case SchemaType.BTC_UNSIGNED_SHORT:\n                        return formatDecimal(\"5\", sType);\n                    case SchemaType.BTC_BYTE:\n                        return formatDecimal(\"2\", sType);\n                    case SchemaType.BTC_UNSIGNED_BYTE:\n                        return formatDecimal(\"6\", sType);\n                    case SchemaType.BTC_INT:\n                        return formatDecimal(\"3\", sType);\n                    case SchemaType.BTC_UNSIGNED_INT:\n                        return formatDecimal(\"7\", sType);\n                    case SchemaType.BTC_LONG:\n                        return formatDecimal(\"10\", sType);\n                    case SchemaType.BTC_UNSIGNED_LONG:\n                        return formatDecimal(\"11\", sType);\n                    case SchemaType.BTC_INTEGER:\n                        return formatDecimal(\"100\", sType);\n                    case SchemaType.BTC_NON_POSITIVE_INTEGER:\n                        return formatDecimal(\"-200\", sType);\n                    case SchemaType.BTC_NEGATIVE_INTEGER:\n                        return formatDecimal(\"-201\", sType);\n                    case SchemaType.BTC_NON_NEGATIVE_INTEGER:\n                        return formatDecimal(\"200\", sType);\n                    case SchemaType.BTC_POSITIVE_INTEGER:\n                        return formatDecimal(\"201\", sType);\n                    default:\n                    case SchemaType.BTC_DECIMAL:\n                        return formatDecimal(\"1000.00\", sType);\n                }\n\n            case SchemaType.BTC_STRING: {\n                String result;\n                switch (closestBuiltin(sType).getBuiltinTypeCode()) {\n                    case SchemaType.BTC_STRING:\n                    case SchemaType.BTC_NORMALIZED_STRING:\n                        result = pick(WORDS, picker.nextInt(3));\n                        break;\n\n                    case SchemaType.BTC_TOKEN:\n                        result = pick(WORDS, picker.nextInt(3));\n                        break;\n\n                    default:\n                        result = pick(WORDS, picker.nextInt(3));\n                        break;\n                }\n\n                return formatToLength(result, sType);\n            }\n\n            case SchemaType.BTC_DURATION:\n                return formatDuration(sType);\n\n            case SchemaType.BTC_DATE_TIME:\n            case SchemaType.BTC_TIME:\n            case SchemaType.BTC_DATE:\n            case SchemaType.BTC_G_YEAR_MONTH:\n            case SchemaType.BTC_G_YEAR:\n            case SchemaType.BTC_G_MONTH_DAY:\n            case SchemaType.BTC_G_DAY:\n            case SchemaType.BTC_G_MONTH:\n                return formatDate(sType);\n\n        }\n    }\n\n    // a bit from the Aenid\n    public static final String[] WORDS = new String[]{\"ipsa\", \"iovis\", \"rapidum\", \"iaculata\", \"e\", \"nubibus\", \"ignem\",\n            \"disiecitque\", \"rates\", \"evertitque\", \"aequora\", \"ventis\", \"illum\", \"exspirantem\", \"transfixo\", \"pectore\",\n            \"flammas\", \"turbine\", \"corripuit\", \"scopuloque\", \"infixit\", \"acuto\", \"ast\", \"ego\", \"quae\", \"divum\", \"incedo\",\n            \"regina\", \"iovisque\", \"et\", \"soror\", \"et\", \"coniunx\", \"una\", \"cum\", \"gente\", \"tot\", \"annos\", \"bella\", \"gero\",\n            \"et\", \"quisquam\", \"numen\", \"iunonis\", \"adorat\", \"praeterea\", \"aut\", \"supplex\", \"aris\", \"imponet\", \"honorem\",\n            \"talia\", \"flammato\", \"secum\", \"dea\", \"corde\", \"volutans\", \"nimborum\", \"in\", \"patriam\", \"loca\", \"feta\",\n            \"furentibus\", \"austris\", \"aeoliam\", \"venit\", \"hic\", \"vasto\", \"rex\", \"aeolus\", \"antro\", \"luctantis\", \"ventos\",\n            \"tempestatesque\", \"sonoras\", \"imperio\", \"premit\", \"ac\", \"vinclis\", \"et\", \"carcere\", \"frenat\", \"illi\",\n            \"indignantes\", \"magno\", \"cum\", \"murmure\", \"montis\", \"circum\", \"claustra\", \"fremunt\", \"celsa\", \"sedet\",\n            \"aeolus\", \"arce\", \"sceptra\", \"tenens\", \"mollitque\", \"animos\", \"et\", \"temperat\", \"iras\", \"ni\", \"faciat\",\n            \"maria\", \"ac\", \"terras\", \"caelumque\", \"profundum\", \"quippe\", \"ferant\", \"rapidi\", \"secum\", \"verrantque\", \"per\",\n            \"auras\", \"sed\", \"pater\", \"omnipotens\", \"speluncis\", \"abdidit\", \"atris\", \"hoc\", \"metuens\", \"molemque\", \"et\",\n            \"montis\", \"insuper\", \"altos\", \"imposuit\", \"regemque\", \"dedit\", \"qui\", \"foedere\", \"certo\", \"et\", \"premere\",\n            \"et\", \"laxas\", \"sciret\", \"dare\", \"iussus\", \"habenas\",};\n\n    private static final String[] DNS1 = new String[]{\"corp\", \"your\", \"my\", \"sample\", \"company\", \"test\", \"any\"};\n    private static final String[] DNS2 = new String[]{\"com\", \"org\", \"com\", \"gov\", \"org\", \"com\", \"org\", \"com\", \"edu\"};\n\n    private int pick(int n) {\n        return picker.nextInt(n);\n    }\n\n    private String pick(String[] a) {\n        return a[pick(a.length)];\n    }\n\n    private String pick(String[] a, int count) {\n        if (count <= 0)\n            count = 1;\n        // return \"\";\n\n        int i = pick(a.length);\n        StringBuffer sb = new StringBuffer(a[i]);\n        while (count-- > 0) {\n            i += 1;\n            if (i >= a.length)\n                i = 0;\n            sb.append(' ');\n            sb.append(a[i]);\n        }\n        return sb.toString();\n    }\n\n    @SuppressWarnings(\"unused\")\n    private String pickDigits(int digits) {\n        StringBuffer sb = new StringBuffer();\n        while (digits-- > 0)\n            sb.append(Integer.toString(pick(10)));\n        return sb.toString();\n    }\n\n    private int pickLength(SchemaType sType) {\n        XmlInteger length = (XmlInteger) sType.getFacet(SchemaType.FACET_LENGTH);\n        if (length != null)\n            return length.getBigIntegerValue().intValue();\n        XmlInteger min = (XmlInteger) sType.getFacet(SchemaType.FACET_MIN_LENGTH);\n        XmlInteger max = (XmlInteger) sType.getFacet(SchemaType.FACET_MAX_LENGTH);\n        int minInt, maxInt;\n        if (min == null)\n            minInt = 0;\n        else\n            minInt = min.getBigIntegerValue().intValue();\n        if (max == null)\n            maxInt = Integer.MAX_VALUE;\n        else\n            maxInt = max.getBigIntegerValue().intValue();\n        // We try to keep the length of the array within reasonable limits,\n        // at least 1 item and at most 3 if possible\n        if (minInt == 0 && maxInt >= 1)\n            minInt = 1;\n        if (maxInt > minInt + 2)\n            maxInt = minInt + 2;\n        if (maxInt < minInt)\n            maxInt = minInt;\n        return minInt + pick(maxInt - minInt);\n    }\n\n    /**\n     * Formats a given string to the required length, using the following\n     * operations: - append the source string to itself as necessary to pass the\n     * minLength; - truncate the result of previous step, if necessary, to keep\n     * it within minLength.\n     */\n    private String formatToLength(String s, SchemaType sType) {\n        String result = s;\n        try {\n            SimpleValue min = (SimpleValue) sType.getFacet(SchemaType.FACET_LENGTH);\n            if (min == null)\n                min = (SimpleValue) sType.getFacet(SchemaType.FACET_MIN_LENGTH);\n            if (min != null) {\n                int len = min.getIntValue();\n                while (result.length() < len)\n                    result = result + result;\n            }\n            SimpleValue max = (SimpleValue) sType.getFacet(SchemaType.FACET_LENGTH);\n            if (max == null)\n                max = (SimpleValue) sType.getFacet(SchemaType.FACET_MAX_LENGTH);\n            if (max != null) {\n                int len = max.getIntValue();\n                if (result.length() > len)\n                    result = result.substring(0, len);\n            }\n        } catch (Exception e) // intValue can be out of range\n        {\n        }\n        return result;\n    }\n\n    private String formatDecimal(String start, SchemaType sType) {\n        BigDecimal result = new BigDecimal(start);\n        XmlDecimal xmlD;\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n        BigDecimal min = xmlD != null ? xmlD.getBigDecimalValue() : null;\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n        BigDecimal max = xmlD != null ? xmlD.getBigDecimalValue() : null;\n        boolean minInclusive = true, maxInclusive = true;\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n        if (xmlD != null) {\n            BigDecimal minExcl = xmlD.getBigDecimalValue();\n            if (min == null || min.compareTo(minExcl) < 0) {\n                min = minExcl;\n                minInclusive = false;\n            }\n        }\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n        if (xmlD != null) {\n            BigDecimal maxExcl = xmlD.getBigDecimalValue();\n            if (max == null || max.compareTo(maxExcl) > 0) {\n                max = maxExcl;\n                maxInclusive = false;\n            }\n        }\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_TOTAL_DIGITS);\n        int totalDigits = -1;\n        if (xmlD != null) {\n            totalDigits = xmlD.getBigDecimalValue().intValue();\n\n            StringBuffer sb = new StringBuffer(totalDigits);\n            for (int i = 0; i < totalDigits; i++)\n                sb.append('9');\n            BigDecimal digitsLimit = new BigDecimal(sb.toString());\n            if (max != null && max.compareTo(digitsLimit) > 0) {\n                max = digitsLimit;\n                maxInclusive = true;\n            }\n            digitsLimit = digitsLimit.negate();\n            if (min != null && min.compareTo(digitsLimit) < 0) {\n                min = digitsLimit;\n                minInclusive = true;\n            }\n        }\n\n        int sigMin = min == null ? 1 : result.compareTo(min);\n        int sigMax = max == null ? -1 : result.compareTo(max);\n        boolean minOk = sigMin > 0 || sigMin == 0 && minInclusive;\n        boolean maxOk = sigMax < 0 || sigMax == 0 && maxInclusive;\n\n        // Compute the minimum increment\n        xmlD = (XmlDecimal) sType.getFacet(SchemaType.FACET_FRACTION_DIGITS);\n        int fractionDigits = -1;\n        BigDecimal increment;\n        if (xmlD == null)\n            increment = new BigDecimal(1);\n        else {\n            fractionDigits = xmlD.getBigDecimalValue().intValue();\n            if (fractionDigits > 0) {\n                StringBuffer sb = new StringBuffer(\"0.\");\n                for (int i = 1; i < fractionDigits; i++)\n                    sb.append('0');\n                sb.append('1');\n                increment = new BigDecimal(sb.toString());\n            } else\n                increment = new BigDecimal(1);\n        }\n\n        if (minOk && maxOk) {\n            // OK\n        } else if (minOk && !maxOk) {\n            // TOO BIG\n            if (maxInclusive)\n                result = max;\n            else\n                result = max.subtract(increment);\n        } else if (!minOk && maxOk) {\n            // TOO SMALL\n            if (minInclusive)\n                result = min;\n            else\n                result = min.add(increment);\n        } else {\n            // MIN > MAX!!\n        }\n\n        // We have the number\n        // Adjust the scale according to the totalDigits and fractionDigits\n        int digits = 0;\n        BigDecimal ONE = new BigDecimal(BigInteger.ONE);\n        for (BigDecimal n = result; n.abs().compareTo(ONE) >= 0; digits++)\n            n = n.movePointLeft(1);\n\n        if (fractionDigits > 0)\n            if (totalDigits >= 0)\n                result.setScale(Math.max(fractionDigits, totalDigits - digits));\n            else\n                result.setScale(fractionDigits);\n        else if (fractionDigits == 0)\n            result.setScale(0);\n\n        return result.toString();\n    }\n\n    private String formatDuration(SchemaType sType) {\n        XmlDuration d = (XmlDuration) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n        GDuration minInclusive = null;\n        if (d != null)\n            minInclusive = d.getGDurationValue();\n\n        d = (XmlDuration) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n        GDuration maxInclusive = null;\n        if (d != null)\n            maxInclusive = d.getGDurationValue();\n\n        d = (XmlDuration) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n        GDuration minExclusive = null;\n        if (d != null)\n            minExclusive = d.getGDurationValue();\n\n        d = (XmlDuration) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n        GDuration maxExclusive = null;\n        if (d != null)\n            maxExclusive = d.getGDurationValue();\n\n        GDurationBuilder gdurb = new GDurationBuilder();\n        @SuppressWarnings(\"unused\")\n        BigInteger min, max;\n\n        gdurb.setSecond(pick(800000));\n        gdurb.setMonth(pick(20));\n\n        // Years\n        // Months\n        // Days\n        // Hours\n        // Minutes\n        // Seconds\n        // Fractions\n        if (minInclusive != null) {\n            if (gdurb.getYear() < minInclusive.getYear())\n                gdurb.setYear(minInclusive.getYear());\n            if (gdurb.getMonth() < minInclusive.getMonth())\n                gdurb.setMonth(minInclusive.getMonth());\n            if (gdurb.getDay() < minInclusive.getDay())\n                gdurb.setDay(minInclusive.getDay());\n            if (gdurb.getHour() < minInclusive.getHour())\n                gdurb.setHour(minInclusive.getHour());\n            if (gdurb.getMinute() < minInclusive.getMinute())\n                gdurb.setMinute(minInclusive.getMinute());\n            if (gdurb.getSecond() < minInclusive.getSecond())\n                gdurb.setSecond(minInclusive.getSecond());\n            if (gdurb.getFraction().compareTo(minInclusive.getFraction()) < 0)\n                gdurb.setFraction(minInclusive.getFraction());\n        }\n\n        if (maxInclusive != null) {\n            if (gdurb.getYear() > maxInclusive.getYear())\n                gdurb.setYear(maxInclusive.getYear());\n            if (gdurb.getMonth() > maxInclusive.getMonth())\n                gdurb.setMonth(maxInclusive.getMonth());\n            if (gdurb.getDay() > maxInclusive.getDay())\n                gdurb.setDay(maxInclusive.getDay());\n            if (gdurb.getHour() > maxInclusive.getHour())\n                gdurb.setHour(maxInclusive.getHour());\n            if (gdurb.getMinute() > maxInclusive.getMinute())\n                gdurb.setMinute(maxInclusive.getMinute());\n            if (gdurb.getSecond() > maxInclusive.getSecond())\n                gdurb.setSecond(maxInclusive.getSecond());\n            if (gdurb.getFraction().compareTo(maxInclusive.getFraction()) > 0)\n                gdurb.setFraction(maxInclusive.getFraction());\n        }\n\n        if (minExclusive != null) {\n            if (gdurb.getYear() <= minExclusive.getYear())\n                gdurb.setYear(minExclusive.getYear() + 1);\n            if (gdurb.getMonth() <= minExclusive.getMonth())\n                gdurb.setMonth(minExclusive.getMonth() + 1);\n            if (gdurb.getDay() <= minExclusive.getDay())\n                gdurb.setDay(minExclusive.getDay() + 1);\n            if (gdurb.getHour() <= minExclusive.getHour())\n                gdurb.setHour(minExclusive.getHour() + 1);\n            if (gdurb.getMinute() <= minExclusive.getMinute())\n                gdurb.setMinute(minExclusive.getMinute() + 1);\n            if (gdurb.getSecond() <= minExclusive.getSecond())\n                gdurb.setSecond(minExclusive.getSecond() + 1);\n            if (gdurb.getFraction().compareTo(minExclusive.getFraction()) <= 0)\n                gdurb.setFraction(minExclusive.getFraction().add(new BigDecimal(0.001)));\n        }\n\n        if (maxExclusive != null) {\n            if (gdurb.getYear() > maxExclusive.getYear())\n                gdurb.setYear(maxExclusive.getYear());\n            if (gdurb.getMonth() > maxExclusive.getMonth())\n                gdurb.setMonth(maxExclusive.getMonth());\n            if (gdurb.getDay() > maxExclusive.getDay())\n                gdurb.setDay(maxExclusive.getDay());\n            if (gdurb.getHour() > maxExclusive.getHour())\n                gdurb.setHour(maxExclusive.getHour());\n            if (gdurb.getMinute() > maxExclusive.getMinute())\n                gdurb.setMinute(maxExclusive.getMinute());\n            if (gdurb.getSecond() > maxExclusive.getSecond())\n                gdurb.setSecond(maxExclusive.getSecond());\n            if (gdurb.getFraction().compareTo(maxExclusive.getFraction()) > 0)\n                gdurb.setFraction(maxExclusive.getFraction());\n        }\n\n        gdurb.normalize();\n        return gdurb.toString();\n    }\n\n    private String formatDate(SchemaType sType) {\n        GDateBuilder gdateb = new GDateBuilder(new Date(1000L * pick(365 * 24 * 60 * 60) + (30L + pick(20)) * 365\n                * 24 * 60 * 60 * 1000));\n        GDate min = null, max = null;\n\n        // Find the min and the max according to the type\n        switch (sType.getPrimitiveType().getBuiltinTypeCode()) {\n            case SchemaType.BTC_DATE_TIME: {\n                XmlDateTime x = (XmlDateTime) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlDateTime) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlDateTime) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlDateTime) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_TIME: {\n                XmlTime x = (XmlTime) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlTime) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlTime) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlTime) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_DATE: {\n                XmlDate x = (XmlDate) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlDate) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlDate) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlDate) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_G_YEAR_MONTH: {\n                XmlGYearMonth x = (XmlGYearMonth) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlGYearMonth) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlGYearMonth) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlGYearMonth) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_G_YEAR: {\n                XmlGYear x = (XmlGYear) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlGYear) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlGYear) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlGYear) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_G_MONTH_DAY: {\n                XmlGMonthDay x = (XmlGMonthDay) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlGMonthDay) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlGMonthDay) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlGMonthDay) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_G_DAY: {\n                XmlGDay x = (XmlGDay) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlGDay) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlGDay) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlGDay) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n            case SchemaType.BTC_G_MONTH: {\n                XmlGMonth x = (XmlGMonth) sType.getFacet(SchemaType.FACET_MIN_INCLUSIVE);\n                if (x != null)\n                    min = x.getGDateValue();\n                x = (XmlGMonth) sType.getFacet(SchemaType.FACET_MIN_EXCLUSIVE);\n                if (x != null)\n                    if (min == null || min.compareToGDate(x.getGDateValue()) <= 0)\n                        min = x.getGDateValue();\n\n                x = (XmlGMonth) sType.getFacet(SchemaType.FACET_MAX_INCLUSIVE);\n                if (x != null)\n                    max = x.getGDateValue();\n                x = (XmlGMonth) sType.getFacet(SchemaType.FACET_MAX_EXCLUSIVE);\n                if (x != null)\n                    if (max == null || max.compareToGDate(x.getGDateValue()) >= 0)\n                        max = x.getGDateValue();\n                break;\n            }\n        }\n\n        if (min != null && max == null) {\n            if (min.compareToGDate(gdateb) >= 0) {\n                // Reset the date to min + (1-8) hours\n                Calendar c = gdateb.getCalendar();\n                c.add(Calendar.HOUR_OF_DAY, pick(8));\n                gdateb = new GDateBuilder(c);\n            }\n        } else if (min == null && max != null) {\n            if (max.compareToGDate(gdateb) <= 0) {\n                // Reset the date to max - (1-8) hours\n                Calendar c = gdateb.getCalendar();\n                c.add(Calendar.HOUR_OF_DAY, 0 - pick(8));\n                gdateb = new GDateBuilder(c);\n            }\n        } else if (min != null && max != null) {\n            if (min.compareToGDate(gdateb) >= 0 || max.compareToGDate(gdateb) <= 0) {\n                // Find a date between the two\n                Calendar c = min.getCalendar();\n                Calendar cmax = max.getCalendar();\n                c.add(Calendar.HOUR_OF_DAY, 1);\n                if (c.after(cmax)) {\n                    c.add(Calendar.HOUR_OF_DAY, -1);\n                    c.add(Calendar.MINUTE, 1);\n                    if (c.after(cmax)) {\n                        c.add(Calendar.MINUTE, -1);\n                        c.add(Calendar.SECOND, 1);\n                        if (c.after(cmax)) {\n                            c.add(Calendar.SECOND, -1);\n                            c.add(Calendar.MILLISECOND, 1);\n                            if (c.after(cmax))\n                                c.add(Calendar.MILLISECOND, -1);\n                        }\n                    }\n                }\n                gdateb = new GDateBuilder(c);\n            }\n        }\n\n        gdateb.setBuiltinTypeCode(sType.getPrimitiveType().getBuiltinTypeCode());\n        if (pick(2) == 0)\n            gdateb.clearTimeZone();\n        return gdateb.toString();\n    }\n\n    private SchemaType closestBuiltin(SchemaType sType) {\n        while (!sType.isBuiltinType())\n            sType = sType.getBaseType();\n        return sType;\n    }\n\n    /**\n     * Cracks a combined QName of the form URL:localname\n     */\n    public static QName crackQName(String qName) {\n        String ns;\n        String name;\n\n        int index = qName.lastIndexOf(':');\n        if (index >= 0) {\n            ns = qName.substring(0, index);\n            name = qName.substring(index + 1);\n        } else {\n            ns = \"\";\n            name = qName;\n        }\n\n        return new QName(ns, name);\n    }\n\n    /**\n     * Cursor position: Before this call: <outer><foo/>^</outer> (cursor at the\n     * ^) After this call: <<outer><foo/><bar/>som text<etc/>^</outer>\n     */\n    private void processParticle(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        int loop = determineMinMaxForSample(sp, xmlc);\n\n        while (loop-- > 0) {\n            switch (sp.getParticleType()) {\n                case (SchemaParticle.ELEMENT):\n                    processElement(sp, xmlc, mixed);\n                    break;\n                case (SchemaParticle.SEQUENCE):\n                    processSequence(sp, xmlc, mixed);\n                    break;\n                case (SchemaParticle.CHOICE):\n                    processChoice(sp, xmlc, mixed);\n                    break;\n                case (SchemaParticle.ALL):\n                    processAll(sp, xmlc, mixed);\n                    break;\n                case (SchemaParticle.WILDCARD):\n                    processWildCard(sp, xmlc, mixed);\n                    break;\n                default:\n                    // throw new Exception(\"No Match on Schema Particle Type: \" +\n                    // String.valueOf(sp.getParticleType()));\n            }\n        }\n    }\n\n    private int determineMinMaxForSample(SchemaParticle sp, XmlCursor xmlc) {\n        int minOccurs = sp.getIntMinOccurs();\n        int maxOccurs = sp.getIntMaxOccurs();\n\n        if (minOccurs == maxOccurs)\n            return minOccurs;\n\n        if (minOccurs == 0 && ignoreOptional)\n            return 0;\n\n        int result = minOccurs;\n        if (result == 0)\n            result = 1;\n\n        if (sp.getParticleType() != SchemaParticle.ELEMENT)\n            return result;\n\n        // it probably only makes sense to put comments in front of individual\n        // elements that repeat\n\n        if (!skipComments) {\n            if (sp.getMaxOccurs() == null) {\n                // xmlc.insertComment(\"The next \" + getItemNameOrType(sp, xmlc) + \"\n                // may\n                // be repeated \" + minOccurs + \" or more times\");\n                if (minOccurs == 0)\n                    xmlc.insertComment(\"Zero or more repetitions:\");\n                else\n                    xmlc.insertComment(minOccurs + \" or more repetitions:\");\n            } else if (sp.getIntMaxOccurs() > 1) {\n                xmlc.insertComment(minOccurs + \" to \" + String.valueOf(sp.getMaxOccurs()) + \" repetitions:\");\n            } else {\n                xmlc.insertComment(\"Optional:\");\n            }\n        }\n\n        return result;\n    }\n\n    /*\n      * Return a name for the element or the particle type to use in the comment\n      * for minoccurs, max occurs\n      */\n    @SuppressWarnings(\"unused\")\n    private String getItemNameOrType(SchemaParticle sp, XmlCursor xmlc) {\n        String elementOrTypeName = null;\n        if (sp.getParticleType() == SchemaParticle.ELEMENT) {\n            elementOrTypeName = \"Element (\" + sp.getName().getLocalPart() + \")\";\n        } else {\n            elementOrTypeName = printParticleType(sp.getParticleType());\n        }\n        return elementOrTypeName;\n    }\n\n    private void processElement(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        // cast as schema local element\n        SchemaLocalElement element = (SchemaLocalElement) sp;\n\n        // Add comment about type\n        addElementTypeAndRestricionsComment(element, xmlc);\n\n        // / ^ -> <elemenname></elem>^\n        if (soapEnc)\n            xmlc.insertElement(element.getName().getLocalPart()); // test\n            // encoded?\n            // drop\n            // namespaces.\n        else\n            xmlc.insertElement(element.getName().getLocalPart(), element.getName().getNamespaceURI());\n        // / -> <elem>^</elem>\n        // processAttributes( sp.getType(), xmlc );\n\n        xmlc.toPrevToken();\n        // -> <elem>stuff^</elem>\n\n        String[] values = null;\n        if (multiValuesProvider != null)\n            values = multiValuesProvider.getMultiValues(element.getName()).toArray(new String[]{});\n        if (values != null)\n            xmlc.insertChars(StringUtils.join(values, \"s\"));\n        else if (sp.isDefault())\n            xmlc.insertChars(sp.getDefaultText());\n        else\n            createSampleForType(element.getType(), xmlc);\n        // -> <elem>stuff</elem>^\n        xmlc.toNextToken();\n    }\n\n    @SuppressWarnings(\"unused\")\n    private void moveToken(int numToMove, XmlCursor xmlc) {\n        for (int i = 0; i < Math.abs(numToMove); i++) {\n            if (numToMove < 0) {\n                xmlc.toPrevToken();\n            } else {\n                xmlc.toNextToken();\n            }\n        }\n    }\n\n    private static final String formatQName(XmlCursor xmlc, QName qName) {\n        XmlCursor parent = xmlc.newCursor();\n        parent.toParent();\n        String prefix = parent.prefixForNamespace(qName.getNamespaceURI());\n        parent.dispose();\n        String name;\n        if (prefix == null || prefix.length() == 0)\n            name = qName.getLocalPart();\n        else\n            name = prefix + \":\" + qName.getLocalPart();\n        return name;\n    }\n\n    private static final QName HREF = new QName(\"href\");\n    private static final QName ID = new QName(\"id\");\n    public static final QName XSI_TYPE = new QName(\"http://www.w3.org/2001/XMLSchema-instance\", \"type\");\n    public static final QName ENC_ARRAYTYPE = new QName(\"http://schemas.xmlsoap.org/soap/encoding/\", \"arrayType\");\n    private static final QName ENC_OFFSET = new QName(\"http://schemas.xmlsoap.org/s/encoding/\", \"offset\");\n\n    public static final Set<QName> SKIPPED_SOAP_ATTRS = new HashSet<QName>(Arrays.asList(new QName[]{HREF, ID,\n            ENC_OFFSET}));\n\n    private void processAttributes(SchemaType stype, XmlCursor xmlc) {\n        if (soapEnc) {\n            QName typeName = stype.getName();\n            if (typeName != null) {\n                xmlc.insertAttributeWithValue(XSI_TYPE, formatQName(xmlc, typeName));\n            }\n        }\n\n        SchemaProperty[] attrProps = stype.getAttributeProperties();\n        for (int i = 0; i < attrProps.length; i++) {\n            SchemaProperty attr = attrProps[i];\n            if (attr.getMinOccurs().intValue() == 0 && ignoreOptional)\n                continue;\n\n            if (attr.getName().equals(new QName(\"http://www.w3.org/2005/05/xmlmime\", \"contentType\"))) {\n                xmlc.insertAttributeWithValue(attr.getName(), \"application/?\");\n                continue;\n            }\n\n            if (soapEnc) {\n                if (SKIPPED_SOAP_ATTRS.contains(attr.getName()))\n                    continue;\n                if (ENC_ARRAYTYPE.equals(attr.getName())) {\n                    SOAPArrayType arrayType = ((SchemaWSDLArrayType) stype.getAttributeModel().getAttribute(\n                            attr.getName())).getWSDLArrayType();\n                    if (arrayType != null)\n                        xmlc.insertAttributeWithValue(attr.getName(),\n                                formatQName(xmlc, arrayType.getQName()) + arrayType.soap11DimensionString());\n                    continue;\n                }\n            }\n\n            String value = null;\n            if (multiValuesProvider != null) {\n                String[] values = multiValuesProvider.getMultiValues(attr.getName()).toArray(new String[]{});\n                if (values != null)\n                    value = StringUtils.join(values, \",\");\n            }\n            if (value == null)\n                value = attr.getDefaultText();\n            if (value == null)\n                value = sampleDataForSimpleType(attr.getType());\n\n            xmlc.insertAttributeWithValue(attr.getName(), value);\n        }\n    }\n\n    private void processSequence(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        SchemaParticle[] spc = sp.getParticleChildren();\n        for (int i = 0; i < spc.length; i++) {\n            // / <parent>maybestuff^</parent>\n            processParticle(spc[i], xmlc, mixed);\n            // <parent>maybestuff...morestuff^</parent>\n            if (mixed && i < spc.length - 1)\n                xmlc.insertChars(pick(WORDS));\n        }\n    }\n\n    private void processChoice(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        SchemaParticle[] spc = sp.getParticleChildren();\n        if (!skipComments)\n            xmlc.insertComment(\"You have a CHOICE of the next \" + String.valueOf(spc.length) + \" items at this level\");\n\n        for (int i = 0; i < spc.length; i++) {\n            processParticle(spc[i], xmlc, mixed);\n        }\n    }\n\n    private void processAll(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        SchemaParticle[] spc = sp.getParticleChildren();\n        if (!skipComments)\n            xmlc.insertComment(\"You may enter the following \" + String.valueOf(spc.length) + \" items in any order\");\n\n        for (int i = 0; i < spc.length; i++) {\n            processParticle(spc[i], xmlc, mixed);\n            if (mixed && i < spc.length - 1)\n                xmlc.insertChars(pick(WORDS));\n        }\n    }\n\n    private void processWildCard(SchemaParticle sp, XmlCursor xmlc, boolean mixed) {\n        if (!skipComments)\n            xmlc.insertComment(\"You may enter ANY elements at this point\");\n        // xmlc.insertElement(\"AnyElement\");\n    }\n\n    /**\n     * This method will get the base type for the schema type\n     */\n\n    @SuppressWarnings(\"unused\")\n    private static QName getClosestName(SchemaType sType) {\n        while (sType.getName() == null)\n            sType = sType.getBaseType();\n\n        return sType.getName();\n    }\n\n    private String printParticleType(int particleType) {\n        StringBuffer returnParticleType = new StringBuffer();\n        returnParticleType.append(\"Schema Particle Type: \");\n\n        switch (particleType) {\n            case SchemaParticle.ALL:\n                returnParticleType.append(\"ALL\\n\");\n                break;\n            case SchemaParticle.CHOICE:\n                returnParticleType.append(\"CHOICE\\n\");\n                break;\n            case SchemaParticle.ELEMENT:\n                returnParticleType.append(\"ELEMENT\\n\");\n                break;\n            case SchemaParticle.SEQUENCE:\n                returnParticleType.append(\"SEQUENCE\\n\");\n                break;\n            case SchemaParticle.WILDCARD:\n                returnParticleType.append(\"WILDCARD\\n\");\n                break;\n            default:\n                returnParticleType.append(\"Schema Particle Type Unknown\");\n                break;\n        }\n\n        return returnParticleType.toString();\n    }\n\n\n    private void addElementTypeAndRestricionsComment(SchemaLocalElement element, XmlCursor xmlc) {\n\n        SchemaType type = element.getType();\n        if (typeComment && (type != null && type.isSimpleType())) {\n            String info = \"\";\n\n            XmlAnySimpleType[] values = type.getEnumerationValues();\n            if (values != null && values.length > 0) {\n                info = \" - enumeration: [\";\n                for (int c = 0; c < values.length; c++) {\n                    if (c > 0)\n                        info += \",\";\n\n                    info += values[c].getStringValue();\n                }\n\n                info += \"]\";\n            }\n\n            if (type.isAnonymousType())\n                xmlc.insertComment(\"anonymous type\" + info);\n            else\n                xmlc.insertComment(\"type: \" + type.getName().getLocalPart() + info);\n        }\n    }\n\n    public void setTypeComment(boolean b) {\n        typeComment = b;\n    }\n\n    public void setIgnoreOptional(boolean b) {\n        ignoreOptional = b;\n    }\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SchemaDefinitionWrapper.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.xmlbeans.SchemaType;\nimport org.apache.xmlbeans.SchemaTypeLoader;\nimport org.apache.xmlbeans.SchemaTypeSystem;\nimport org.apache.xmlbeans.XmlBeans;\n\nimport javax.wsdl.Definition;\nimport javax.xml.namespace.QName;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n * <p/>\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\nclass SchemaDefinitionWrapper {\n    private SchemaTypeSystem schemaTypes;\n    private SchemaTypeLoader schemaTypeLoader;\n\n    private Definition definition;\n\n    public SchemaDefinitionWrapper(Definition definition, String schemaURL) {\n        this.definition = definition;\n        loadSchemaTypes(new UrlSchemaLoader(schemaURL));\n    }\n\n    public SchemaTypeLoader getSchemaTypeLoader() {\n        return schemaTypeLoader;\n    }\n\n    public SchemaTypeSystem getSchemaTypeSystem() {\n        return schemaTypes;\n    }\n\n    public boolean hasSchemaTypes() {\n        return schemaTypes != null;\n    }\n\n    public Collection<String> getDefinedNamespaces() throws Exception {\n        Set<String> namespaces = new HashSet<String>();\n\n        SchemaTypeSystem schemaTypes = getSchemaTypeSystem();\n        if (schemaTypes != null) {\n            namespaces.addAll(SchemaUtils.extractNamespaces(getSchemaTypeSystem(), true));\n        }\n\n        namespaces.add(getTargetNamespace());\n\n        return namespaces;\n    }\n\n    public String getTargetNamespace() {\n        return WsdlUtils.getTargetNamespace(definition);\n    }\n\n    public SchemaType findType(QName typeName) {\n        return getSchemaTypeLoader().findType(typeName);\n    }\n\n    public void loadSchemaTypes(DefinitionLoader loader) {\n        schemaTypes = SchemaUtils.loadSchemaTypes(loader.getBaseURI(), loader);\n        schemaTypeLoader = XmlBeans.typeLoaderUnion(new SchemaTypeLoader[]{schemaTypes,\n                XmlBeans.getBuiltinTypeSystem()});\n    }\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SchemaLoader.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.xmlbeans.XmlObject;\nimport org.apache.xmlbeans.XmlOptions;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n * <p/>\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\ninterface SchemaLoader {\n    XmlObject loadXmlObject(String wsdlUrl, XmlOptions options) throws Exception;\n\n    String getBaseURI();\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SchemaUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.log4j.Logger;\nimport org.apache.xmlbeans.*;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.w3c.dom.*;\n\nimport javax.xml.namespace.QName;\nimport java.io.File;\nimport java.net.URL;\nimport java.util.*;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - changing the mechanism using which external resources are loaded\n */\n\n/**\n * XML-Schema related tools\n *\n * @author Ole.Matzura\n */\nclass SchemaUtils {\n    private final static Logger log = Logger.getLogger(SchemaUtils.class);\n    private static Map<String, XmlObject> defaultSchemas = new HashMap<String, XmlObject>();\n\n    public static final boolean STRICT_SCHEMA_TYPES = false;\n\n    static {\n        initDefaultSchemas();\n    }\n\n    public static URL loadResoruce(String resourceName) {\n        return ResourceUtils.getResourceWithAbsolutePackagePath(\n                SchemaUtils.class, \"/xsds/\", resourceName);\n    }\n\n    public static void initDefaultSchemas() {\n        try {\n            defaultSchemas.clear();\n            loadDefaultSchema(loadResoruce(\"xop.xsd\"));\n            loadDefaultSchema(loadResoruce(\"XMLSchema.xsd\"));\n            loadDefaultSchema(loadResoruce(\"xml.xsd\"));\n            loadDefaultSchema(loadResoruce(\"swaref.xsd\"));\n            loadDefaultSchema(loadResoruce(\"xmime200505.xsd\"));\n            loadDefaultSchema(loadResoruce(\"xmime200411.xsd\"));\n            loadDefaultSchema(loadResoruce(\"soapEnvelope.xsd\"));\n            loadDefaultSchema(loadResoruce(\"soapEncoding.xsd\"));\n            loadDefaultSchema(loadResoruce(\"soapEnvelope12.xsd\"));\n            loadDefaultSchema(loadResoruce(\"soapEncoding12.xsd\"));\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n\n    private static void loadDefaultSchema(URL url) throws Exception {\n        XmlObject xmlObject = XmlUtils.createXmlObject(url);\n        if (!((Document) xmlObject.getDomNode()).getDocumentElement().getNamespaceURI().equals(Constants.XSD_NS))\n            return;\n\n        String targetNamespace = getTargetNamespace(xmlObject);\n\n        if (defaultSchemas.containsKey(targetNamespace))\n            log.warn(\"Overriding schema for targetNamespace \" + targetNamespace);\n\n        defaultSchemas.put(targetNamespace, xmlObject);\n\n        log.debug(\"Added default schema from \" + url.getPath() + \" with targetNamespace \" + targetNamespace);\n    }\n\n    public static SchemaTypeSystem loadSchemaTypes(String wsdlUrl, SchemaLoader loader) {\n        try {\n            log.debug(\"Loading schema types from [\" + wsdlUrl + \"]\");\n            ArrayList<XmlObject> schemas = new ArrayList<XmlObject>(getSchemas(wsdlUrl, loader).values());\n            return buildSchemaTypes(schemas);\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public static SchemaTypeSystem buildSchemaTypes(List<XmlObject> schemas) {\n        XmlOptions options = new XmlOptions();\n        options.setCompileNoValidation();\n        options.setCompileNoPvrRule();\n        options.setCompileDownloadUrls();\n        options.setCompileNoUpaRule();\n        options.setValidateTreatLaxAsSkip();\n\n        for (int c = 0; c < schemas.size(); c++) {\n            XmlObject xmlObject = schemas.get(c);\n            if (xmlObject == null\n                    || !((Document) xmlObject.getDomNode()).getDocumentElement().getNamespaceURI()\n                    .equals(Constants.XSD_NS)) {\n                schemas.remove(c);\n                c--;\n            }\n        }\n\n        // TODO\n        boolean strictSchemaTypes = STRICT_SCHEMA_TYPES;//SoapUI.getSettings().getBoolean( WsdlSettings.STRICT_SCHEMA_TYPES );\n        if (!strictSchemaTypes) {\n            Set<String> mdefNamespaces = new HashSet<String>();\n\n            for (XmlObject xObj : schemas) {\n                mdefNamespaces.add(getTargetNamespace(xObj));\n            }\n\n            options.setCompileMdefNamespaces(mdefNamespaces);\n        }\n\n        ArrayList<?> errorList = new ArrayList<Object>();\n        options.setErrorListener(errorList);\n\n        XmlCursor cursor = null;\n\n        try {\n            // remove imports\n            for (int c = 0; c < schemas.size(); c++) {\n                XmlObject s = schemas.get(c);\n\n                Map<?, ?> map = new HashMap<String, String>();\n                cursor = s.newCursor();\n                cursor.toStartDoc();\n                if (toNextContainer(cursor))\n                    cursor.getAllNamespaces(map);\n                else\n                    log.warn(\"Can not get namespaces for \" + s);\n\n                String tns = getTargetNamespace(s);\n\n                // log.info( \"schema for [\" + tns + \"] contained [\" + map.toString()\n                // + \"] namespaces\" );\n\n                if (strictSchemaTypes && defaultSchemas.containsKey(tns)) {\n                    schemas.remove(c);\n                    c--;\n                } else {\n                    removeImports(s);\n                }\n\n                cursor.dispose();\n                cursor = null;\n            }\n\n            // schemas.add( soapVersion.getSoapEncodingSchema());\n            // schemas.add( soapVersion.getSoapEnvelopeSchema());\n            schemas.addAll(defaultSchemas.values());\n\n            SchemaTypeSystem sts = XmlBeans.compileXsd(schemas.toArray(new XmlObject[schemas.size()]),\n                    XmlBeans.getBuiltinTypeSystem(), options);\n\n            return sts;\n            // return XmlBeans.typeLoaderUnion(new SchemaTypeLoader[] { sts,\n            // XmlBeans.getBuiltinTypeSystem() });\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        } finally {\n            for (int c = 0; c < errorList.size(); c++) {\n                log.warn(\"Error: \" + errorList.get(c));\n            }\n\n            if (cursor != null)\n                cursor.dispose();\n        }\n    }\n\n    public static boolean toNextContainer(XmlCursor cursor) {\n        while (!cursor.isContainer() && !cursor.isEnddoc())\n            cursor.toNextToken();\n\n        return cursor.isContainer();\n    }\n\n    public static String getTargetNamespace(XmlObject s) {\n        return ((Document) s.getDomNode()).getDocumentElement().getAttribute(\"targetNamespace\");\n    }\n\n    public static Map<String, XmlObject> getSchemas(String wsdlUrl, SchemaLoader loader) {\n        Map<String, XmlObject> result = new HashMap<String, XmlObject>();\n        getSchemas(wsdlUrl, result, loader, null /* , false */);\n        return result;\n    }\n\n    /**\n     * Returns a map mapping urls to corresponding XmlSchema XmlObjects for the\n     * specified wsdlUrl\n     */\n    public static void getSchemas(String wsdlUrl, Map<String, XmlObject> existing, SchemaLoader loader, String tns) {\n        if (existing.containsKey(wsdlUrl)) {\n            return;\n        }\n\n        log.debug(\"Getting schema \" + wsdlUrl);\n\n        ArrayList<?> errorList = new ArrayList<Object>();\n\n        Map<String, XmlObject> result = new HashMap<String, XmlObject>();\n\n        boolean common = false;\n\n        try {\n            XmlOptions options = new XmlOptions();\n            options.setCompileNoValidation();\n            options.setSaveUseOpenFrag();\n            options.setErrorListener(errorList);\n            options.setSaveSyntheticDocumentElement(new QName(Constants.XSD_NS, \"schema\"));\n\n            XmlObject xmlObject = loader.loadXmlObject(wsdlUrl, options);\n            if (xmlObject == null)\n                throw new Exception(\"Failed to load schema from [\" + wsdlUrl + \"]\");\n\n            Document dom = (Document) xmlObject.getDomNode();\n            Node domNode = dom.getDocumentElement();\n\n            // is this an xml schema?\n            if (domNode.getLocalName().equals(\"schema\") && Constants.XSD_NS.equals(domNode.getNamespaceURI())) {\n                // set targetNamespace (this happens if we are following an include\n                // statement)\n                if (tns != null) {\n                    Element elm = ((Element) domNode);\n                    if (!elm.hasAttribute(\"targetNamespace\")) {\n                        common = true;\n                        elm.setAttribute(\"targetNamespace\", tns);\n                    }\n\n                    // check for namespace prefix for targetNamespace\n                    NamedNodeMap attributes = elm.getAttributes();\n                    int c = 0;\n                    for (; c < attributes.getLength(); c++) {\n                        Node item = attributes.item(c);\n                        if (item.getNodeName().equals(\"xmlns\"))\n                            break;\n\n                        if (item.getNodeValue().equals(tns) && item.getNodeName().startsWith(\"xmlns\"))\n                            break;\n                    }\n\n                    if (c == attributes.getLength())\n                        elm.setAttribute(\"xmlns\", tns);\n                }\n\n                if (common && !existing.containsKey(wsdlUrl + \"@\" + tns))\n                    result.put(wsdlUrl + \"@\" + tns, xmlObject);\n                else\n                    result.put(wsdlUrl, xmlObject);\n            } else {\n                existing.put(wsdlUrl, null);\n\n                XmlObject[] schemas = xmlObject.selectPath(\"declare namespace s='\" + Constants.XSD_NS + \"' .//s:schema\");\n\n                for (int i = 0; i < schemas.length; i++) {\n                    XmlCursor xmlCursor = schemas[i].newCursor();\n                    String xmlText = xmlCursor.getObject().xmlText(options);\n                    // schemas[i] = XmlObject.Factory.parse( xmlText, options );\n                    schemas[i] = XmlUtils.createXmlObject(xmlText, options);\n                    schemas[i].documentProperties().setSourceName(wsdlUrl);\n\n                    result.put(wsdlUrl + \"@\" + (i + 1), schemas[i]);\n                }\n\n                XmlObject[] wsdlImports = xmlObject.selectPath(\"declare namespace s='\" + Constants.WSDL11_NS\n                        + \"' .//s:import/@location\");\n                for (int i = 0; i < wsdlImports.length; i++) {\n                    String location = ((SimpleValue) wsdlImports[i]).getStringValue();\n                    if (location != null) {\n                        if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                            location = joinRelativeUrl(wsdlUrl, location);\n\n                        getSchemas(location, existing, loader, null);\n                    }\n                }\n\n                XmlObject[] wadl10Imports = xmlObject.selectPath(\"declare namespace s='\" + Constants.WADL10_NS\n                        + \"' .//s:grammars/s:include/@href\");\n                for (int i = 0; i < wadl10Imports.length; i++) {\n                    String location = ((SimpleValue) wadl10Imports[i]).getStringValue();\n                    if (location != null) {\n                        if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                            location = joinRelativeUrl(wsdlUrl, location);\n\n                        getSchemas(location, existing, loader, null);\n                    }\n                }\n\n                XmlObject[] wadlImports = xmlObject.selectPath(\"declare namespace s='\" + Constants.WADL11_NS\n                        + \"' .//s:grammars/s:include/@href\");\n                for (int i = 0; i < wadlImports.length; i++) {\n                    String location = ((SimpleValue) wadlImports[i]).getStringValue();\n                    if (location != null) {\n                        if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                            location = joinRelativeUrl(wsdlUrl, location);\n\n                        getSchemas(location, existing, loader, null);\n                    }\n                }\n\n            }\n\n            existing.putAll(result);\n\n            XmlObject[] schemas = result.values().toArray(new XmlObject[result.size()]);\n\n            for (int c = 0; c < schemas.length; c++) {\n                xmlObject = schemas[c];\n\n                XmlObject[] schemaImports = xmlObject.selectPath(\"declare namespace s='\" + Constants.XSD_NS\n                        + \"' .//s:import/@schemaLocation\");\n                for (int i = 0; i < schemaImports.length; i++) {\n                    String location = ((SimpleValue) schemaImports[i]).getStringValue();\n                    Element elm = ((Attr) schemaImports[i].getDomNode()).getOwnerElement();\n\n                    if (location != null && !defaultSchemas.containsKey(elm.getAttribute(\"namespace\"))) {\n                        if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                            location = joinRelativeUrl(wsdlUrl, location);\n\n                        getSchemas(location, existing, loader, null);\n                    }\n                }\n\n                XmlObject[] schemaIncludes = xmlObject.selectPath(\"declare namespace s='\" + Constants.XSD_NS\n                        + \"' .//s:include/@schemaLocation\");\n                for (int i = 0; i < schemaIncludes.length; i++) {\n                    String location = ((SimpleValue) schemaIncludes[i]).getStringValue();\n                    if (location != null) {\n                        String targetNS = getTargetNamespace(xmlObject);\n\n                        if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                            location = joinRelativeUrl(wsdlUrl, location);\n\n                        getSchemas(location, existing, loader, targetNS);\n                    }\n                }\n            }\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public static void getDefinitionParts(String origWsdlUrl, Map<String, XmlObject> existing, SchemaLoader loader)\n            throws Exception {\n        String wsdlUrl = origWsdlUrl;\n        if (existing.containsKey(wsdlUrl))\n            return;\n\n        XmlObject xmlObject = loader.loadXmlObject(wsdlUrl, null);\n        existing.put(wsdlUrl, xmlObject);\n        // wsdlUrl = loader.getBaseURI();\n\n        selectDefinitionParts(wsdlUrl, existing, loader, xmlObject, \"declare namespace s='\" + Constants.WSDL11_NS\n                + \"' .//s:import/@location\");\n        selectDefinitionParts(wsdlUrl, existing, loader, xmlObject, \"declare namespace s='\" + Constants.WADL10_NS\n                + \"' .//s:grammars/s:include/@href\");\n        selectDefinitionParts(wsdlUrl, existing, loader, xmlObject, \"declare namespace s='\" + Constants.WADL11_NS\n                + \"' .//s:grammars/s:include/@href\");\n        selectDefinitionParts(wsdlUrl, existing, loader, xmlObject, \"declare namespace s='\" + Constants.XSD_NS\n                + \"' .//s:import/@schemaLocation\");\n        selectDefinitionParts(wsdlUrl, existing, loader, xmlObject, \"declare namespace s='\" + Constants.XSD_NS\n                + \"' .//s:include/@schemaLocation\");\n    }\n\n    public static String joinRelativeUrl(String baseUrl, String url) {\n        if (baseUrl.indexOf('?') > 0)\n            baseUrl = baseUrl.substring(0, baseUrl.indexOf('?'));\n\n        boolean isWindowsUrl = baseUrl.indexOf('\\\\') >= 0;\n        boolean isUsedInUnix = File.separatorChar == '/';\n\n        if (isUsedInUnix && isWindowsUrl) {\n            baseUrl = baseUrl.replace('\\\\', '/');\n            url = url.replace('\\\\', '/');\n        }\n\n        boolean isFile = baseUrl.startsWith(\"file:\");\n\n        int ix = baseUrl.lastIndexOf('\\\\');\n        if (ix == -1)\n            ix = baseUrl.lastIndexOf('/');\n\n        // absolute?\n        if (url.startsWith(\"/\") && !isFile) {\n            ix = baseUrl.indexOf(\"/\", baseUrl.indexOf(\"//\") + 2);\n            return baseUrl.substring(0, ix) + url;\n        }\n\n        // remove leading \"./\"\n        while (url.startsWith(\".\\\\\") || url.startsWith(\"./\"))\n            url = url.substring(2);\n\n        // remove leading \"../\"\n        while (url.startsWith(\"../\") || url.startsWith(\"..\\\\\")) {\n            int ix2 = baseUrl.lastIndexOf('\\\\', ix - 1);\n            if (ix2 == -1)\n                ix2 = baseUrl.lastIndexOf('/', ix - 1);\n            if (ix2 == -1)\n                break;\n\n            baseUrl = baseUrl.substring(0, ix2 + 1);\n            ix = ix2;\n\n            url = url.substring(3);\n        }\n\n        // remove \"/./\"\n        while (url.indexOf(\"/./\") != -1 || url.indexOf(\"\\\\.\\\\\") != -1) {\n            int ix2 = url.indexOf(\"/./\");\n            if (ix2 == -1)\n                ix2 = url.indexOf(\"\\\\.\\\\\");\n\n            url = url.substring(0, ix2) + url.substring(ix2 + 2);\n        }\n\n        // remove \"/../\"\n        while (url.indexOf(\"/../\") != -1 || url.indexOf(\"\\\\..\\\\\") != -1) {\n            int ix2 = -1;\n\n            int ix3 = url.indexOf(\"/../\");\n            if (ix3 == -1) {\n                ix3 = url.indexOf(\"\\\\..\\\\\");\n                ix2 = url.lastIndexOf('\\\\', ix3 - 1);\n            } else {\n                ix2 = url.lastIndexOf('/', ix3 - 1);\n            }\n\n            if (ix2 == -1)\n                break;\n\n            url = url.substring(0, ix2) + url.substring(ix3 + 3);\n        }\n\n        String result = baseUrl.substring(0, ix + 1) + url;\n        if (isFile)\n            result = result.replace('/', File.separatorChar);\n\n        return result;\n    }\n\n    private static void selectDefinitionParts(String wsdlUrl, Map<String, XmlObject> existing, SchemaLoader loader,\n                                              XmlObject xmlObject, String path) throws Exception {\n        XmlObject[] wsdlImports = xmlObject.selectPath(path);\n        for (int i = 0; i < wsdlImports.length; i++) {\n            String location = ((SimpleValue) wsdlImports[i]).getStringValue();\n            if (location != null) {\n                if (StringUtils.isNotBlank(location)) {\n                    if (!location.startsWith(\"file:\") && location.indexOf(\"://\") == -1)\n                        location = joinRelativeUrl(wsdlUrl, location);\n\n                    getDefinitionParts(location, existing, loader);\n                } else {\n                    Node domNode = ((Attr) wsdlImports[i].getDomNode()).getOwnerElement();\n                    domNode.getParentNode().removeChild(domNode);\n                }\n            }\n        }\n    }\n\n    /**\n     * Extracts namespaces - used in tool integrations for mapping..\n     */\n    public static Collection<String> extractNamespaces(SchemaTypeSystem schemaTypes, boolean removeDefault) {\n        Set<String> namespaces = new HashSet<String>();\n        SchemaType[] globalTypes = schemaTypes.globalTypes();\n        for (int c = 0; c < globalTypes.length; c++) {\n            namespaces.add(globalTypes[c].getName().getNamespaceURI());\n        }\n\n        if (removeDefault) {\n            namespaces.removeAll(defaultSchemas.keySet());\n            namespaces.remove(Constants.SOAP11_ENVELOPE_NS);\n            namespaces.remove(Constants.SOAP_ENCODING_NS);\n        }\n\n        return namespaces;\n    }\n\n    /**\n     * Used when creating a TypeSystem from a complete collection of\n     * SchemaDocuments so that referenced types are not downloaded (again)\n     */\n    public static void removeImports(XmlObject xmlObject) throws XmlException {\n        XmlObject[] imports = xmlObject.selectPath(\"declare namespace s='\" + Constants.XSD_NS + \"' .//s:import\");\n\n        for (int c = 0; c < imports.length; c++) {\n            XmlCursor cursor = imports[c].newCursor();\n            cursor.removeXml();\n            cursor.dispose();\n        }\n\n        XmlObject[] includes = xmlObject.selectPath(\"declare namespace s='\" + Constants.XSD_NS + \"' .//s:include\");\n\n        for (int c = 0; c < includes.length; c++) {\n            XmlCursor cursor = includes[c].newCursor();\n            cursor.removeXml();\n            cursor.dispose();\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SoapLegacyFacade.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.SoapValidationException;\n\nimport javax.wsdl.*;\nimport javax.wsdl.extensions.soap.SOAPBinding;\nimport javax.wsdl.extensions.soap12.SOAP12Binding;\nimport javax.xml.namespace.QName;\nimport java.io.File;\nimport java.net.URL;\nimport java.util.Collection;\nimport java.util.List;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapLegacyFacade {\n\n    public static enum Soap {SOAP_1_1, SOAP_1_2}\n\n    private static final String RPC = \"rpc\";\n\n    private SoapMessageBuilder messageBuilder;\n\n    public SoapLegacyFacade(URL wsdlUrl) throws WSDLException {\n        this.messageBuilder = new SoapMessageBuilder(wsdlUrl);\n    }\n\n    public String buildSoapMessageFromInput(Binding binding, BindingOperation bindingOperation, SoapContext context) {\n        try {\n            return messageBuilder.buildSoapMessageFromInput(binding, bindingOperation, context);\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public String buildSoapMessageFromOutput(Binding binding, BindingOperation bindingOperation, SoapContext context) {\n        try {\n            return messageBuilder.buildSoapMessageFromOutput(binding, bindingOperation, context);\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public void validateSoapRequestMessage(Binding binding, BindingOperation operation, String message, boolean strict) {\n        WsdlValidator validator = new WsdlValidator(messageBuilder, binding);\n        List<AssertionError> result = validator.assertRequest(operation, message, strict);\n        if (!result.isEmpty()) {\n            throw new SoapValidationException(result);\n        }\n    }\n\n    public void validateSoapResponseMessage(Binding binding, BindingOperation operation, String message, boolean strict) {\n        WsdlValidator validator = new WsdlValidator(messageBuilder, binding);\n        List<AssertionError> result = validator.assertResponse(operation, message, strict);\n        if (!result.isEmpty()) {\n            throw new SoapValidationException(result);\n        }\n    }\n\n    public String buildFault(String code, String message, Binding binding, SoapContext context) {\n        return messageBuilder.buildFault(code, message, binding, context);\n    }\n\n    public String buildEmptyFault(Binding binding, SoapContext context) {\n        return messageBuilder.buildEmptyFault(binding, context);\n    }\n\n    public String buildEmptyMessage(Binding binding, SoapContext context) {\n        return messageBuilder.buildEmptyMessage(binding, context);\n    }\n\n    public URL saveWsdl(String rootFileName, File folder) {\n        return messageBuilder.saveWsdl(rootFileName, folder);\n    }\n\n    public static URL saveWsdl(URL wsdlUrl, String rootFileName, File folder) {\n        try {\n            return SoapMessageBuilder.saveWsdl(rootFileName, wsdlUrl, folder);\n        } catch (WSDLException e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public Binding getBindingByName(QName bindingName) {\n        return messageBuilder.getBindingByName(bindingName);\n    }\n\n    public List<QName> getBindingNames() {\n        return messageBuilder.getBindingNames();\n    }\n\n    public static String buildEmptyMessage(SoapVersion soapVersion, SoapContext context) {\n        return SoapMessageBuilder.buildEmptyMessage(soapVersion, context);\n    }\n\n    public static String buildEmptyFault(SoapVersion soapVersion, SoapContext context) {\n        return SoapMessageBuilder.buildEmptyFault(soapVersion, context);\n    }\n\n    public static String buildFault(String code, String message, SoapVersion soapVersion, SoapContext context) {\n        return SoapMessageBuilder.buildFault(code, message, soapVersion, context);\n    }\n\n    private static SoapVersion transformSoapVersion(Soap soapVersion) {\n        if (soapVersion.equals(Soap.SOAP_1_1)) {\n            return SoapVersion.Soap11;\n        } else {\n            return SoapVersion.Soap12;\n        }\n    }\n\n    public static String buildEmptyMessage(Soap version, SoapContext context) {\n        return SoapLegacyFacade.buildEmptyMessage(transformSoapVersion(version), context);\n    }\n\n    public static String buildEmptyFault(Soap version, SoapContext context) {\n        return SoapLegacyFacade.buildEmptyFault(transformSoapVersion(version), context);\n    }\n\n    public static String buildFault(Soap version, String code, String message, SoapContext context) {\n        return SoapLegacyFacade.buildFault(code, message, transformSoapVersion(version), context);\n    }\n\n    public static boolean isRpc(Binding binding) {\n        SOAPBinding soapBinding = WsdlUtils\n                .getExtensiblityElement(binding.getExtensibilityElements(), SOAPBinding.class);\n\n        if (soapBinding != null)\n            return RPC.equalsIgnoreCase(soapBinding.getStyle());\n\n        SOAP12Binding soap12Binding = WsdlUtils.getExtensiblityElement(binding.getExtensibilityElements(),\n                SOAP12Binding.class);\n\n        if (soap12Binding != null)\n            return RPC.equalsIgnoreCase(soap12Binding.getStyle());\n\n        return false;\n    }\n\n    public static String getSoapEndpoint(Port port) {\n        return WsdlUtils.getSoapEndpoint(port);\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    public Collection<Service> getServices() {\n        return (Collection<Service>) messageBuilder.getDefinition().getServices().values();\n    }\n\n    public boolean isOutputSoapEncoded(BindingOperation operation) {\n        return WsdlUtils.isOutputSoapEncoded(operation);\n    }\n\n    public boolean isInputSoapEncoded(BindingOperation operation) {\n        return WsdlUtils.isInputSoapEncoded(operation);\n    }\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SoapMessageBuilder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport com.ibm.wsdl.xml.WSDLReaderImpl;\nimport org.apache.log4j.Logger;\nimport org.apache.xmlbeans.SchemaGlobalElement;\nimport org.apache.xmlbeans.SchemaType;\nimport org.apache.xmlbeans.XmlCursor;\nimport org.apache.xmlbeans.XmlObject;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.annotation.ThreadSafe;\nimport org.reficio.ws.common.Wsdl11Writer;\nimport org.w3c.dom.Document;\nimport org.w3c.dom.Node;\n\nimport javax.wsdl.*;\nimport javax.wsdl.extensions.soap.SOAPBinding;\nimport javax.wsdl.extensions.soap12.SOAP12Binding;\nimport javax.wsdl.xml.WSDLReader;\nimport javax.xml.namespace.QName;\nimport java.io.File;\nimport java.io.StringWriter;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - rename to SoapBuilder (from SoapMessageBuilder)\n * - slight reorganization of the public API and arguments of the methods\n * - introduction of OperationWrapper and SoapContext classes\n * - addition of saveWSDL and createAndSave methods\n */\n\n/**\n * Builds SOAP requests according to WSDL/XSD definitions\n *\n * @author Ole.Matzura\n */\n@ThreadSafe\n@SuppressWarnings(\"unchecked\")\nclass SoapMessageBuilder {\n\n    private final static Logger log = Logger.getLogger(SoapMessageBuilder.class);\n\n    // should be thread safe it not modified after it has been initialized\n    private Definition definition;\n\n    // should be thread safe it not modified after it has been initialized\n    private SchemaDefinitionWrapper definitionWrapper;\n\n    // ----------------------------------------------------------\n    // Constructors and factory methods\n    // ----------------------------------------------------------\n    /**\n     * @param wsdlUrl url of the wsdl to import\n     * @throws WSDLException thrown in case of import errors\n     */\n    public SoapMessageBuilder(URL wsdlUrl) throws WSDLException {\n        WSDLReader reader = new WSDLReaderImpl();\n        reader.setFeature(\"javax.wsdl.verbose\", false);\n        this.definition = reader.readWSDL(wsdlUrl.toString());\n        this.definitionWrapper = new SchemaDefinitionWrapper(definition, wsdlUrl.toString());\n    }\n\n    /**\n     * Constructs a new SoapBuilder instance importing the wsdl from the specified wsdlUrl.\n     * If the import is successful it saves the wsdl/xsd files to the target folder giving\n     * the top-level wsdl the specified baseName and setting the documentBaseUri to the newly\n     * saved wsdl uri. If the import is not successful an exception will be thrown and files\n     * will not be saved. Method expects that the targetFolder already exists.\n     *\n     * @param wsdlUrl      url of the wsdl to import\n     * @param targetFolder folder in which all the files are be stored - folder has to exist, no subfolders are created,\n     * @param fileBaseName name of the top level file, without extension -> wsdl will be added by default\n     * @return instance of the soap-builder which documentBaseUri is set to the url of the locally saved wsdl\n     * @throws WSDLException thrown in case of import errors\n     */\n    public static SoapMessageBuilder createAndSave(URL wsdlUrl, File targetFolder, String fileBaseName) throws WSDLException {\n        SoapMessageBuilder soapBuilder = new SoapMessageBuilder(wsdlUrl);\n        URL url = soapBuilder.saveWsdl(fileBaseName, targetFolder);\n        soapBuilder.getDefinition().setDocumentBaseURI(url.toString());\n        return soapBuilder;\n    }\n\n    // ----------------------------------------------------------\n    // WSDLs and XSDs MARSHALLER\n    // ----------------------------------------------------------\n    private static void saveDefinition(String fileBaseName, Definition definition, File targetFolder) {\n        if (targetFolder.exists() == false || targetFolder.isDirectory() == false) {\n            throw new IllegalArgumentException(\"Target folder does not exist or is not a folder [\" + targetFolder.getPath() + \"]\");\n        }\n        Wsdl11Writer writer = new Wsdl11Writer(targetFolder);\n        writer.writeWSDL(fileBaseName, definition);\n    }\n\n    private static URL getSavedWsdlUrl(String fileBaseName, File targetFolder) {\n        File file = new File(targetFolder, fileBaseName + \".wsdl\");\n        try {\n            return file.toURI().toURL();\n        } catch (MalformedURLException e) {\n            throw new SoapBuilderException(\"Error saving url\", e);\n        }\n    }\n\n    /**\n     * Saves wsdl recursively fetching all referenced wsdls and schemas fixing their location tags\n     *\n     * @param fileBaseName name of the top level file, without extension -> wsdl will be added by default\n     * @param targetFolder folder in which all the files are stored - folder has to exist, no subfolders are created,\n     */\n    public URL saveWsdl(String fileBaseName, File targetFolder) {\n        saveDefinition(fileBaseName, definition, targetFolder);\n        return getSavedWsdlUrl(fileBaseName, targetFolder);\n    }\n\n    /**\n     * Saves wsdl recursively fetching all referenced wsdls and schemas fixing their location tags\n     *\n     * @param fileBaseName name of the top level file, without extension -> wsdl will be added by default\n     * @param wsdlUrl      url of the wsdl to save\n     * @param targetFolder folder in which all the files are be stored - folder has to exist, no subfolders are created,\n     * @throws WSDLException thrown in case of import errors\n     */\n    public static URL saveWsdl(String fileBaseName, URL wsdlUrl, File targetFolder) throws WSDLException {\n        WSDLReader reader = new WSDLReaderImpl();\n        reader.setFeature(\"javax.wsdl.verbose\", false);\n        Definition definition = reader.readWSDL(wsdlUrl.toString());\n        saveDefinition(fileBaseName, definition, targetFolder);\n        return getSavedWsdlUrl(fileBaseName, targetFolder);\n    }\n\n    // ----------------------------------------------------------\n    // EMPTY MESSAGE GENERATORS\n    // ----------------------------------------------------------\n    public String buildEmptyMessage(QName bindingQName, SoapContext context) {\n        return buildEmptyMessage(getSoapVersion(getBindingByName(bindingQName)), context);\n    }\n\n    public String buildEmptyMessage(Binding binding, SoapContext context) {\n        return buildEmptyMessage(getSoapVersion(binding), context);\n    }\n\n    public static String buildEmptyMessage(SoapVersion soapVersion, SoapContext context) {\n        SampleXmlUtil generator = new SampleXmlUtil(false, context);\n        return generator.createSample(soapVersion.getEnvelopeType());\n    }\n\n    // ----------------------------------------------------------\n    // FAULT MESSAGE GENERATORS\n    // ----------------------------------------------------------\n    public static String buildFault(String faultcode, String faultstring, SoapVersion soapVersion, SoapContext context) {\n        SampleXmlUtil generator = new SampleXmlUtil(false, context);\n        generator.setTypeComment(false);\n        generator.setIgnoreOptional(true);\n        String emptyResponse = buildEmptyFault(generator, soapVersion, context);\n        if (soapVersion == SoapVersion.Soap11) {\n            emptyResponse = XmlUtils.setXPathContent(emptyResponse, \"//faultcode\", faultcode);\n            emptyResponse = XmlUtils.setXPathContent(emptyResponse, \"//faultstring\", faultstring);\n        } else if (soapVersion == SoapVersion.Soap12) {\n            emptyResponse = XmlUtils.setXPathContent(emptyResponse, \"//soap:Value\", faultcode);\n            emptyResponse = XmlUtils.setXPathContent(emptyResponse, \"//soap:Text\", faultstring);\n            emptyResponse = XmlUtils.setXPathContent(emptyResponse, \"//soap:Text/@xml:lang\", \"en\");\n        }\n        return emptyResponse;\n    }\n\n    public String buildFault(String faultcode, String faultstring, QName bindingQName, SoapContext context) {\n        return buildFault(faultcode, faultstring, getSoapVersion(getBindingByName(bindingQName)), context);\n    }\n\n    public String buildFault(String faultcode, String faultstring, Binding binding, SoapContext context) {\n        return buildFault(faultcode, faultstring, getSoapVersion(binding), context);\n    }\n\n    public String buildEmptyFault(QName bindingQName, SoapContext context) {\n        return buildEmptyFault(getSoapVersion(getBindingByName(bindingQName)), context);\n    }\n\n    public String buildEmptyFault(Binding binding, SoapContext context) {\n        return buildEmptyFault(getSoapVersion(binding), context);\n    }\n\n    public static String buildEmptyFault(SoapVersion soapVersion, SoapContext context) {\n        SampleXmlUtil generator = new SampleXmlUtil(false, context);\n        String emptyResponse = buildEmptyFault(generator, soapVersion, context);\n        return emptyResponse;\n    }\n\n    // ----------------------------------------------------------\n    // INPUT MESSAGE GENERATORS\n    // ----------------------------------------------------------\n    public String buildSoapMessageFromInput(Binding binding, BindingOperation bindingOperation, SoapContext context) throws Exception {\n        SoapVersion soapVersion = getSoapVersion(binding);\n        boolean inputSoapEncoded = WsdlUtils.isInputSoapEncoded(bindingOperation);\n        SampleXmlUtil xmlGenerator = new SampleXmlUtil(inputSoapEncoded, context);\n\n        XmlObject object = XmlObject.Factory.newInstance();\n        XmlCursor cursor = object.newCursor();\n        cursor.toNextToken();\n        cursor.beginElement(soapVersion.getEnvelopeQName());\n\n        if (inputSoapEncoded) {\n            cursor.insertNamespace(\"xsi\", Constants.XSI_NS);\n            cursor.insertNamespace(\"xsd\", Constants.XSD_NS);\n        }\n\n        cursor.toFirstChild();\n        cursor.beginElement(soapVersion.getBodyQName());\n        cursor.toFirstChild();\n\n        if (WsdlUtils.isRpc(definition, bindingOperation)) {\n            buildRpcRequest(bindingOperation, soapVersion, cursor, xmlGenerator);\n        } else {\n            buildDocumentRequest(bindingOperation, cursor, xmlGenerator);\n        }\n\n        if (context.isAlwaysBuildHeaders()) {\n            BindingInput bindingInput = bindingOperation.getBindingInput();\n            if (bindingInput != null) {\n                List<?> extensibilityElements = bindingInput.getExtensibilityElements();\n                List<WsdlUtils.SoapHeader> soapHeaders = WsdlUtils.getSoapHeaders(extensibilityElements);\n                addHeaders(soapHeaders, soapVersion, cursor, xmlGenerator);\n            }\n        }\n        cursor.dispose();\n\n        try {\n            StringWriter writer = new StringWriter();\n            XmlUtils.serializePretty(object, writer);\n            return writer.toString();\n        } catch (Exception e) {\n            e.printStackTrace();\n            return object.xmlText();\n        }\n    }\n\n    // ----------------------------------------------------------\n    // OUTPUT MESSAGE GENERATORS\n    // ----------------------------------------------------------\n    public String buildSoapMessageFromOutput(Binding binding, BindingOperation bindingOperation, SoapContext context) throws Exception {\n        boolean inputSoapEncoded = WsdlUtils.isInputSoapEncoded(bindingOperation);\n        SampleXmlUtil xmlGenerator = new SampleXmlUtil(inputSoapEncoded, context);\n        SoapVersion soapVersion = getSoapVersion(binding);\n\n\n        XmlObject object = XmlObject.Factory.newInstance();\n        XmlCursor cursor = object.newCursor();\n        cursor.toNextToken();\n        cursor.beginElement(soapVersion.getEnvelopeQName());\n\n        if (inputSoapEncoded) {\n            cursor.insertNamespace(\"xsi\", Constants.XSI_NS);\n            cursor.insertNamespace(\"xsd\", Constants.XSD_NS);\n        }\n\n        cursor.toFirstChild();\n\n        cursor.beginElement(soapVersion.getBodyQName());\n        cursor.toFirstChild();\n\n        if (WsdlUtils.isRpc(definition, bindingOperation)) {\n            buildRpcResponse(bindingOperation, soapVersion, cursor, xmlGenerator);\n        } else {\n            buildDocumentResponse(bindingOperation, cursor, xmlGenerator);\n        }\n\n        if (context.isAlwaysBuildHeaders()) {\n            // bindingOutput will be null for one way operations,\n            // but then we shouldn't be here in the first place???\n            BindingOutput bindingOutput = bindingOperation.getBindingOutput();\n            if (bindingOutput != null) {\n                List<?> extensibilityElements = bindingOutput.getExtensibilityElements();\n                List<WsdlUtils.SoapHeader> soapHeaders = WsdlUtils.getSoapHeaders(extensibilityElements);\n                addHeaders(soapHeaders, soapVersion, cursor, xmlGenerator);\n            }\n        }\n        cursor.dispose();\n\n        try {\n            StringWriter writer = new StringWriter();\n            XmlUtils.serializePretty(object, writer);\n            return writer.toString();\n        } catch (Exception e) {\n            log.warn(\"Exception during message generation\", e);\n            return object.xmlText();\n        }\n    }\n\n    // ----------------------------------------------------------\n    // UTILS\n    // ----------------------------------------------------------\n    public Definition getDefinition() {\n        return definition;\n    }\n\n    public SchemaDefinitionWrapper getSchemaDefinitionWrapper() {\n        return definitionWrapper;\n    }\n\n    public BindingOperation getOperationByName(QName bindingName, String operationName, String operationInputName, String operationOutputName) {\n        Binding binding = getBindingByName(bindingName);\n        if (binding == null) {\n            return null;\n        }\n        BindingOperation operation = binding.getBindingOperation(operationName, operationInputName, operationOutputName);\n        if (operation == null) {\n            throw new SoapBuilderException(\"Operation not found\");\n        }\n        return operation;\n    }\n\n    public Binding getBindingByName(QName bindingName) {\n        Binding binding = this.definition.getBinding(bindingName);\n        if (binding == null) {\n            throw new SoapBuilderException(\"Binding not found\");\n        }\n        return binding;\n    }\n\n    public List<QName> getBindingNames() {\n        return new ArrayList<QName>(definition.getAllBindings().keySet());\n    }\n\n    public static SoapVersion getSoapVersion(Binding binding) {\n        List<?> list = binding.getExtensibilityElements();\n\n        SOAPBinding soapBinding = WsdlUtils.getExtensiblityElement(list, SOAPBinding.class);\n        if (soapBinding != null) {\n            if ((soapBinding.getTransportURI().startsWith(Constants.SOAP_HTTP_TRANSPORT) || soapBinding\n                    .getTransportURI().startsWith(Constants.SOAP_MICROSOFT_TCP))) {\n                return SoapVersion.Soap11;\n            }\n        }\n\n        SOAP12Binding soap12Binding = WsdlUtils.getExtensiblityElement(list, SOAP12Binding.class);\n        if (soap12Binding != null) {\n            if (soap12Binding.getTransportURI().startsWith(Constants.SOAP_HTTP_TRANSPORT)\n                    || soap12Binding.getTransportURI().startsWith(Constants.SOAP12_HTTP_BINDING_NS)\n                    || soap12Binding.getTransportURI().startsWith(Constants.SOAP_MICROSOFT_TCP)) {\n                return SoapVersion.Soap12;\n            }\n        }\n        throw new SoapBuilderException(\"SOAP binding not recognized\");\n    }\n\n    // --------------------------------------------------------------------------\n    // Internal methods - END OF PUBLIC API\n    // --------------------------------------------------------------------------\n    private void addHeaders(List<WsdlUtils.SoapHeader> headers, SoapVersion soapVersion, XmlCursor cursor, SampleXmlUtil xmlGenerator) throws Exception {\n        // reposition\n        cursor.toStartDoc();\n        cursor.toChild(soapVersion.getEnvelopeQName());\n        cursor.toFirstChild();\n\n        cursor.beginElement(soapVersion.getHeaderQName());\n        cursor.toFirstChild();\n\n        for (int i = 0; i < headers.size(); i++) {\n            WsdlUtils.SoapHeader header = headers.get(i);\n\n            Message message = definition.getMessage(header.getMessage());\n            if (message == null) {\n                log.error(\"Missing message for header: \" + header.getMessage());\n                continue;\n            }\n\n            Part part = message.getPart(header.getPart());\n\n            if (part != null)\n                createElementForPart(part, cursor, xmlGenerator);\n            else\n                log.error(\"Missing part for header; \" + header.getPart());\n        }\n    }\n\n    private void buildDocumentResponse(BindingOperation bindingOperation, XmlCursor cursor, SampleXmlUtil xmlGenerator)\n            throws Exception {\n        Part[] parts = WsdlUtils.getOutputParts(bindingOperation);\n\n        for (int i = 0; i < parts.length; i++) {\n            Part part = parts[i];\n\n            if (!WsdlUtils.isAttachmentOutputPart(part, bindingOperation)\n                    && (part.getElementName() != null || part.getTypeName() != null)) {\n                XmlCursor c = cursor.newCursor();\n                c.toLastChild();\n                createElementForPart(part, c, xmlGenerator);\n                c.dispose();\n            }\n        }\n    }\n\n    private void buildDocumentRequest(BindingOperation bindingOperation, XmlCursor cursor, SampleXmlUtil xmlGenerator)\n            throws Exception {\n        Part[] parts = WsdlUtils.getInputParts(bindingOperation);\n\n        for (int i = 0; i < parts.length; i++) {\n            Part part = parts[i];\n            if (!WsdlUtils.isAttachmentInputPart(part, bindingOperation)\n                    && (part.getElementName() != null || part.getTypeName() != null)) {\n                XmlCursor c = cursor.newCursor();\n                c.toLastChild();\n                createElementForPart(part, c, xmlGenerator);\n                c.dispose();\n            }\n        }\n    }\n\n    private void createElementForPart(Part part, XmlCursor cursor, SampleXmlUtil xmlGenerator) throws Exception {\n        QName elementName = part.getElementName();\n        QName typeName = part.getTypeName();\n\n        if (elementName != null) {\n            cursor.beginElement(elementName);\n\n            if (definitionWrapper.hasSchemaTypes()) {\n                SchemaGlobalElement elm = definitionWrapper.getSchemaTypeLoader().findElement(elementName);\n                if (elm != null) {\n                    cursor.toFirstChild();\n                    xmlGenerator.createSampleForType(elm.getType(), cursor);\n                } else\n                    log.error(\"Could not find element [\" + elementName + \"] specified in part [\" + part.getName() + \"]\");\n            }\n\n            cursor.toParent();\n        } else {\n            // cursor.beginElement( new QName(\n            // wsdlContext.getWsdlDefinition().getTargetNamespace(), part.getName()\n            // ));\n            cursor.beginElement(part.getName());\n            if (typeName != null && definitionWrapper.hasSchemaTypes()) {\n                SchemaType type = definitionWrapper.getSchemaTypeLoader().findType(typeName);\n\n                if (type != null) {\n                    cursor.toFirstChild();\n                    xmlGenerator.createSampleForType(type, cursor);\n                } else\n                    log.error(\"Could not find type [\" + typeName + \"] specified in part [\" + part.getName() + \"]\");\n            }\n\n            cursor.toParent();\n        }\n    }\n\n    private void buildRpcRequest(BindingOperation bindingOperation, SoapVersion soapVersion, XmlCursor cursor, SampleXmlUtil xmlGenerator)\n            throws Exception {\n        // rpc requests use the operation name as root element\n        String ns = WsdlUtils.getSoapBodyNamespace(bindingOperation.getBindingInput().getExtensibilityElements());\n        if (ns == null) {\n            ns = WsdlUtils.getTargetNamespace(definition);\n            log.warn(\"missing namespace on soapbind:body for RPC request, using targetNamespace instead (BP violation)\");\n        }\n\n        cursor.beginElement(new QName(ns, bindingOperation.getName()));\n        // TODO\n        if (xmlGenerator.isSoapEnc())\n            cursor.insertAttributeWithValue(new QName(soapVersion.getEnvelopeNamespace(),\n                    \"encodingStyle\"), soapVersion.getEncodingNamespace());\n\n        Part[] inputParts = WsdlUtils.getInputParts(bindingOperation);\n        for (int i = 0; i < inputParts.length; i++) {\n            Part part = inputParts[i];\n\n            if (WsdlUtils.isAttachmentInputPart(part, bindingOperation)) {\n                // TODO - generation of attachment flag could be externalized\n                // if (iface.getSettings().getBoolean(WsdlSettings.ATTACHMENT_PARTS)) {\n                XmlCursor c = cursor.newCursor();\n                c.toLastChild();\n                c.beginElement(part.getName());\n                c.insertAttributeWithValue(\"href\", part.getName() + \"Attachment\");\n                c.dispose();\n                // }\n            } else {\n                if (definitionWrapper.hasSchemaTypes()) {\n                    QName typeName = part.getTypeName();\n                    if (typeName != null) {\n                        // TODO - Don't know whether will work\n                        // SchemaType type = wsdlContext.getInterfaceDefinition().findType(typeName);\n                        SchemaType type = definitionWrapper.findType(typeName);\n\n                        if (type != null) {\n                            XmlCursor c = cursor.newCursor();\n                            c.toLastChild();\n                            c.insertElement(part.getName());\n                            c.toPrevToken();\n\n                            xmlGenerator.createSampleForType(type, c);\n                            c.dispose();\n                        } else\n                            log.warn(\"Failed to find type [\" + typeName + \"]\");\n                    } else {\n                        SchemaGlobalElement element = definitionWrapper.getSchemaTypeLoader().findElement(part.getElementName());\n                        if (element != null) {\n                            XmlCursor c = cursor.newCursor();\n                            c.toLastChild();\n                            c.insertElement(element.getName());\n                            c.toPrevToken();\n\n                            xmlGenerator.createSampleForType(element.getType(), c);\n                            c.dispose();\n                        } else\n                            log.warn(\"Failed to find element [\" + part.getElementName() + \"]\");\n                    }\n                }\n            }\n        }\n    }\n\n    private void buildRpcResponse(BindingOperation bindingOperation, SoapVersion soapVersion, XmlCursor cursor, SampleXmlUtil xmlGenerator)\n            throws Exception {\n        // rpc requests use the operation name as root element\n        BindingOutput bindingOutput = bindingOperation.getBindingOutput();\n        String ns = bindingOutput == null ? null : WsdlUtils.getSoapBodyNamespace(bindingOutput\n                .getExtensibilityElements());\n\n        if (ns == null) {\n            ns = WsdlUtils.getTargetNamespace(definition);\n            log.warn(\"missing namespace on soapbind:body for RPC response, using targetNamespace instead (BP violation)\");\n        }\n\n        cursor.beginElement(new QName(ns, bindingOperation.getName() + \"Response\"));\n        if (xmlGenerator.isSoapEnc())\n            cursor.insertAttributeWithValue(new QName(soapVersion.getEnvelopeNamespace(),\n                    \"encodingStyle\"), soapVersion.getEncodingNamespace());\n\n        Part[] inputParts = WsdlUtils.getOutputParts(bindingOperation);\n        for (int i = 0; i < inputParts.length; i++) {\n            Part part = inputParts[i];\n            if (WsdlUtils.isAttachmentOutputPart(part, bindingOperation)) {\n                // if( iface.getSettings().getBoolean( WsdlSettings.ATTACHMENT_PARTS ) )\n                {\n                    XmlCursor c = cursor.newCursor();\n                    c.toLastChild();\n                    c.beginElement(part.getName());\n                    c.insertAttributeWithValue(\"href\", part.getName() + \"Attachment\");\n                    c.dispose();\n                }\n            } else {\n                if (definitionWrapper.hasSchemaTypes()) {\n                    QName typeName = part.getTypeName();\n                    if (typeName != null) {\n                        SchemaType type = definitionWrapper.findType(typeName);\n\n                        if (type != null) {\n                            XmlCursor c = cursor.newCursor();\n                            c.toLastChild();\n                            c.insertElement(part.getName());\n                            c.toPrevToken();\n\n                            xmlGenerator.createSampleForType(type, c);\n                            c.dispose();\n                        } else\n                            log.warn(\"Failed to find type [\" + typeName + \"]\");\n                    } else {\n                        SchemaGlobalElement element = definitionWrapper.getSchemaTypeLoader().findElement(part.getElementName());\n                        if (element != null) {\n                            XmlCursor c = cursor.newCursor();\n                            c.toLastChild();\n                            c.insertElement(element.getName());\n                            c.toPrevToken();\n\n                            xmlGenerator.createSampleForType(element.getType(), c);\n                            c.dispose();\n                        } else\n                            log.warn(\"Failed to find element [\" + part.getElementName() + \"]\");\n                    }\n                }\n            }\n        }\n    }\n\n    private static String buildEmptyFault(SampleXmlUtil generator, SoapVersion soapVersion, SoapContext context) {\n        String emptyResponse = buildEmptyMessage(soapVersion, context);\n        try {\n            XmlObject xmlObject = XmlUtils.createXmlObject(emptyResponse);\n            XmlCursor cursor = xmlObject.newCursor();\n\n            if (cursor.toChild(soapVersion.getEnvelopeQName()) && cursor.toChild(soapVersion.getBodyQName())) {\n                SchemaType faultType = soapVersion.getFaultType();\n                Node bodyNode = cursor.getDomNode();\n                Document dom = XmlUtils.parseXml(generator.createSample(faultType));\n                bodyNode.appendChild(bodyNode.getOwnerDocument().importNode(dom.getDocumentElement(), true));\n            }\n\n            cursor.dispose();\n            emptyResponse = xmlObject.toString();\n        } catch (Exception e) {\n            throw new SoapBuilderException(e);\n        }\n        return emptyResponse;\n    }\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SoapVersion.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.xmlbeans.*;\n\nimport javax.xml.namespace.QName;\nimport java.io.IOException;\nimport java.util.List;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\n/**\n * Public behaviour for a SOAP Version\n *\n * @author ole.matzura\n */\ninterface SoapVersion {\n    public static final SoapVersion11 Soap11 = SoapVersion11.instance;\n    public static final SoapVersion12 Soap12 = SoapVersion12.instance;\n\n    public QName getEnvelopeQName();\n\n    public QName getBodyQName();\n\n    public QName getHeaderQName();\n\n    public void validateSoapEnvelope(String soapMessage, List<XmlError> errors);\n\n    public String getContentTypeHttpHeader(String encoding, String soapAction);\n\n    public String getEnvelopeNamespace();\n\n    public String getFaultDetailNamespace();\n\n    public String getEncodingNamespace();\n\n    public XmlObject getSoapEncodingSchema() throws XmlException, IOException;\n\n    public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException;\n\n    /**\n     * Checks if the specified validation error should be ignored for a message\n     * with this SOAP version. (The SOAP-spec may allow some constructions not\n     * allowed by the corresponding XML-Schema)\n     */\n\n    public boolean shouldIgnore(XmlValidationError xmlError);\n\n    public String getContentType();\n\n    public SchemaType getEnvelopeType();\n\n    public SchemaType getFaultType();\n\n    public String getName();\n\n    /**\n     * Utilities\n     *\n     * @author ole.matzura\n     */\n\n    public static class Utils {\n        public static SoapVersion getSoapVersionForContentType(String contentType, SoapVersion def) {\n            if (StringUtils.isBlank(contentType))\n                return def;\n\n            SoapVersion soapVersion = contentType.startsWith(SoapVersion.Soap11.getContentType()) ? SoapVersion.Soap11\n                    : null;\n            soapVersion = soapVersion == null && contentType.startsWith(SoapVersion.Soap12.getContentType()) ? SoapVersion.Soap12\n                    : soapVersion;\n\n            return soapVersion == null ? def : soapVersion;\n        }\n    }\n\n    public String getSoapActionHeader(String soapAction);\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SoapVersion11.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.xmlbeans.*;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.xmlsoap.schemas.soap.envelope.EnvelopeDocument;\n\nimport javax.xml.namespace.QName;\nimport java.io.IOException;\nimport java.net.URL;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - changing the mechanism using which external resources are loaded\n */\n\n/**\n * SoapVersion for SOAP 1.1\n *\n * @author ole.matzura\n */\nclass SoapVersion11 extends AbstractSoapVersion {\n    private final static QName envelopeQName = new QName(Constants.SOAP11_ENVELOPE_NS, \"Envelope\");\n    private final static QName bodyQName = new QName(Constants.SOAP11_ENVELOPE_NS, \"Body\");\n    private final static QName faultQName = new QName(Constants.SOAP11_ENVELOPE_NS, \"Fault\");\n    private final static QName headerQName = new QName(Constants.SOAP11_ENVELOPE_NS, \"Header\");\n\n    SchemaTypeLoader soapSchema;\n    SchemaType soapEnvelopeType;\n    private XmlObject soapSchemaXml;\n    private XmlObject soapEncodingXml;\n    private SchemaType soapFaultType;\n\n    public final static SoapVersion11 instance = new SoapVersion11();\n\n    private SoapVersion11() {\n        try {\n            XmlOptions options = new XmlOptions();\n            options.setCompileNoValidation();\n            options.setCompileNoPvrRule();\n            options.setCompileDownloadUrls();\n            options.setCompileNoUpaRule();\n            options.setValidateTreatLaxAsSkip();\n\n            URL soapSchemaXmlResource = ResourceUtils.getResourceWithAbsolutePackagePath(getClass(),\n                    \"/xsds/\", \"soapEnvelope.xsd\");\n            soapSchemaXml = XmlUtils.createXmlObject(soapSchemaXmlResource, options);\n            soapSchema = XmlBeans.loadXsd(new XmlObject[]{soapSchemaXml});\n\n            soapEnvelopeType = soapSchema.findDocumentType(envelopeQName);\n            soapFaultType = soapSchema.findDocumentType(faultQName);\n\n            URL soapEncodingXmlResource = ResourceUtils.getResourceWithAbsolutePackagePath(getClass(),\n                    \"/xsds/\", \"soapEncoding.xsd\");\n            soapEncodingXml = XmlUtils.createXmlObject(soapEncodingXmlResource, options);\n\n        } catch (XmlException ex) {\n            throw new SoapBuilderException(ex);\n        }\n    }\n\n    public SchemaType getEnvelopeType() {\n        return EnvelopeDocument.type;\n    }\n\n    public String getEnvelopeNamespace() {\n        return Constants.SOAP11_ENVELOPE_NS;\n    }\n\n    public String getEncodingNamespace() {\n        return Constants.SOAP_ENCODING_NS;\n    }\n\n    public XmlObject getSoapEncodingSchema() throws XmlException, IOException {\n        return soapEncodingXml;\n    }\n\n    public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException {\n        return soapSchemaXml;\n    }\n\n    public String toString() {\n        return \"SOAP 1.1\";\n    }\n\n    public String getContentTypeHttpHeader(String encoding, String soapAction) {\n        if (encoding == null || encoding.trim().length() == 0)\n            return getContentType();\n        else\n            return getContentType() + \";charset=\" + encoding;\n    }\n\n    public String getSoapActionHeader(String soapAction) {\n        if (soapAction == null || soapAction.length() == 0) {\n            soapAction = \"\\\"\\\"\";\n        } else {\n            soapAction = \"\\\"\" + soapAction + \"\\\"\";\n        }\n\n        return soapAction;\n    }\n\n    public String getContentType() {\n        return \"text/xml\";\n    }\n\n    public QName getBodyQName() {\n        return bodyQName;\n    }\n\n    public QName getEnvelopeQName() {\n        return envelopeQName;\n    }\n\n    public QName getHeaderQName() {\n        return headerQName;\n    }\n\n    protected SchemaTypeLoader getSoapEnvelopeSchemaLoader() {\n        return soapSchema;\n    }\n\n    public SchemaType getFaultType() {\n        return soapFaultType;\n    }\n\n    public String getName() {\n        return \"SOAP 1.1\";\n    }\n\n    public String getFaultDetailNamespace() {\n        return \"\";\n    }\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/SoapVersion12.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.xmlbeans.*;\nimport org.reficio.ws.SoapBuilderException;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.w3.x2003.x05.soapEnvelope.EnvelopeDocument;\nimport org.w3.x2003.x05.soapEnvelope.FaultDocument;\n\nimport javax.xml.namespace.QName;\nimport java.io.IOException;\nimport java.net.URL;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - changing the mechanism using which external resources are loaded\n */\n\n/**\n * SoapVersion for SOAP 1.2\n *\n * @author ole.matzura\n */\nclass SoapVersion12 extends AbstractSoapVersion {\n\n    private final static QName envelopeQName = new QName(Constants.SOAP12_ENVELOPE_NS, \"Envelope\");\n    private final static QName bodyQName = new QName(Constants.SOAP12_ENVELOPE_NS, \"Body\");\n    private final static QName faultQName = new QName(Constants.SOAP11_ENVELOPE_NS, \"Fault\");\n    private final static QName headerQName = new QName(Constants.SOAP12_ENVELOPE_NS, \"Header\");\n    public final static SoapVersion12 instance = new SoapVersion12();\n\n    private SchemaTypeLoader soapSchema;\n    private XmlObject soapSchemaXml;\n    private XmlObject soapEncodingXml;\n\n    private SoapVersion12() {\n\n        try {\n            URL soapSchemaXmlResource = ResourceUtils.getResourceWithAbsolutePackagePath(getClass(),\n                    \"/xsds/\", \"soapEnvelope12.xsd\");\n            soapSchemaXml = XmlUtils.createXmlObject(soapSchemaXmlResource);\n            soapSchema = XmlBeans.loadXsd(new XmlObject[]{soapSchemaXml});\n\n            URL soapEncodingXmlResource = ResourceUtils.getResourceWithAbsolutePackagePath(getClass(),\n                    \"/xsds/\", \"soapEncoding12.xsd\");\n            soapEncodingXml = XmlUtils.createXmlObject(soapEncodingXmlResource);\n        } catch (XmlException e) {\n            throw new SoapBuilderException(e);\n        }\n    }\n\n    public String getEncodingNamespace() {\n        return \"http://www.w3.org/2003/05/soap-encoding\";\n    }\n\n    public XmlObject getSoapEncodingSchema() throws XmlException, IOException {\n        return soapEncodingXml;\n    }\n\n    public XmlObject getSoapEnvelopeSchema() throws XmlException, IOException {\n        return soapSchemaXml;\n    }\n\n    public String getEnvelopeNamespace() {\n        return Constants.SOAP12_ENVELOPE_NS;\n    }\n\n    public SchemaType getEnvelopeType() {\n        return EnvelopeDocument.type;\n    }\n\n    public String toString() {\n        return \"SOAP 1.2\";\n    }\n\n    public static String quote(String str) {\n        if (str == null)\n            return str;\n\n        if (str.length() < 2 || !str.startsWith(\"\\\"\") || !str.endsWith(\"\\\"\"))\n            str = \"\\\"\" + str + \"\\\"\";\n\n        return str;\n    }\n\n    public String getContentTypeHttpHeader(String encoding, String soapAction) {\n        String result = getContentType();\n\n        if (encoding != null && encoding.trim().length() > 0)\n            result += \";charset=\" + encoding;\n\n        if (StringUtils.isNotBlank(soapAction))\n            result += \";action=\" + quote(soapAction);\n\n        return result;\n    }\n\n    public String getSoapActionHeader(String soapAction) {\n        // SOAP 1.2 has this in the contenttype\n        return null;\n    }\n\n    public String getContentType() {\n        return \"application/soap+xml\";\n    }\n\n    public QName getBodyQName() {\n        return bodyQName;\n    }\n\n    public QName getEnvelopeQName() {\n        return envelopeQName;\n    }\n\n    public QName getHeaderQName() {\n        return headerQName;\n    }\n\n    protected SchemaTypeLoader getSoapEnvelopeSchemaLoader() {\n        return soapSchema;\n    }\n\n    public static QName getFaultQName() {\n        return faultQName;\n    }\n\n    public SchemaType getFaultType() {\n        return FaultDocument.type;\n    }\n\n    public String getName() {\n        return \"SOAP 1.2\";\n    }\n\n    public String getFaultDetailNamespace() {\n        return getEnvelopeNamespace();\n    }\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/UrlSchemaLoader.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.xmlbeans.XmlObject;\nimport org.apache.xmlbeans.XmlOptions;\nimport org.reficio.ws.SoapBuilderException;\n\nimport java.net.URL;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n * <p/>\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\nclass UrlSchemaLoader implements SchemaLoader, DefinitionLoader {\n    private String baseURI;\n\n    public UrlSchemaLoader(String baseURI) {\n        this.baseURI = baseURI;\n    }\n\n    public XmlObject loadXmlObject(String wsdlUrl, XmlOptions options) throws Exception {\n        return XmlUtils.createXmlObject(new URL(wsdlUrl), options);\n    }\n\n    public String getBaseURI() {\n        return baseURI;\n    }\n\n    public void setProgressInfo(String info) {\n        throw new SoapBuilderException(\"Not Implemented\");\n    }\n\n    public boolean isAborted() {\n        throw new SoapBuilderException(\"Not Implemented\");\n    }\n\n    public boolean abort() {\n        throw new SoapBuilderException(\"Not Implemented\");\n    }\n\n    public void setNewBaseURI(String uri) {\n        throw new SoapBuilderException(\"Not Implemented\");\n    }\n\n    public String getFirstNewURI() {\n        throw new SoapBuilderException(\"Not Implemented\");\n    }\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/WsdlContext.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.xmlbeans.SchemaTypeLoader;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.Definition;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass WsdlContext {\n\n    private final SoapMessageBuilder builder;\n    private final Binding binding;\n\n    WsdlContext(SoapMessageBuilder builder, Binding binding) {\n        this.builder = builder;\n        this.binding = binding;\n    }\n\n    Definition getDefinition() {\n        return builder.getDefinition();\n    }\n\n    SoapVersion getSoapVersion() {\n        return SoapMessageBuilder.getSoapVersion(binding);\n    }\n\n    boolean hasSchemaTypes() {\n        return builder.getSchemaDefinitionWrapper().hasSchemaTypes();\n    }\n\n    SchemaTypeLoader getSchemaTypeLoader() {\n        return builder.getSchemaDefinitionWrapper().getSchemaTypeLoader();\n    }\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/WsdlSettings.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\n/**\n * WSDL related settings constants\n *\n * @author Emil.Breding\n */\ninterface WsdlSettings {\n    public final static String CACHE_WSDLS = WsdlSettings.class.getSimpleName() + \"@\" + \"cache-wsdls\";\n\n    public final static String XML_GENERATION_TYPE_EXAMPLE_VALUE = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"xml-generation-type-example-value\";\n\n    public final static String XML_GENERATION_TYPE_COMMENT_TYPE = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"xml-generation-type-comment-type\";\n\n    public final static String XML_GENERATION_ALWAYS_INCLUDE_OPTIONAL_ELEMENTS = WsdlSettings.class.getSimpleName()\n            + \"@\" + \"xml-generation-always-include-optional-elements\";\n\n    public final static String PRETTY_PRINT_RESPONSE_MESSAGES = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"pretty-print-response-xml\";\n\n    public final static String ATTACHMENT_PARTS = WsdlSettings.class.getSimpleName() + \"@\" + \"attachment-parts\";\n\n    public final static String ALLOW_INCORRECT_CONTENTTYPE = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"allow-incorrect-contenttype\";\n\n    public final static String ENABLE_MTOM = WsdlSettings.class.getSimpleName() + \"@\" + \"enable-mtom\";\n\n    public static final String SCHEMA_DIRECTORY = WsdlSettings.class.getSimpleName() + \"@\" + \"schema-directory\";\n\n    public final static String NAME_WITH_BINDING = WsdlSettings.class.getSimpleName() + \"@\" + \"name-with-binding\";\n\n    public final static String EXCLUDED_TYPES = WsdlSettings.class.getSimpleName() + \"@\" + \"excluded-types\";\n\n    public final static String STRICT_SCHEMA_TYPES = WsdlSettings.class.getSimpleName() + \"@\" + \"strict-schema-types\";\n\n    public final static String COMPRESSION_LIMIT = WsdlSettings.class.getSimpleName() + \"@\" + \"compression-limit\";\n\n    public final static String PRETTY_PRINT_PROJECT_FILES = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"pretty-print-project-files\";\n\n    public static final String XML_GENERATION_SKIP_COMMENTS = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"xml-generation-skip-comments\";\n\n    public final static String TRIM_WSDL = WsdlSettings.class.getSimpleName() + \"@\"\n            + \"trim-wsdl\";\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/WsdlUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.log4j.Logger;\n\nimport javax.wsdl.*;\nimport javax.wsdl.extensions.ExtensibilityElement;\nimport javax.wsdl.extensions.mime.MIMEContent;\nimport javax.wsdl.extensions.mime.MIMEMultipartRelated;\nimport javax.wsdl.extensions.mime.MIMEPart;\nimport javax.wsdl.extensions.soap.*;\nimport javax.wsdl.extensions.soap12.*;\nimport javax.xml.XMLConstants;\nimport javax.xml.namespace.QName;\nimport java.io.UnsupportedEncodingException;\nimport java.net.URLDecoder;\nimport java.util.ArrayList;\nimport java.util.Iterator;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n */\n\n/**\n * Wsdl-related tools\n *\n * @author Ole.Matzura\n */\n@SuppressWarnings(\"unchecked\")\nclass WsdlUtils {\n    private final static Logger log = Logger.getLogger(WsdlUtils.class);\n\n    public static <T extends ExtensibilityElement> T getExtensiblityElement(List<?> list, Class<T> clazz) {\n        List<T> elements = getExtensiblityElements(list, clazz);\n        return elements.isEmpty() ? null : elements.get(0);\n    }\n\n    public static <T extends ExtensibilityElement> List<T> getExtensiblityElements(List list, Class<T> clazz) {\n        List<T> result = new ArrayList<T>();\n\n        for (Iterator<T> i = list.iterator(); i.hasNext(); ) {\n            T elm = i.next();\n            if (clazz.isAssignableFrom(elm.getClass())) {\n                result.add(elm);\n            }\n        }\n\n        return result;\n    }\n\n\n    public static Binding findBindingForOperation(Definition definition, BindingOperation bindingOperation) {\n        Map services = definition.getAllServices();\n        Iterator<Service> s = services.values().iterator();\n\n        while (s.hasNext()) {\n            Map ports = s.next().getPorts();\n            Iterator<Port> p = ports.values().iterator();\n            while (p.hasNext()) {\n                Binding binding = p.next().getBinding();\n                List bindingOperations = binding.getBindingOperations();\n                for (Iterator iter = bindingOperations.iterator(); iter.hasNext(); ) {\n                    BindingOperation op = (BindingOperation) iter.next();\n                    if (op.getName().equals(bindingOperation.getName()))\n                        return binding;\n                }\n            }\n        }\n\n        Map bindings = definition.getAllBindings();\n        Iterator<QName> names = bindings.keySet().iterator();\n        while (names.hasNext()) {\n            Binding binding = definition.getBinding(names.next());\n            List bindingOperations = binding.getBindingOperations();\n            for (Iterator iter = bindingOperations.iterator(); iter.hasNext(); ) {\n                BindingOperation op = (BindingOperation) iter.next();\n                if (op.getName().equals(bindingOperation.getName()))\n                    return binding;\n            }\n        }\n\n        return null;\n    }\n\n    public static boolean isInputSoapEncoded(BindingOperation bindingOperation) {\n        if (bindingOperation == null)\n            return false;\n\n        BindingInput bindingInput = bindingOperation.getBindingInput();\n        if (bindingInput == null)\n            return false;\n\n        SOAPBody soapBody = WsdlUtils.getExtensiblityElement(bindingInput.getExtensibilityElements(), SOAPBody.class);\n\n        if (soapBody != null) {\n            return soapBody.getUse() != null\n                    && soapBody.getUse().equalsIgnoreCase(\"encoded\")\n                    && (soapBody.getEncodingStyles() == null || soapBody.getEncodingStyles().contains(\n                    \"http://schemas.xmlsoap.org/soap/encoding/\"));\n        }\n\n        SOAP12Body soap12Body = WsdlUtils.getExtensiblityElement(bindingInput.getExtensibilityElements(),\n                SOAP12Body.class);\n\n        if (soap12Body != null) {\n            return soap12Body.getUse() != null\n                    && soap12Body.getUse().equalsIgnoreCase(\"encoded\")\n                    && (soap12Body.getEncodingStyle() == null || soap12Body.getEncodingStyle().equals(\n                    \"http://www.w3.org/2001/12/soap-encoding\"));\n        }\n\n        return false;\n    }\n\n    public static boolean isOutputSoapEncoded(BindingOperation bindingOperation) {\n        if (bindingOperation == null)\n            return false;\n\n        BindingOutput bindingOutput = bindingOperation.getBindingOutput();\n        if (bindingOutput == null)\n            return false;\n\n        SOAPBody soapBody = WsdlUtils.getExtensiblityElement(bindingOutput.getExtensibilityElements(), SOAPBody.class);\n\n        if (soapBody != null) {\n            return soapBody.getUse() != null\n                    && soapBody.getUse().equalsIgnoreCase(\"encoded\")\n                    && (soapBody.getEncodingStyles() == null || soapBody.getEncodingStyles().contains(\n                    \"http://schemas.xmlsoap.org/soap/encoding/\"));\n        }\n\n        SOAP12Body soap12Body = WsdlUtils.getExtensiblityElement(bindingOutput.getExtensibilityElements(),\n                SOAP12Body.class);\n\n        if (soap12Body != null) {\n            return soap12Body.getUse() != null\n                    && soap12Body.getUse().equalsIgnoreCase(\"encoded\")\n                    && (soap12Body.getEncodingStyle() == null || soap12Body.getEncodingStyle().equals(\n                    \"http://schemas.xmlsoap.org/soap/encoding/\"));\n        }\n\n        return false;\n    }\n\n    public static boolean isRpc(Definition definition, BindingOperation bindingOperation) {\n        SOAPOperation soapOperation = WsdlUtils.getExtensiblityElement(bindingOperation.getExtensibilityElements(),\n                SOAPOperation.class);\n\n        if (soapOperation != null && soapOperation.getStyle() != null)\n            return soapOperation.getStyle().equalsIgnoreCase(\"rpc\");\n\n        SOAP12Operation soap12Operation = WsdlUtils.getExtensiblityElement(bindingOperation.getExtensibilityElements(),\n                SOAP12Operation.class);\n\n        if (soap12Operation != null && soap12Operation.getStyle() != null)\n            return soap12Operation.getStyle().equalsIgnoreCase(\"rpc\");\n\n        Binding binding = findBindingForOperation(definition, bindingOperation);\n        if (binding == null) {\n            log.error(\"Failed to find binding for operation [\" + bindingOperation.getName() + \"] in definition [\"\n                    + definition.getDocumentBaseURI() + \"]\");\n            return false;\n        }\n\n        return isRpc(binding);\n    }\n\n    public static boolean isRpc(Binding binding) {\n        SOAPBinding soapBinding = WsdlUtils\n                .getExtensiblityElement(binding.getExtensibilityElements(), SOAPBinding.class);\n\n        if (soapBinding != null)\n            return \"rpc\".equalsIgnoreCase(soapBinding.getStyle());\n\n        SOAP12Binding soap12Binding = WsdlUtils.getExtensiblityElement(binding.getExtensibilityElements(),\n                SOAP12Binding.class);\n\n        if (soap12Binding != null)\n            return \"rpc\".equalsIgnoreCase(soap12Binding.getStyle());\n\n        return false;\n    }\n\n    public static boolean isOneWay(BindingOperation operation) {\n        return operation.getOperation().getStyle().equals(OperationType.ONE_WAY);\n    }\n\n    /**\n     * Returns a list of parts for the specifed operation, either as specified in\n     * body or all\n     */\n\n    public static Part[] getInputParts(BindingOperation operation) {\n        List<Part> result = new ArrayList<Part>();\n        Input input = operation.getOperation().getInput();\n        if (input == null || operation.getBindingInput() == null)\n            return new Part[0];\n\n        Message msg = input.getMessage();\n\n        if (msg != null) {\n            SOAPBody soapBody = WsdlUtils.getExtensiblityElement(operation.getBindingInput().getExtensibilityElements(),\n                    SOAPBody.class);\n\n            if (soapBody == null || soapBody.getParts() == null) {\n                SOAP12Body soap12Body = WsdlUtils.getExtensiblityElement(operation.getBindingInput()\n                        .getExtensibilityElements(), SOAP12Body.class);\n\n                if (soap12Body == null || soap12Body.getParts() == null) {\n                    if (msg != null)\n                        result.addAll(msg.getOrderedParts(null));\n                } else {\n                    Iterator i = soap12Body.getParts().iterator();\n                    while (i.hasNext()) {\n                        String partName = (String) i.next();\n                        Part part = msg.getPart(partName);\n\n                        result.add(part);\n                    }\n                }\n            } else {\n                Iterator i = soapBody.getParts().iterator();\n                while (i.hasNext()) {\n                    String partName = (String) i.next();\n                    Part part = msg.getPart(partName);\n\n                    result.add(part);\n                }\n            }\n        } else {\n        }\n\n        return result.toArray(new Part[result.size()]);\n    }\n\n    public static boolean isAttachmentInputPart(Part part, BindingOperation operation) {\n        return getInputMultipartContent(part, operation).length > 0;\n    }\n\n    public static boolean isAttachmentOutputPart(Part part, BindingOperation operation) {\n        return getOutputMultipartContent(part, operation).length > 0;\n    }\n\n    public static MIMEContent[] getOutputMultipartContent(Part part, BindingOperation operation) {\n        BindingOutput output = operation.getBindingOutput();\n        if (output == null)\n            return new MIMEContent[0];\n\n        MIMEMultipartRelated multipartOutput = WsdlUtils.getExtensiblityElement(output.getExtensibilityElements(),\n                MIMEMultipartRelated.class);\n\n        return getContentParts(part, multipartOutput);\n    }\n\n    public static MIMEContent[] getInputMultipartContent(Part part, BindingOperation operation) {\n        BindingInput bindingInput = operation.getBindingInput();\n        if (bindingInput == null)\n            return new MIMEContent[0];\n\n        MIMEMultipartRelated multipartInput = WsdlUtils.getExtensiblityElement(bindingInput.getExtensibilityElements(),\n                MIMEMultipartRelated.class);\n\n        return getContentParts(part, multipartInput);\n    }\n\n    public static MIMEContent[] getContentParts(Part part, MIMEMultipartRelated multipart) {\n        List<MIMEContent> result = new ArrayList<MIMEContent>();\n\n        if (multipart != null) {\n            List<MIMEPart> parts = multipart.getMIMEParts();\n\n            for (int c = 0; c < parts.size(); c++) {\n                List<MIMEContent> contentParts = WsdlUtils.getExtensiblityElements(parts.get(c)\n                        .getExtensibilityElements(), MIMEContent.class);\n\n                for (MIMEContent content : contentParts) {\n                    if (content.getPart().equals(part.getName()))\n                        result.add(content);\n                }\n            }\n        }\n\n        return result.toArray(new MIMEContent[result.size()]);\n    }\n\n    public static Part[] getFaultParts(BindingOperation bindingOperation, String faultName) throws Exception {\n        List<Part> result = new ArrayList<Part>();\n\n        BindingFault bindingFault = bindingOperation.getBindingFault(faultName);\n        SOAPFault soapFault = WsdlUtils.getExtensiblityElement(bindingFault.getExtensibilityElements(), SOAPFault.class);\n\n        Operation operation = bindingOperation.getOperation();\n        if (soapFault != null && soapFault.getName() != null) {\n            Fault fault = operation.getFault(soapFault.getName());\n            if (fault == null)\n                throw new Exception(\"Missing Fault [\" + soapFault.getName() + \"] in operation [\" + operation.getName()\n                        + \"]\");\n            result.addAll(fault.getMessage().getOrderedParts(null));\n        } else {\n            SOAP12Fault soap12Fault = WsdlUtils.getExtensiblityElement(bindingFault.getExtensibilityElements(),\n                    SOAP12Fault.class);\n\n            if (soap12Fault != null && soap12Fault.getName() != null) {\n                Fault fault = operation.getFault(soap12Fault.getName());\n                if (fault != null && fault.getMessage() != null)\n                    result.addAll(fault.getMessage().getOrderedParts(null));\n            } else {\n                Fault fault = operation.getFault(faultName);\n                if (fault != null && fault.getMessage() != null)\n                    result.addAll(fault.getMessage().getOrderedParts(null));\n            }\n        }\n\n        return result.toArray(new Part[result.size()]);\n    }\n\n    public static Part[] getOutputParts(BindingOperation operation) {\n        BindingOutput bindingOutput = operation.getBindingOutput();\n        if (bindingOutput == null)\n            return new Part[0];\n\n        List<Part> result = new ArrayList<Part>();\n        Output output = operation.getOperation().getOutput();\n        if (output == null)\n            return new Part[0];\n\n        Message msg = output.getMessage();\n        if (msg != null) {\n            SOAPBody soapBody = WsdlUtils\n                    .getExtensiblityElement(bindingOutput.getExtensibilityElements(), SOAPBody.class);\n\n            if (soapBody == null || soapBody.getParts() == null) {\n                SOAP12Body soap12Body = WsdlUtils.getExtensiblityElement(bindingOutput.getExtensibilityElements(),\n                        SOAP12Body.class);\n\n                if (soap12Body == null || soap12Body.getParts() == null) {\n                    result.addAll(msg.getOrderedParts(null));\n                } else {\n                    Iterator i = soap12Body.getParts().iterator();\n                    while (i.hasNext()) {\n                        String partName = (String) i.next();\n                        Part part = msg.getPart(partName);\n\n                        result.add(part);\n                    }\n                }\n            } else {\n                Iterator i = soapBody.getParts().iterator();\n                while (i.hasNext()) {\n                    String partName = (String) i.next();\n                    Part part = msg.getPart(partName);\n\n                    result.add(part);\n                }\n            }\n        } else {\n            log.warn(\"Missing output message for binding operation [\" + operation.getName() + \"]\");\n        }\n\n        return result.toArray(new Part[result.size()]);\n    }\n\n    public static String getSoapEndpoint(Port port) {\n        SOAPAddress soapAddress = WsdlUtils.getExtensiblityElement(port.getExtensibilityElements(), SOAPAddress.class);\n        if (soapAddress != null && StringUtils.isNotBlank(soapAddress.getLocationURI())) {\n            try {\n                return URLDecoder.decode(soapAddress.getLocationURI(), \"UTF-8\");\n            } catch (UnsupportedEncodingException e) {\n                e.printStackTrace();\n                return soapAddress.getLocationURI();\n            }\n        }\n\n        SOAP12Address soap12Address = WsdlUtils.getExtensiblityElement(port.getExtensibilityElements(),\n                SOAP12Address.class);\n        if (soap12Address != null && StringUtils.isNotBlank(soap12Address.getLocationURI())) {\n            try {\n                return URLDecoder.decode(soap12Address.getLocationURI(), \"UTF-8\");\n            } catch (UnsupportedEncodingException e) {\n                e.printStackTrace();\n                return soap12Address.getLocationURI();\n            }\n        }\n\n        return null;\n    }\n\n    public static boolean replaceSoapEndpoint(Port port, String endpoint) {\n        SOAPAddress soapAddress = WsdlUtils.getExtensiblityElement(port.getExtensibilityElements(), SOAPAddress.class);\n        if (soapAddress != null) {\n            soapAddress.setLocationURI(endpoint);\n            return true;\n        }\n\n        SOAP12Address soap12Address = WsdlUtils.getExtensiblityElement(port.getExtensibilityElements(),\n                SOAP12Address.class);\n        if (soap12Address != null) {\n            soap12Address.setLocationURI(endpoint);\n            return true;\n        }\n\n        return false;\n    }\n\n    public static String getSoapBodyNamespace(List<?> list) {\n        SOAPBody soapBody = WsdlUtils.getExtensiblityElement(list, SOAPBody.class);\n        if (soapBody != null)\n            return soapBody.getNamespaceURI();\n\n        SOAP12Body soap12Body = WsdlUtils.getExtensiblityElement(list, SOAP12Body.class);\n        if (soap12Body != null)\n            return soap12Body.getNamespaceURI();\n\n        return null;\n    }\n\n    /**\n     * A SOAP-Header wrapper\n     *\n     * @author ole.matzura\n     */\n\n    public interface SoapHeader {\n        public QName getMessage();\n\n        public String getPart();\n    }\n\n    /**\n     * SOAP 1.1 Header implementation\n     *\n     * @author ole.matzura\n     */\n\n    public static class Soap11Header implements SoapHeader {\n        private final SOAPHeader soapHeader;\n\n        public Soap11Header(SOAPHeader soapHeader) {\n            this.soapHeader = soapHeader;\n        }\n\n        public QName getMessage() {\n            return soapHeader.getMessage();\n        }\n\n        public String getPart() {\n            return soapHeader.getPart();\n        }\n    }\n\n    /**\n     * SOAP 1.2 Header implementation\n     *\n     * @author ole.matzura\n     */\n\n    public static class Soap12Header implements SoapHeader {\n        private final SOAP12Header soapHeader;\n\n        public Soap12Header(SOAP12Header soapHeader) {\n            this.soapHeader = soapHeader;\n        }\n\n        public QName getMessage() {\n            return soapHeader.getMessage();\n        }\n\n        public String getPart() {\n            return soapHeader.getPart();\n        }\n    }\n\n    public static List<SoapHeader> getSoapHeaders(List list) {\n        List<SoapHeader> result = new ArrayList<SoapHeader>();\n\n        List<SOAPHeader> soapHeaders = WsdlUtils.getExtensiblityElements(list, SOAPHeader.class);\n        if (soapHeaders != null && !soapHeaders.isEmpty()) {\n            for (SOAPHeader header : soapHeaders)\n                result.add(new Soap11Header(header));\n        } else {\n            List<SOAP12Header> soap12Headers = WsdlUtils.getExtensiblityElements(list, SOAP12Header.class);\n            if (soap12Headers != null && !soap12Headers.isEmpty()) {\n                for (SOAP12Header header : soap12Headers)\n                    result.add(new Soap12Header(header));\n            }\n        }\n\n        return result;\n    }\n\n\n    public static BindingOperation findBindingOperation(Binding binding, String bindingOperationName, String inputName,\n                                                        String outputName) {\n        if (binding == null)\n            return null;\n\n        if (inputName == null)\n            inputName = \":none\";\n\n        if (outputName == null)\n            outputName = \":none\";\n\n        BindingOperation result = binding.getBindingOperation(bindingOperationName, inputName, outputName);\n\n        if (result == null && (inputName.equals(\":none\") || outputName.equals(\":none\"))) {\n            // fall back to this behaviour for WSDL4j 1.5.0 compatibility\n            result = binding.getBindingOperation(bindingOperationName, inputName.equals(\":none\") ? null : inputName,\n                    outputName.equals(\":none\") ? null : outputName);\n        }\n        return result;\n    }\n\n\n    public static String getTargetNamespace(Definition definition) {\n        return definition.getTargetNamespace() == null ? XMLConstants.NULL_NS_URI : definition.getTargetNamespace();\n    }\n\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/WsdlValidator.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.log4j.Logger;\nimport org.apache.xmlbeans.*;\nimport org.w3c.dom.Element;\nimport org.w3c.dom.NodeList;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingFault;\nimport javax.wsdl.BindingOperation;\nimport javax.wsdl.Part;\nimport javax.xml.namespace.QName;\nimport java.util.*;\n\n\n/**\n * Class for validating SOAP requests/responses against their definition and\n * schema, requires that the messages follow basic-profile requirements\n *\n * @author Ole.Matzura\n */\n\nclass WsdlValidator {\n    private final static Logger log = Logger.getLogger(WsdlValidator.class);\n\n    private final WsdlContext wsdlContext;\n\n    WsdlValidator(SoapMessageBuilder builder, Binding binding) {\n        this.wsdlContext = new WsdlContext(builder, binding);\n    }\n\n    List<AssertionError> assertRequest(BindingOperation bindingOperation, String message, boolean strict) {\n        List<XmlError> errors = new ArrayList<XmlError>();\n        try {\n            validateXml(message, errors);\n            wsdlContext.getSoapVersion().validateSoapEnvelope(message, errors);\n\n            if (errors.isEmpty()) {\n                if (bindingOperation == null) {\n                    errors.add(XmlError.forMessage(\"Missing operation [\" + bindingOperation.getName()\n                            + \"] in wsdl definition\"));\n                } else {\n                    Part[] inputParts = WsdlUtils.getInputParts(bindingOperation);\n                    validateMessage(message, bindingOperation, inputParts, errors, false, strict);\n\n                    // ATTACHMENTS ARE SKIPPED FOR NOW\n                    // validateInputAttachments(request, errors, bindingOperation,\n                    // inputParts);\n                }\n            }\n        } catch (Exception e) {\n            errors.add(XmlError.forMessage(e.getMessage()));\n        }\n        return convertErrors(errors);\n    }\n\n    List<AssertionError> assertResponse(BindingOperation bindingOperation, String message, boolean strict) {\n        List<XmlError> errors = new ArrayList<XmlError>();\n        try {\n            validateXml(message, errors);\n            if (StringUtils.isBlank(message)) {\n                if (!WsdlUtils.isOneWay(bindingOperation)) {\n                    errors.add(XmlError.forMessage(\"Response is missing or empty\"));\n                }\n            } else {\n                wsdlContext.getSoapVersion().validateSoapEnvelope(message, errors);\n\n                if (errors.isEmpty()) {\n                    if (bindingOperation == null) {\n                        errors.add(XmlError.forMessage(\"Missing operation [\" + bindingOperation.getName()\n                                + \"] in wsdl definition\"));\n                    } else {\n                        Part[] outputParts = WsdlUtils.getOutputParts(bindingOperation);\n                        validateMessage(message, bindingOperation, outputParts, errors, true, strict);\n                    }\n                }\n            }\n        } catch (Exception e) {\n            e.printStackTrace();\n            errors.add(XmlError.forMessage(e.getMessage()));\n        }\n        return convertErrors(errors);\n    }\n\n    // -----------------------------------------------\n    // UGLY INTERNAL API\n    // -----------------------------------------------\n    @SuppressWarnings(\"unchecked\")\n    private void validateXml(String request, List<XmlError> errors) {\n        try {\n            XmlOptions xmlOptions = new XmlOptions();\n            xmlOptions.setLoadLineNumbers();\n            xmlOptions.setErrorListener(errors);\n            xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT);\n            XmlUtils.createXmlObject(request, xmlOptions);\n        } catch (XmlException e) {\n            if (e.getErrors() != null)\n                errors.addAll(e.getErrors());\n            errors.add(XmlError.forMessage(e.getMessage()));\n        } catch (Exception e) {\n            errors.add(XmlError.forMessage(e.getMessage()));\n        }\n    }\n\n    private List<AssertionError> convertErrors(List<XmlError> errors) {\n        if (errors.size() > 0) {\n            List<AssertionError> response = new ArrayList<AssertionError>();\n            for (Iterator<XmlError> i = errors.iterator(); i.hasNext(); ) {\n                XmlError error = i.next();\n\n                if (error instanceof XmlValidationError) {\n                    XmlValidationError e = ((XmlValidationError) error);\n                    QName offendingQName = e.getOffendingQName();\n                    if (offendingQName != null) {\n                        if (offendingQName.equals(new QName(wsdlContext.getSoapVersion().getEnvelopeNamespace(),\n                                \"encodingStyle\"))) {\n                            log.debug(\"ignoring encodingStyle validation..\");\n                            continue;\n                        } else if (offendingQName.equals(new QName(wsdlContext.getSoapVersion().getEnvelopeNamespace(),\n                                \"mustUnderstand\"))) {\n                            log.debug(\"ignoring mustUnderstand validation..\");\n                            continue;\n                        }\n                    }\n                }\n\n                AssertionError assertionError = new AssertionError(error);\n                if (!response.contains(assertionError))\n                    response.add(assertionError);\n            }\n\n            return new ArrayList<AssertionError>(response);\n        }\n        return new ArrayList<AssertionError>();\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void validateMessage(String message, BindingOperation bindingOperation,\n                                 Part[] parts, List<XmlError> errors, boolean isResponse, boolean strict) {\n        try {\n            if (!wsdlContext.hasSchemaTypes()) {\n                errors.add(XmlError.forMessage(\"Missing schema types for message\"));\n            } else {\n                if (!WsdlUtils.isOutputSoapEncoded(bindingOperation)) {\n                    XmlOptions xmlOptions = new XmlOptions();\n                    xmlOptions.setLoadLineNumbers();\n                    xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT);\n                    XmlObject xml = XmlUtils.createXmlObject(message, xmlOptions);\n\n                    XmlObject[] paths = xml.selectPath(\"declare namespace env='\"\n                            + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"';\"\n                            + \"$this/env:Envelope/env:Body/env:Fault\");\n\n                    if (paths.length > 0) {\n                        validateSoapFault(bindingOperation, paths[0], errors);\n                    } else if (WsdlUtils.isRpc(wsdlContext.getDefinition(), bindingOperation)) {\n                        validateRpcLiteral(bindingOperation, parts, xml, errors, isResponse, strict);\n                    } else {\n                        validateDocLiteral(bindingOperation, parts, xml, errors, isResponse, strict);\n                    }\n\n                    // ATTACHMENTS SKIPPED FOR NOW\n//\t\t\t\t\tif( isResponse )\n//\t\t\t\t\t\tvalidateOutputAttachments( messageExchange, xml, errors, bindingOperation, parts );\n//\t\t\t\t\telse\n//\t\t\t\t\t\tvalidateInputAttachments( messageExchange, errors, bindingOperation, parts );\n                } else {\n                    errors.add(XmlError.forMessage(\"Validation of SOAP-Encoded messages not supported\"));\n                }\n            }\n        } catch (XmlException e) {\n            if (e.getErrors() != null)\n                errors.addAll(e.getErrors());\n            errors.add(XmlError.forMessage(e.getMessage()));\n        } catch (Exception e) {\n            errors.add(XmlError.forMessage(e.getMessage()));\n        }\n    }\n\n    private void validateDocLiteral(BindingOperation bindingOperation, Part[] parts, XmlObject msgXml,\n                                    List<XmlError> errors, boolean isResponse, boolean strict) throws Exception {\n\n        Part part = null;\n        // start by finding body part\n        for (int c = 0; c < parts.length; c++) {\n            // content part?\n            if ((isResponse && !WsdlUtils.isAttachmentOutputPart(parts[c], bindingOperation))\n                    || (!isResponse && !WsdlUtils.isAttachmentInputPart(parts[c], bindingOperation))) {\n                // already found?\n                if (part != null) {\n                    if (strict) {\n                        errors.add(XmlError.forMessage(\"DocLiteral message must contain 1 body part definition\"));\n                    }\n                    return;\n                }\n                part = parts[c];\n            }\n        }\n\n        QName elementName = part.getElementName();\n        if (elementName != null) {\n            // just check for correct message element, other elements are avoided\n            // (should create an error)\n            XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                    + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"';\" + \"declare namespace ns='\"\n                    + elementName.getNamespaceURI() + \"';\" + \"$this/env:Envelope/env:Body/ns:\" + elementName.getLocalPart());\n\n            if (paths.length == 1) {\n                SchemaGlobalElement elm = wsdlContext.getSchemaTypeLoader().findElement(elementName);\n                if (elm != null) {\n                    validateMessageBody(errors, elm.getType(), paths[0]);\n\n                    // ensure no other elements in body\n                    NodeList children = XmlUtils.getChildElements((Element) paths[0].getDomNode().getParentNode());\n                    for (int d = 0; d < children.getLength(); d++) {\n                        QName childName = XmlUtils.getQName(children.item(d));\n                        if (!elementName.equals(childName)) {\n                            XmlCursor cur = paths[0].newCursor();\n                            cur.toParent();\n                            cur.toChild(childName);\n                            errors.add(XmlError.forCursor(\"Invalid element [\" + childName + \"] in SOAP Body\", cur));\n                            cur.dispose();\n                        }\n                    }\n                } else {\n                    errors.add(XmlError.forMessage(\"Missing part type [\" + elementName + \"] in associated schema\"));\n                }\n            } else {\n                errors.add(XmlError.forMessage(\"Missing message part with name [\" + elementName + \"]\"));\n            }\n        } else if (part.getTypeName() != null) {\n            QName typeName = part.getTypeName();\n\n            XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                    + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"';\" + \"declare namespace ns='\"\n                    + typeName.getNamespaceURI() + \"';\" + \"$this/env:Envelope/env:Body/ns:\" + part.getName());\n\n            if (paths.length == 1) {\n                SchemaType type = wsdlContext.getSchemaTypeLoader().findType(typeName);\n                if (type != null) {\n                    validateMessageBody(errors, type, paths[0]);\n                    // XmlObject obj = paths[0].copy().changeType( type );\n                    // obj.validate( new XmlOptions().setErrorListener( errors ));\n                } else\n                    errors.add(XmlError.forMessage(\"Missing part type in associated schema\"));\n            } else\n                errors.add(XmlError.forMessage(\"Missing message part with name:type [\" + part.getName() + \":\" + typeName + \"]\"));\n        }\n    }\n\n    private void validateMessageBody(List<XmlError> errors, SchemaType type, XmlObject msg) throws XmlException {\n        // need to create new body element of correct type from xml text\n        // since we want to retain line-numbers\n        XmlOptions xmlOptions = new XmlOptions();\n        xmlOptions.setLoadLineNumbers();\n        xmlOptions.setLoadLineNumbers(XmlOptions.LOAD_LINE_NUMBERS_END_ELEMENT);\n\n        XmlCursor cur = msg.newCursor();\n        Map<String, String> map = new HashMap<String, String>();\n\n        while (cur.hasNextToken()) {\n            if (cur.toNextToken().isNamespace())\n                map.put(cur.getName().getLocalPart(), cur.getTextValue());\n        }\n\n        xmlOptions.setUseDefaultNamespace();\n        xmlOptions.setSaveOuter();\n\n        // problem: prefixes might get redefined/changed when saving which can\n        // cause xsi:type refs to\n        // reference wrong/non-existing namespace.. solution would probably be to\n        // manually walk through document and\n        // update xsi:type refs with new prefix. The setUseDefaultNamespace()\n        // above helps here but is not a definitive fix\n\n        String xmlText = msg.copy().changeType(type).xmlText(xmlOptions);\n\n        xmlOptions.setLoadAdditionalNamespaces(map);\n\n        XmlObject obj = type.getTypeSystem().parse(xmlText, type, xmlOptions);\n        obj = obj.changeType(type);\n\n        // create internal error list\n        ArrayList<Object> list = new ArrayList<Object>();\n\n        xmlOptions = new XmlOptions();\n        xmlOptions.setErrorListener(list);\n        xmlOptions.setValidateTreatLaxAsSkip();\n\n        try {\n            obj.validate(xmlOptions);\n        } catch (Exception e) {\n            log.error(\"Internal error\", e);\n            list.add(\"Internal Error - see error log for details - [\" + e + \"]\");\n        }\n\n        // transfer errors for \"real\" line numbers\n        for (int c = 0; c < list.size(); c++) {\n            XmlError error = (XmlError) list.get(c);\n\n            if (error instanceof XmlValidationError) {\n                XmlValidationError validationError = ((XmlValidationError) error);\n\n                if (wsdlContext.getSoapVersion().shouldIgnore(validationError))\n                    continue;\n\n                // ignore cid: related errors\n                if (validationError.getErrorCode().equals(\"base64Binary\")\n                        || validationError.getErrorCode().equals(\"hexBinary\")) {\n                    XmlCursor cursor = validationError.getCursorLocation();\n                    if (cursor.toParent()) {\n                        String text = cursor.getTextValue();\n\n                        // special handling for soapui/MTOM -> add option for\n                        // disabling?\n                        if (text.startsWith(\"cid:\") || text.startsWith(\"file:\")) {\n                            // ignore\n                            continue;\n                        }\n                    }\n                }\n            }\n\n            int line = error.getLine() == -1 ? 0 : error.getLine() - 1;\n            errors.add(XmlError.forLocation(error.getMessage(), error.getSourceName(), getLine(msg) + line,\n                    error.getColumn(), error.getOffset()));\n        }\n    }\n\n    private int getLine(XmlObject object) {\n        List<?> list = new ArrayList<Object>();\n        object.newCursor().getAllBookmarkRefs(list);\n        for (int c = 0; c < list.size(); c++) {\n            if (list.get(c) instanceof XmlLineNumber) {\n                return ((XmlLineNumber) list.get(c)).getLine();\n            }\n        }\n\n        return -1;\n    }\n\n    private void validateRpcLiteral(BindingOperation bindingOperation, Part[] parts, XmlObject msgXml,\n                                    List<XmlError> errors, boolean isResponse, boolean strict) throws Exception {\n        if (parts.length == 0)\n            return;\n\n        XmlObject[] bodyParts = getRpcBodyPart(bindingOperation, msgXml, isResponse);\n\n        if (bodyParts.length != 1) {\n            errors.add(XmlError.forMessage(\"Missing message wrapper element [\"\n                    + WsdlUtils.getTargetNamespace(wsdlContext.getDefinition()) + \"@\" + bindingOperation.getName()\n                    + (isResponse ? \"Response\" : \"\")));\n        } else {\n            XmlObject wrapper = bodyParts[0];\n\n            for (int i = 0; i < parts.length; i++) {\n                Part part = parts[i];\n\n                // skip attachment parts\n                if (isResponse) {\n                    if (WsdlUtils.isAttachmentOutputPart(part, bindingOperation))\n                        continue;\n                } else {\n                    if (WsdlUtils.isAttachmentInputPart(part, bindingOperation))\n                        continue;\n                }\n\n                // find part in message\n                XmlObject[] children = wrapper.selectChildren(new QName(part.getName()));\n\n                // not found?\n                if (children.length != 1) {\n                    // try element name (loophole in basic-profile spec?)\n                    QName elementName = part.getElementName();\n                    if (elementName != null) {\n                        bodyParts = msgXml.selectPath(\"declare namespace env='\"\n                                + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"';\" + \"declare namespace ns='\"\n                                + wsdlContext.getDefinition().getTargetNamespace() + \"';\" + \"declare namespace ns2='\"\n                                + elementName.getNamespaceURI() + \"';\" + \"$this/env:Envelope/env:Body/ns:\"\n                                + bindingOperation.getName() + (isResponse ? \"Response\" : \"\") + \"/ns2:\"\n                                + elementName.getLocalPart());\n\n                        if (bodyParts.length == 1) {\n                            SchemaGlobalElement elm = wsdlContext.getSchemaTypeLoader().findElement(elementName);\n                            if (elm != null) {\n                                validateMessageBody(errors, elm.getType(), bodyParts[0]);\n                            } else\n                                errors.add(XmlError.forMessage(\"Missing part type in associated schema for [\" + elementName\n                                        + \"]\"));\n                        } else\n                            errors.add(XmlError.forMessage(\"Missing message part with name [\" + elementName + \"]\"));\n                    } else {\n                        errors.add(XmlError.forMessage(\"Missing message part [\" + part.getName() + \"]\"));\n                    }\n                } else {\n                    QName typeName = part.getTypeName();\n                    SchemaType type = wsdlContext.getSchemaTypeLoader().findType(typeName);\n                    if (type != null) {\n                        validateMessageBody(errors, type, children[0]);\n                    } else {\n                        errors.add(XmlError.forMessage(\"Missing type in associated schema for part [\" + part.getName() + \"]\"));\n                    }\n                }\n            }\n        }\n    }\n\n    private XmlObject[] getRpcBodyPart(BindingOperation bindingOperation, XmlObject msgXml, boolean isResponse)\n            throws Exception {\n        // rpc requests should use the operation name as root element and soapbind\n        // namespaceuri attribute as ns\n        String ns = WsdlUtils.getSoapBodyNamespace(isResponse ? bindingOperation.getBindingOutput()\n                .getExtensibilityElements() : bindingOperation.getBindingInput().getExtensibilityElements());\n\n        if (ns == null || ns.trim().length() == 0)\n            ns = WsdlUtils.getTargetNamespace(wsdlContext.getDefinition());\n\n        // get root element\n        XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"';\" + \"declare namespace ns='\" + ns + \"';\"\n                + \"$this/env:Envelope/env:Body/ns:\" + bindingOperation.getName() + (isResponse ? \"Response\" : \"\"));\n        return paths;\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private void validateSoapFault(BindingOperation bindingOperation, XmlObject msgXml, List<XmlError> errors)\n            throws Exception {\n        Map faults = bindingOperation.getBindingFaults();\n        Iterator<BindingFault> i = faults.values().iterator();\n\n        // create internal error list\n        List<?> list = new ArrayList<Object>();\n\n        XmlOptions xmlOptions = new XmlOptions();\n        xmlOptions.setErrorListener(list);\n        xmlOptions.setValidateTreatLaxAsSkip();\n        msgXml.validate(xmlOptions);\n\n        for (Object o : list) {\n            if (o instanceof XmlError)\n                errors.add((XmlError) o);\n            else\n                errors.add(XmlError.forMessage(o.toString()));\n        }\n\n        while (i.hasNext()) {\n            BindingFault bindingFault = i.next();\n            String faultName = bindingFault.getName();\n\n            Part[] faultParts = WsdlUtils.getFaultParts(bindingOperation, faultName);\n            if (faultParts.length == 0) {\n                log.warn(\"Missing fault parts in wsdl for fault [\" + faultName + \"] in bindingOperation [\"\n                        + bindingOperation.getName() + \"]\");\n                continue;\n            }\n\n            if (faultParts.length != 1) {\n                log.info(\"Too many fault parts in wsdl for fault [\" + faultName + \"] in bindingOperation [\"\n                        + bindingOperation.getName() + \"]\");\n                continue;\n            }\n\n            Part part = faultParts[0];\n            QName elementName = part.getElementName();\n\n            if (elementName != null) {\n                XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                        + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"'; declare namespace flt='\"\n                        + wsdlContext.getSoapVersion().getFaultDetailNamespace() + \"';\" + \"declare namespace ns='\"\n                        + elementName.getNamespaceURI() + \"';\" + \"//env:Fault/flt:detail/ns:\" + elementName.getLocalPart());\n\n                if (paths.length == 1) {\n                    SchemaGlobalElement elm = wsdlContext.getSchemaTypeLoader().findElement(elementName);\n                    if (elm != null) {\n                        validateMessageBody(errors, elm.getType(), paths[0]);\n                    } else\n                        errors.add(XmlError.forMessage(\"Missing fault part element [\" + elementName + \"] for fault [\"\n                                + part.getName() + \"] in associated schema\"));\n\n                    return;\n                }\n            }\n            // this is not allowed by Basic Profile.. remove?\n            else if (part.getTypeName() != null) {\n                QName typeName = part.getTypeName();\n\n                XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                        + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"'; declare namespace flt='\"\n                        + wsdlContext.getSoapVersion().getFaultDetailNamespace() + \"';\" + \"declare namespace ns='\"\n                        + typeName.getNamespaceURI() + \"';\" + \"//env:Fault/flt:detail/ns:\" + part.getName());\n\n                if (paths.length == 1) {\n                    SchemaType type = wsdlContext.getSchemaTypeLoader().findType(typeName);\n                    if (type != null) {\n                        validateMessageBody(errors, type, paths[0]);\n                    } else\n                        errors.add(XmlError.forMessage(\"Missing fault part type [\" + typeName + \"] for fault [\"\n                                + part.getName() + \"] in associated schema\"));\n\n                    return;\n                }\n            }\n        }\n\n        // if we get here, no matching fault was found.. this is not an error but\n        // should be warned..\n        XmlObject[] paths = msgXml.selectPath(\"declare namespace env='\"\n                + wsdlContext.getSoapVersion().getEnvelopeNamespace() + \"'; declare namespace flt='\"\n                + wsdlContext.getSoapVersion().getFaultDetailNamespace() + \"';//env:Fault/flt:detail\");\n\n        if (paths.length == 0)\n            log.warn(\"Missing matching Fault in wsdl for bindingOperation [\" + bindingOperation.getName() + \"]\");\n        else {\n            String xmlText = paths[0].xmlText(new XmlOptions().setSaveOuter());\n            log.warn(\"Missing matching Fault in wsdl for Fault Detail element [\"\n                    + XmlUtils.removeUnneccessaryNamespaces(xmlText) + \"] in bindingOperation [\"\n                    + bindingOperation.getName() + \"]\");\n        }\n    }\n\n\n    // ATTACHMENTS ARE SKIPPED FOR NOW\n\n//\tprivate void validateInputAttachments( WsdlMessageExchange messageExchange, List<XmlError> errors,\n//\t\t\tBindingOperation bindingOperation, Part[] inputParts )\n//\t{\n//\t\tfor( Part part : inputParts )\n//\t\t{\n//\t\t\tMIMEContent[] contents = WsdlUtils.getInputMultipartContent( part, bindingOperation );\n//\t\t\tif( contents.length == 0 )\n//\t\t\t\tcontinue;\n//\n//\t\t\tAttachment[] attachments = messageExchange.getRequestAttachmentsForPart( part.getName() );\n//\t\t\tif( attachments.length == 0 )\n//\t\t\t{\n//\t\t\t\terrors.add( XmlError.forMessage( \"Missing attachment for part [\" + part.getName() + \"]\" ) );\n//\t\t\t}\n//\t\t\telse if( attachments.length == 1 )\n//\t\t\t{\n//\t\t\t\tAttachment attachment = attachments[0];\n//\t\t\t\tString types = \"\";\n//\t\t\t\tfor( MIMEContent content : contents )\n//\t\t\t\t{\n//\t\t\t\t\tString type = content.getType();\n//\t\t\t\t\tif( type.equals( attachment.getContentType() ) || type.toUpperCase().startsWith( \"MULTIPART\" ) )\n//\t\t\t\t\t{\n//\t\t\t\t\t\ttypes = null;\n//\t\t\t\t\t\tbreak;\n//\t\t\t\t\t}\n//\t\t\t\t\tif( types.length() > 0 )\n//\t\t\t\t\t\ttypes += \",\";\n//\n//\t\t\t\t\ttypes += type;\n//\t\t\t\t}\n//\n//\t\t\t\tif( types != null )\n//\t\t\t\t{\n//\t\t\t\t\tString msg = \"Missing attachment for part [\" + part.getName() + \"] with content-type [\" + types + \"],\"\n//\t\t\t\t\t\t\t+ \" content type is [\" + attachment.getContentType() + \"]\";\n//\n//\t\t\t\t\tif(ALLOW_INCORRECT_CONTENT_TYPE)\n//\t\t\t\t\t\tlog.warn( msg );\n//\t\t\t\t\telse\n//\t\t\t\t\t\terrors.add( XmlError.forMessage( msg ) );\n//\t\t\t\t}\n//\t\t\t}\n//\t\t\telse\n//\t\t\t{\n//\t\t\t\tString types = \"\";\n//\t\t\t\tfor( MIMEContent content : contents )\n//\t\t\t\t{\n//\t\t\t\t\tString type = content.getType();\n//\t\t\t\t\tif( type.toUpperCase().startsWith( \"MULTIPART\" ) )\n//\t\t\t\t\t{\n//\t\t\t\t\t\ttypes = null;\n//\t\t\t\t\t\tbreak;\n//\t\t\t\t\t}\n//\t\t\t\t\tif( types.length() > 0 )\n//\t\t\t\t\t\ttypes += \",\";\n//\n//\t\t\t\t\ttypes += type;\n//\t\t\t\t}\n//\n//\t\t\t\tif( types == null )\n//\t\t\t\t{\n//\t\t\t\t\tString msg = \"Too many attachments for part [\" + part.getName() + \"] with content-type [\" + types + \"]\";\n//\t\t\t\t\tif(ALLOW_INCORRECT_CONTENT_TYPE)\n//\t\t\t\t\t\tlog.warn( msg );\n//\t\t\t\t\telse\n//\t\t\t\t\t\terrors.add( XmlError.forMessage( msg ) );\n//\t\t\t\t}\n//\t\t\t}\n//\n//\t\t\tif( attachments.length > 0 )\n//\t\t\t\tvalidateAttachmentsReadability( errors, attachments );\n//\t\t}\n//\t}\n//\n//\tprivate void validateOutputAttachments( WsdlMessageExchange messageExchange, XmlObject xml, List<XmlError> errors,\n//\t\t\tBindingOperation bindingOperation, Part[] outputParts ) throws Exception\n//\t{\n//\t\tfor( Part part : outputParts )\n//\t\t{\n//\t\t\tMIMEContent[] contents = WsdlUtils.getOutputMultipartContent( part, bindingOperation );\n//\t\t\tif( contents.length == 0 )\n//\t\t\t\tcontinue;\n//\n//\t\t\tAttachment[] attachments = messageExchange.getResponseAttachmentsForPart( part.getName() );\n//\n//\t\t\t// check for rpc\n//\t\t\tif( attachments.length == 0 && WsdlUtils.isRpc( wsdlContext.getDefinition(), bindingOperation ) )\n//\t\t\t{\n//\t\t\t\tXmlObject[] rpcBodyPart = getRpcBodyPart( bindingOperation, xml, true );\n//\t\t\t\tif( rpcBodyPart.length == 1 )\n//\t\t\t\t{\n//\t\t\t\t\tXmlObject[] children = rpcBodyPart[0].selectChildren( new QName( part.getName() ) );\n//\t\t\t\t\tif( children.length == 1 )\n//\t\t\t\t\t{\n//\t\t\t\t\t\tString href = ( ( Element )children[0].getDomNode() ).getAttribute( \"href\" );\n//\t\t\t\t\t\tif( href != null )\n//\t\t\t\t\t\t{\n//\t\t\t\t\t\t\tif( href.startsWith( \"cid:\" ) )\n//\t\t\t\t\t\t\t\thref = href.substring( 4 );\n//\n//\t\t\t\t\t\t\tattachments = messageExchange.getResponseAttachmentsForPart( href );\n//\t\t\t\t\t\t}\n//\t\t\t\t\t}\n//\t\t\t\t}\n//\t\t\t}\n//\n//\t\t\tif( attachments.length == 0 )\n//\t\t\t{\n//\t\t\t\terrors.add( XmlError.forMessage( \"Missing attachment for part [\" + part.getName() + \"]\" ) );\n//\t\t\t}\n//\t\t\telse if( attachments.length == 1 )\n//\t\t\t{\n//\t\t\t\tAttachment attachment = attachments[0];\n//\t\t\t\tString types = \"\";\n//\t\t\t\tfor( MIMEContent content : contents )\n//\t\t\t\t{\n//\t\t\t\t\tString type = content.getType();\n//\t\t\t\t\tif( type.equals( attachment.getContentType() ) || type.toUpperCase().startsWith( \"MULTIPART\" ) )\n//\t\t\t\t\t{\n//\t\t\t\t\t\ttypes = null;\n//\t\t\t\t\t\tbreak;\n//\t\t\t\t\t}\n//\n//\t\t\t\t\tif( types.length() > 0 )\n//\t\t\t\t\t\ttypes += \",\";\n//\n//\t\t\t\t\ttypes += type;\n//\t\t\t\t}\n//\n//\t\t\t\tif( types != null )\n//\t\t\t\t{\n//\t\t\t\t\tString msg = \"Missing attachment for part [\" + part.getName() + \"] with content-type [\" + types\n//\t\t\t\t\t\t\t+ \"], content type is [\" + attachment.getContentType() + \"]\";\n//\n//\t\t\t\t\tif(ALLOW_INCORRECT_CONTENT_TYPE)\n//\t\t\t\t\t\tlog.warn( msg );\n//\t\t\t\t\telse\n//\t\t\t\t\t\terrors.add( XmlError.forMessage( msg ) );\n//\t\t\t\t}\n//\t\t\t}\n//\t\t\telse\n//\t\t\t{\n//\t\t\t\tString types = \"\";\n//\t\t\t\tfor( MIMEContent content : contents )\n//\t\t\t\t{\n//\t\t\t\t\tString type = content.getType();\n//\t\t\t\t\tif( type.toUpperCase().startsWith( \"MULTIPART\" ) )\n//\t\t\t\t\t{\n//\t\t\t\t\t\ttypes = null;\n//\t\t\t\t\t\tbreak;\n//\t\t\t\t\t}\n//\n//\t\t\t\t\tif( types.length() > 0 )\n//\t\t\t\t\t\ttypes += \",\";\n//\n//\t\t\t\t\ttypes += type;\n//\t\t\t\t}\n//\n//\t\t\t\tif( types != null )\n//\t\t\t\t{\n//\t\t\t\t\tString msg = \"Too many attachments for part [\" + part.getName() + \"] with content-type [\" + types + \"]\";\n//\n//\t\t\t\t\tif(ALLOW_INCORRECT_CONTENT_TYPE)\n//\t\t\t\t\t\tlog.warn( msg );\n//\t\t\t\t\telse\n//\t\t\t\t\t\terrors.add( XmlError.forMessage( msg ) );\n//\t\t\t\t}\n//\t\t\t}\n//\n//\t\t\tif( attachments.length > 0 )\n//\t\t\t\tvalidateAttachmentsReadability( errors, attachments );\n//\t\t}\n//\t}\n//\n//\tprivate void validateAttachmentsReadability( List<XmlError> errors, Attachment[] attachments )\n//\t{\n//\t\tfor( Attachment attachment : attachments )\n//\t\t{\n//\t\t\ttry\n//\t\t\t{\n//\t\t\t\tattachment.getInputStream();\n//\t\t\t}\n//\t\t\tcatch( Exception e )\n//\t\t\t{\n//\t\t\t\terrors.add( XmlError.forMessage( e.toString() ) );\n//\t\t\t}\n//\t\t}\n//\t}\n\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/java/org/reficio/ws/legacy/XmlUtils.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * This library is free software; you can redistribute it and/or\n * modify it under the terms of the GNU Lesser General Public\n * License as published by the Free Software Foundation; either\n * version 2.1 of the License, or (at your option) any later version.\n *\n * This library is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this library; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\n * MA 02110-1301  USA\n */\npackage org.reficio.ws.legacy;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.log4j.Logger;\nimport org.apache.xmlbeans.XmlCursor;\nimport org.apache.xmlbeans.XmlException;\nimport org.apache.xmlbeans.XmlObject;\nimport org.apache.xmlbeans.XmlOptions;\nimport org.w3c.dom.*;\nimport org.xml.sax.InputSource;\nimport org.xml.sax.SAXException;\n\nimport javax.xml.namespace.QName;\nimport javax.xml.parsers.DocumentBuilder;\nimport javax.xml.parsers.DocumentBuilderFactory;\nimport javax.xml.parsers.ParserConfigurationException;\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.io.StringReader;\nimport java.io.Writer;\nimport java.net.URL;\nimport java.util.*;\n\n/**\n * This class was extracted from the soapUI code base by centeractive ag in October 2011.\n * The main reason behind the extraction was to separate the code that is responsible\n * for the generation of the SOAP messages from the rest of the soapUI's code that is\n * tightly coupled with other modules, such as soapUI's graphical user interface, etc.\n * The goal was to create an open-source java project whose main responsibility is to\n * handle SOAP message generation and SOAP transmission purely on an XML level.\n * <br/>\n * centeractive ag would like to express strong appreciation to SmartBear Software and\n * to the whole team of soapUI's developers for creating soapUI and for releasing its\n * source code under a free and open-source licence. centeractive ag extracted and\n * modifies some parts of the soapUI's code in good faith, making every effort not\n * to impair any existing functionality and to supplement it according to our\n * requirements, applying best practices of software design.\n *\n * Changes done:\n * - changing location in the package structure\n * - removal of dependencies and code parts that are out of scope of SOAP message generation\n * - minor fixes to make the class compile out of soapUI's code base\n * - adding utility method to handle XML-String from/to XML-Source transformation\n */\n\n/**\n * General XML-related utilities\n */\n@SuppressWarnings(\"deprecation\")\nfinal class XmlUtils {\n    private static DocumentBuilder documentBuilder;\n    private final static Logger log = Logger.getLogger(XmlUtils.class);\n\n    static synchronized public Document parse(InputStream in) {\n        try {\n            return ensureDocumentBuilder().parse(in);\n        } catch (Exception e) {\n            log.error(\"Error parsing InputStream; \" + e.getMessage(), e);\n        }\n\n        return null;\n    }\n\n    static synchronized public Document parse(String fileName) throws IOException {\n        try {\n            return ensureDocumentBuilder().parse(fileName);\n        } catch (SAXException e) {\n            log.error(\"Error parsing fileName [\" + fileName + \"]; \" + e.getMessage(), e);\n        }\n\n        return null;\n    }\n\n\n    static synchronized public Document parse(InputSource inputSource) throws IOException {\n        try {\n            return ensureDocumentBuilder().parse(inputSource);\n        } catch (SAXException e) {\n            throw new IOException(e.toString());\n        }\n    }\n\n    public static NodeList getChildElements(Element elm) {\n        List<Element> list = new ArrayList<Element>();\n\n        NodeList nl = elm.getChildNodes();\n        for (int c = 0; c < nl.getLength(); c++) {\n            Node item = nl.item(c);\n            if (item.getParentNode() == elm && item.getNodeType() == Node.ELEMENT_NODE)\n                list.add((Element) item);\n        }\n\n        return new ElementNodeList(list);\n    }\n\n    private final static class ElementNodeList implements NodeList {\n        private final List<Element> list;\n\n        public ElementNodeList(List<Element> list) {\n            this.list = list;\n        }\n\n        public int getLength() {\n            return list.size();\n        }\n\n        public Node item(int index) {\n            return list.get(index);\n        }\n    }\n\n    public static String getChildElementText(Element elm, String name) {\n        Element child = getFirstChildElement(elm, name);\n        return child == null ? null : getElementText(child);\n    }\n\n    public static Element getFirstChildElement(Element elm) {\n        return getFirstChildElement(elm, null);\n    }\n\n    static public String getElementText(Element elm) {\n        Node node = elm.getFirstChild();\n        if (node != null && node.getNodeType() == Node.TEXT_NODE)\n            return node.getNodeValue();\n\n        return null;\n    }\n\n    static public String getFragmentText(DocumentFragment elm) {\n        Node node = elm.getFirstChild();\n        if (node != null && node.getNodeType() == Node.TEXT_NODE)\n            return node.getNodeValue();\n\n        return null;\n    }\n\n    public static String getChildElementText(Element elm, String name, String defaultValue) {\n        String result = getChildElementText(elm, name);\n        return result == null ? defaultValue : result;\n    }\n\n    static public String getNodeValue(Node node) {\n        if (node == null)\n            return null;\n\n        if (node.getNodeType() == Node.ELEMENT_NODE)\n            return getElementText((Element) node);\n        else if (node.getNodeType() == Node.DOCUMENT_FRAGMENT_NODE)\n            return getFragmentText((DocumentFragment) node);\n        else\n            return node.getNodeValue();\n    }\n\n    public static Element getFirstChildElement(Element elm, String name) {\n        if (elm == null)\n            return null;\n\n        NodeList nl = elm.getChildNodes();\n        for (int c = 0; c < nl.getLength(); c++) {\n            Node node = nl.item(c);\n            if (node.getNodeType() == Node.ELEMENT_NODE && (name == null || node.getNodeName().equals(name)))\n                return (Element) node;\n        }\n\n        return null;\n    }\n\n    public static Element getFirstChildElementIgnoreCase(Element elm, String name) {\n        if (elm == null)\n            return null;\n\n        NodeList nl = elm.getChildNodes();\n        for (int c = 0; c < nl.getLength(); c++) {\n            Node node = nl.item(c);\n            if (node.getNodeType() == Node.ELEMENT_NODE && (name == null || node.getNodeName().equalsIgnoreCase(name)))\n                return (Element) node;\n        }\n\n        return null;\n    }\n\n    public static Element getFirstChildElementNS(Element elm, String tns, String localName) {\n        if (tns == null && localName == null)\n            return getFirstChildElement(elm);\n\n        if (tns == null || tns.length() == 0)\n            return getFirstChildElement(elm, localName);\n\n        NodeList nl = elm.getChildNodes();\n        for (int c = 0; c < nl.getLength(); c++) {\n            Node node = nl.item(c);\n            if (node.getNodeType() != Node.ELEMENT_NODE)\n                continue;\n\n            if (localName == null && tns.equals(node.getNamespaceURI()))\n                return (Element) node;\n\n            if (localName != null && tns.equals(node.getNamespaceURI()) && localName.equals(node.getLocalName()))\n                return (Element) node;\n        }\n\n        return null;\n    }\n\n    public static String removeUnneccessaryNamespaces(String xml) {\n        if (StringUtils.isBlank(xml)) {\n            return xml;\n        }\n\n        XmlObject xmlObject = null;\n        XmlCursor cursor = null;\n        try {\n            xmlObject = XmlObject.Factory.parse(xml);\n\n            cursor = xmlObject.newCursor();\n            while (cursor.currentTokenType() != XmlCursor.TokenType.START && cursor.currentTokenType() != XmlCursor.TokenType.ENDDOC) {\n                cursor.toNextToken();\n            }\n\n            if (cursor.currentTokenType() == XmlCursor.TokenType.START) {\n                Map<?, ?> nsMap = new HashMap<Object, Object>();\n\n                cursor.getAllNamespaces(nsMap);\n                nsMap.remove(cursor.getDomNode().getPrefix());\n\n                NamedNodeMap attributes = cursor.getDomNode().getAttributes();\n                for (int c = 0; attributes != null && c < attributes.getLength(); c++) {\n                    nsMap.remove(attributes.item(c).getPrefix());\n                }\n\n                if (cursor.toFirstChild()) {\n                    while (cursor.getDomNode() != xmlObject.getDomNode()) {\n                        attributes = cursor.getDomNode().getAttributes();\n                        for (int c = 0; attributes != null && c < attributes.getLength(); c++) {\n                            nsMap.remove(attributes.item(c).getPrefix());\n                        }\n\n                        nsMap.remove(cursor.getDomNode().getPrefix());\n                        cursor.toNextToken();\n                    }\n                }\n\n                xml = xmlObject.xmlText(new XmlOptions().setSaveOuter().setSavePrettyPrint()\n                        .setSaveImplicitNamespaces(nsMap));\n            }\n        } catch (XmlException e) {\n\n        } finally {\n            if (cursor != null)\n                cursor.dispose();\n        }\n\n        return xml;\n    }\n\n    private static DocumentBuilder ensureDocumentBuilder() {\n        if (documentBuilder == null) {\n            try {\n                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\n                dbf.setNamespaceAware(true);\n                documentBuilder = dbf.newDocumentBuilder();\n            } catch (ParserConfigurationException e) {\n                log.error(\"Error creating DocumentBuilder; \" + e.getMessage());\n            }\n        }\n\n        return documentBuilder;\n    }\n\n\n    public static XmlObject createXmlObject(String input, XmlOptions xmlOptions) throws XmlException {\n        return XmlObject.Factory.parse(input, xmlOptions);\n    }\n\n    public static XmlObject createXmlObject(URL input, XmlOptions xmlOptions) throws XmlException {\n        try {\n            return XmlObject.Factory.parse(input, xmlOptions);\n        } catch (Exception e) {\n            throw new XmlException(e.toString());\n        }\n    }\n\n\n    public static XmlObject createXmlObject(String input) throws XmlException {\n        return XmlObject.Factory.parse(input);\n    }\n\n    public static XmlObject createXmlObject(URL input) throws XmlException {\n        try {\n            return XmlObject.Factory.parse(input);\n        } catch (Exception e) {\n\n            throw new XmlException(e);\n        }\n    }\n\n\n    static public void setElementText(Element elm, String text) {\n        Node node = elm.getFirstChild();\n        if (node == null) {\n            if (text != null)\n                elm.appendChild(elm.getOwnerDocument().createTextNode(text));\n        } else if (node.getNodeType() == Node.TEXT_NODE) {\n            if (text == null)\n                node.getParentNode().removeChild(node);\n            else\n                node.setNodeValue(text);\n        } else if (text != null) {\n            Text textNode = node.getOwnerDocument().createTextNode(text);\n            elm.insertBefore(textNode, elm.getFirstChild());\n        }\n    }\n\n    public static QName getQName(XmlObject contentElement) {\n        return contentElement == null ? null : getQName(contentElement.getDomNode());\n    }\n\n    public static QName getQName(Node node) {\n        if (node == null)\n            return null;\n        else if (node.getNamespaceURI() == null)\n            return new QName(node.getNodeName());\n        else\n            return new QName(node.getNamespaceURI(), node.getLocalName());\n    }\n\n    public static Document parseXml(String xmlString) throws IOException {\n        return parse(new InputSource(new StringReader(xmlString)));\n    }\n\n    public static boolean setNodeValue(Node domNode, String string) {\n        if (domNode == null)\n            return false;\n\n        short nodeType = domNode.getNodeType();\n\n        switch (nodeType) {\n            case Node.ELEMENT_NODE: {\n                setElementText((Element) domNode, string);\n                break;\n            }\n            case Node.ATTRIBUTE_NODE:\n            case Node.TEXT_NODE: {\n                domNode.setNodeValue(string);\n                break;\n            }\n            case Node.PROCESSING_INSTRUCTION_NODE: {\n                ((ProcessingInstruction) domNode).setData(string);\n                break;\n            }\n            case Node.CDATA_SECTION_NODE: {\n                ((CDATASection) domNode).setData(string);\n                break;\n            }\n            default: {\n                return false;\n            }\n        }\n\n        return true;\n    }\n\n    public static String declareXPathNamespaces(XmlObject xmlObject) {\n        Map<QName, String> map = new HashMap<QName, String>();\n        XmlCursor cursor = xmlObject.newCursor();\n\n        while (cursor.hasNextToken()) {\n            if (cursor.toNextToken().isNamespace())\n                map.put(cursor.getName(), cursor.getTextValue());\n        }\n\n        cursor.dispose();\n\n        Iterator<QName> i = map.keySet().iterator();\n        int nsCnt = 0;\n\n        StringBuffer buf = new StringBuffer();\n        Set<String> prefixes = new HashSet<String>();\n        Set<String> usedPrefixes = new HashSet<String>();\n\n        while (i.hasNext()) {\n            QName name = i.next();\n            String prefix = name.getLocalPart();\n            if (prefix.length() == 0)\n                prefix = \"ns\" + Integer.toString(++nsCnt);\n            else if (prefix.equals(\"xsd\") || prefix.equals(\"xsi\"))\n                continue;\n\n            if (usedPrefixes.contains(prefix)) {\n                int c = 1;\n                while (usedPrefixes.contains(prefix + c))\n                    c++;\n\n                prefix = prefix + Integer.toString(c);\n            } else\n                prefixes.add(prefix);\n\n            buf.append(\"declare namespace \");\n            buf.append(prefix);\n            buf.append(\"='\");\n            buf.append(map.get(name));\n            buf.append(\"';\\n\");\n\n            usedPrefixes.add(prefix);\n        }\n\n        return buf.toString();\n    }\n\n    public static String setXPathContent(String xmlText, String xpath, String value) {\n        try {\n            XmlObject xmlObject = XmlObject.Factory.parse(xmlText);\n\n            String namespaces = declareXPathNamespaces(xmlObject);\n            if (namespaces != null && namespaces.trim().length() > 0)\n                xpath = namespaces + xpath;\n\n            XmlObject[] path = xmlObject.selectPath(xpath);\n            for (XmlObject xml : path) {\n                setNodeValue(xml.getDomNode(), value);\n            }\n\n            return xmlObject.toString();\n        } catch (Exception e) {\n\n            e.printStackTrace();\n        }\n\n        return xmlText;\n    }\n\n    public static void serializePretty(XmlObject xmlObject, Writer writer) throws IOException {\n        XmlOptions options = new XmlOptions();\n        options.setSavePrettyPrint();\n        options.setSavePrettyPrintIndent(3);\n        options.setSaveNoXmlDecl();\n        options.setSaveAggressiveNamespaces();\n        // StringToStringMap map = new StringToStringMap();\n        // map.put( SoapVersion.Soap11.getEnvelopeNamespace(), \"SOAPENV\" );\n        // map.put( SoapVersion.Soap12.getEnvelopeNamespace(), \"SOAPENV\" );\n        //\n        // options.setSaveSuggestedPrefixes( map );\n        xmlObject.save(writer, options);\n    }\n\n}\n"
  },
  {
    "path": "soap-legacy/src/main/resources/license.txt",
    "content": "Copyright (c) ${year} ${company}. All Rights Reserved.\n\nThis library is free software; you can redistribute it and/or\nmodify it under the terms of the GNU Lesser General Public\nLicense as published by the Free Software Foundation; either\nversion 2.1 of the License, or (at your option) any later version.\n\nThis library is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\nLesser General Public License for more details.\n\nYou should have received a copy of the GNU Lesser General Public\nLicense along with this library; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston,\nMA 02110-1301  USA\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/XMLSchema.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- XML Schema schema for XML Schemas: Part 1: Structures -->\n<!-- Note this schema is NOT the normative structures schema. -->\n<!-- The prose copy in the structures REC is the normative -->\n<!-- version (which shouldn't differ from this one except for -->\n<!-- this comment and entity expansions, but just in case -->\n<!DOCTYPE xs:schema PUBLIC \"-//W3C//DTD XMLSCHEMA 200102//EN\"\n        \"/opt/workspaces/reficio/soap-ws/soap-builder/src/main/resources/xsds/XMLSchema.xsd\" [\n\n<!-- provide ID type information even for parsers which only read the\n     internal subset -->\n<!ATTLIST xs:schema          id  ID  #IMPLIED>\n<!ATTLIST xs:complexType     id  ID  #IMPLIED>\n<!ATTLIST xs:complexContent  id  ID  #IMPLIED>\n<!ATTLIST xs:simpleContent   id  ID  #IMPLIED>\n<!ATTLIST xs:extension       id  ID  #IMPLIED>\n<!ATTLIST xs:element         id  ID  #IMPLIED>\n<!ATTLIST xs:group           id  ID  #IMPLIED> \n<!ATTLIST xs:all             id  ID  #IMPLIED>\n<!ATTLIST xs:choice          id  ID  #IMPLIED>\n<!ATTLIST xs:sequence        id  ID  #IMPLIED>\n<!ATTLIST xs:any             id  ID  #IMPLIED>\n<!ATTLIST xs:anyAttribute    id  ID  #IMPLIED>\n<!ATTLIST xs:attribute       id  ID  #IMPLIED>\n<!ATTLIST xs:attributeGroup  id  ID  #IMPLIED>\n<!ATTLIST xs:unique          id  ID  #IMPLIED>\n<!ATTLIST xs:key             id  ID  #IMPLIED>\n<!ATTLIST xs:keyref          id  ID  #IMPLIED>\n<!ATTLIST xs:selector        id  ID  #IMPLIED>\n<!ATTLIST xs:field           id  ID  #IMPLIED>\n<!ATTLIST xs:include         id  ID  #IMPLIED>\n<!ATTLIST xs:import          id  ID  #IMPLIED>\n<!ATTLIST xs:redefine        id  ID  #IMPLIED>\n<!ATTLIST xs:notation        id  ID  #IMPLIED>\n<!--\n     keep this schema XML1.0 DTD valid\n  -->\n        <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>\n\n        <!ELEMENT hfp:hasFacet EMPTY>\n        <!ATTLIST hfp:hasFacet\n                name NMTOKEN #REQUIRED>\n\n        <!ELEMENT hfp:hasProperty EMPTY>\n        <!ATTLIST hfp:hasProperty\n                name NMTOKEN #REQUIRED\n                value CDATA #REQUIRED>\n<!--\n        Make sure that processors that do not read the external\n        subset will know about the various IDs we declare\n  -->\n        <!ATTLIST xs:simpleType id ID #IMPLIED>\n        <!ATTLIST xs:maxExclusive id ID #IMPLIED>\n        <!ATTLIST xs:minExclusive id ID #IMPLIED>\n        <!ATTLIST xs:maxInclusive id ID #IMPLIED>\n        <!ATTLIST xs:minInclusive id ID #IMPLIED>\n        <!ATTLIST xs:totalDigits id ID #IMPLIED>\n        <!ATTLIST xs:fractionDigits id ID #IMPLIED>\n        <!ATTLIST xs:length id ID #IMPLIED>\n        <!ATTLIST xs:minLength id ID #IMPLIED>\n        <!ATTLIST xs:maxLength id ID #IMPLIED>\n        <!ATTLIST xs:enumeration id ID #IMPLIED>\n        <!ATTLIST xs:pattern id ID #IMPLIED>\n        <!ATTLIST xs:appinfo id ID #IMPLIED>\n        <!ATTLIST xs:documentation id ID #IMPLIED>\n        <!ATTLIST xs:list id ID #IMPLIED>\n        <!ATTLIST xs:union id ID #IMPLIED>\n        ]>\n<xs:schema targetNamespace=\"http://www.w3.org/2001/XMLSchema\" blockDefault=\"#all\" elementFormDefault=\"qualified\" version=\"1.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xml:lang=\"EN\" xmlns:hfp=\"http://www.w3.org/2001/XMLSchema-hasFacetAndProperty\">\n <xs:annotation>\n  <xs:documentation>\n    Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp \n    Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp \n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html\">\n   The schema corresponding to this document is normative,\n   with respect to the syntactic constraints it expresses in the\n   XML Schema language.  The documentation (within &lt;documentation&gt; elements)\n   below, is not normative, but rather highlights important aspects of\n   the W3C Recommendation of which this is a part</xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n   <xs:documentation>\n   The simpleType element and all of its members are defined\n      towards the end of this schema document</xs:documentation>\n </xs:annotation>\n\n<!--\n <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"http://www.w3.org/2001/xml.xsd\">\n   <xs:annotation>\n     <xs:documentation>\n       Get access to the xml: attribute groups for xml:lang\n       as declared on 'schema' and 'documentation' below\n     </xs:documentation>\n   </xs:annotation>\n </xs:import>\n-->\n <xs:complexType name=\"openAttrs\">\n   <xs:annotation>\n     <xs:documentation>\n       This type is extended by almost all schema types\n       to allow attributes from other namespaces to be\n       added to user schemas.\n     </xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n     <xs:restriction base=\"xs:anyType\">\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n     </xs:restriction>\n   </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"annotated\">\n   <xs:annotation>\n     <xs:documentation>\n       This type is extended by all types which allow annotation\n       other than &lt;schema&gt; itself\n     </xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n     <xs:extension base=\"xs:openAttrs\">\n       <xs:sequence>\n         <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n       </xs:sequence>\n       <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     </xs:extension>\n   </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"schemaTop\">\n  <xs:annotation>\n   <xs:documentation>\n   This group is for the\n   elements which occur freely at the top level of schemas.\n   All of their types are based on the \"annotated\" type by extension.</xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:group ref=\"xs:redefinable\"/>\n   <xs:element ref=\"xs:element\"/>\n   <xs:element ref=\"xs:attribute\"/>\n   <xs:element ref=\"xs:notation\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:group name=\"redefinable\">\n  <xs:annotation>\n   <xs:documentation>\n   This group is for the\n   elements which can self-redefine (see &lt;redefine&gt; below).</xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:element ref=\"xs:simpleType\"/>\n   <xs:element ref=\"xs:complexType\"/>\n   <xs:element ref=\"xs:group\"/>\n   <xs:element ref=\"xs:attributeGroup\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:simpleType name=\"formChoice\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:NMTOKEN\">\n   <xs:enumeration value=\"qualified\"/>\n   <xs:enumeration value=\"unqualified\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:simpleType name=\"reducedDerivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:derivationControl\">\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:simpleType name=\"derivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {extension, restriction}</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>    \n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list itemType=\"xs:reducedDerivationControl\"/>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:simpleType name=\"typeDerivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:derivationControl\">\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n   <xs:enumeration value=\"list\"/>\n   <xs:enumeration value=\"union\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n  <xs:simpleType name=\"fullDerivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>    \n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list itemType=\"xs:typeDerivationControl\"/>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:element name=\"schema\" id=\"schema\">\n  <xs:annotation>\n    <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-schema\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:openAttrs\">\n     <xs:sequence>\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:element ref=\"xs:include\"/>\n       <xs:element ref=\"xs:import\"/>\n       <xs:element ref=\"xs:redefine\"/>\n       <xs:element ref=\"xs:annotation\"/>\n      </xs:choice>\n      <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:group ref=\"xs:schemaTop\"/>\n       <xs:element ref=\"xs:annotation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xs:sequence>\n     </xs:sequence>\n     <xs:attribute name=\"targetNamespace\" type=\"xs:anyURI\"/>\n     <xs:attribute name=\"version\" type=\"xs:token\"/>\n     <xs:attribute name=\"finalDefault\" type=\"xs:fullDerivationSet\" use=\"optional\" default=\"\"/>\n     <xs:attribute name=\"blockDefault\" type=\"xs:blockSet\" use=\"optional\" default=\"\"/>\n     <xs:attribute name=\"attributeFormDefault\" type=\"xs:formChoice\" use=\"optional\" default=\"unqualified\"/>\n     <xs:attribute name=\"elementFormDefault\" type=\"xs:formChoice\" use=\"optional\" default=\"unqualified\"/>\n     <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     <xs:attribute ref=\"xml:lang\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n\n  <xs:key name=\"element\">\n   <xs:selector xpath=\"xs:element\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"attribute\">\n   <xs:selector xpath=\"xs:attribute\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"type\">\n   <xs:selector xpath=\"xs:complexType|xs:simpleType\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"group\">\n   <xs:selector xpath=\"xs:group\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"attributeGroup\">\n   <xs:selector xpath=\"xs:attributeGroup\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n \n  <xs:key name=\"notation\">\n   <xs:selector xpath=\"xs:notation\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n  <xs:key name=\"identityConstraint\">\n   <xs:selector xpath=\".//xs:key|.//xs:unique|.//xs:keyref\"/>\n   <xs:field xpath=\"@name\"/>\n  </xs:key>\n\n </xs:element>\n\n <xs:simpleType name=\"allNNI\">\n  <xs:annotation><xs:documentation>\n   for maxOccurs</xs:documentation></xs:annotation>\n  <xs:union memberTypes=\"xs:nonNegativeInteger\">\n   <xs:simpleType>\n    <xs:restriction base=\"xs:NMTOKEN\">\n     <xs:enumeration value=\"unbounded\"/>\n    </xs:restriction>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:attributeGroup name=\"occurs\">\n  <xs:annotation><xs:documentation>\n   for all particles</xs:documentation></xs:annotation>\n  <xs:attribute name=\"minOccurs\" type=\"xs:nonNegativeInteger\" use=\"optional\" default=\"1\"/>\n  <xs:attribute name=\"maxOccurs\" type=\"xs:allNNI\" use=\"optional\" default=\"1\"/>\n </xs:attributeGroup>\n\n <xs:attributeGroup name=\"defRef\">\n  <xs:annotation><xs:documentation>\n   for element, group and attributeGroup,\n   which both define and reference</xs:documentation></xs:annotation>\n  <xs:attribute name=\"name\" type=\"xs:NCName\"/>\n  <xs:attribute name=\"ref\" type=\"xs:QName\"/>\n </xs:attributeGroup>\n\n <xs:group name=\"typeDefParticle\">\n  <xs:annotation>\n    <xs:documentation>\n   'complexType' uses this</xs:documentation></xs:annotation>\n  <xs:choice>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:all\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n  </xs:choice>\n </xs:group>\n \n \n\n <xs:group name=\"nestedParticle\">\n  <xs:choice>\n   <xs:element name=\"element\" type=\"xs:localElement\"/>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n   <xs:element ref=\"xs:any\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:group name=\"particle\">\n  <xs:choice>\n   <xs:element name=\"element\" type=\"xs:localElement\"/>\n   <xs:element name=\"group\" type=\"xs:groupRef\"/>\n   <xs:element ref=\"xs:all\"/>\n   <xs:element ref=\"xs:choice\"/>\n   <xs:element ref=\"xs:sequence\"/>\n   <xs:element ref=\"xs:any\"/>\n  </xs:choice>\n </xs:group>\n \n <xs:complexType name=\"attribute\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:element name=\"simpleType\" minOccurs=\"0\" type=\"xs:localSimpleType\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attribute name=\"type\" type=\"xs:QName\"/>\n    <xs:attribute name=\"use\" use=\"optional\" default=\"optional\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:NMTOKEN\">\n       <xs:enumeration value=\"prohibited\"/>\n       <xs:enumeration value=\"optional\"/>\n       <xs:enumeration value=\"required\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:attribute name=\"default\" type=\"xs:string\"/>\n    <xs:attribute name=\"fixed\" type=\"xs:string\"/>\n    <xs:attribute name=\"form\" type=\"xs:formChoice\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelAttribute\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attribute\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:element name=\"simpleType\" minOccurs=\"0\" type=\"xs:localSimpleType\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"form\" use=\"prohibited\"/>\n    <xs:attribute name=\"use\" use=\"prohibited\"/>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"attrDecls\">\n  <xs:sequence>\n   <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n    <xs:element name=\"attribute\" type=\"xs:attribute\"/>\n    <xs:element name=\"attributeGroup\" type=\"xs:attributeGroupRef\"/>\n   </xs:choice>\n   <xs:element ref=\"xs:anyAttribute\" minOccurs=\"0\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:element name=\"anyAttribute\" type=\"xs:wildcard\" id=\"anyAttribute\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-anyAttribute\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:group name=\"complexTypeModel\">\n  <xs:choice>\n      <xs:element ref=\"xs:simpleContent\"/>\n      <xs:element ref=\"xs:complexContent\"/>\n      <xs:sequence>\n       <xs:annotation>\n        <xs:documentation>\n   This branch is short for\n   &lt;complexContent&gt;\n   &lt;restriction base=\"xs:anyType\"&gt;\n   ...\n   &lt;/restriction&gt;\n   &lt;/complexContent&gt;</xs:documentation>\n       </xs:annotation>\n       <xs:group ref=\"xs:typeDefParticle\" minOccurs=\"0\"/>\n       <xs:group ref=\"xs:attrDecls\"/>\n      </xs:sequence>\n  </xs:choice>\n </xs:group>\n\n <xs:complexType name=\"complexType\" abstract=\"true\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:complexTypeModel\"/>\n    <xs:attribute name=\"name\" type=\"xs:NCName\">\n     <xs:annotation>\n      <xs:documentation>\n      Will be restricted to required or forbidden</xs:documentation>\n     </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"mixed\" type=\"xs:boolean\" use=\"optional\" default=\"false\">\n     <xs:annotation>\n      <xs:documentation>\n      Not allowed if simpleContent child is chosen.\n      May be overriden by setting on complexContent child.</xs:documentation>\n    </xs:annotation>\n    </xs:attribute>\n    <xs:attribute name=\"abstract\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"final\" type=\"xs:derivationSet\"/>\n    <xs:attribute name=\"block\" type=\"xs:derivationSet\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelComplexType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:complexType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:complexTypeModel\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"localComplexType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:complexType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:complexTypeModel\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:attribute name=\"abstract\" use=\"prohibited\"/>\n    <xs:attribute name=\"final\" use=\"prohibited\"/>\n    <xs:attribute name=\"block\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"restrictionType\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:choice minOccurs=\"0\">\n      <xs:group ref=\"xs:typeDefParticle\"/>\n      <xs:group ref=\"xs:simpleRestrictionModel\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"base\" type=\"xs:QName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:complexType name=\"complexRestrictionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:restrictionType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:annotation>\n       <xs:documentation>This choice is added simply to\n                   make this a valid restriction per the REC</xs:documentation>\n      </xs:annotation>\n      <xs:group ref=\"xs:typeDefParticle\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:complexType name=\"extensionType\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:group ref=\"xs:typeDefParticle\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"base\" type=\"xs:QName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>       \n </xs:complexType>\n\n <xs:element name=\"complexContent\" id=\"complexContent\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-complexContent\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:choice>\n      <xs:element name=\"restriction\" type=\"xs:complexRestrictionType\"/>\n      <xs:element name=\"extension\" type=\"xs:extensionType\"/>\n     </xs:choice>     \n     <xs:attribute name=\"mixed\" type=\"xs:boolean\">\n      <xs:annotation>\n       <xs:documentation>\n       Overrides any setting on complexType parent.</xs:documentation>\n      </xs:annotation>\n    </xs:attribute>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:complexType name=\"simpleRestrictionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:restrictionType\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:annotation>\n       <xs:documentation>This choice is added simply to\n                   make this a valid restriction per the REC</xs:documentation>\n      </xs:annotation>\n      <xs:group ref=\"xs:simpleRestrictionModel\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"simpleExtensionType\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:extensionType\">\n    <xs:sequence>\n     <xs:annotation>\n      <xs:documentation>\n      No typeDefParticle group reference</xs:documentation>\n     </xs:annotation>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"simpleContent\" id=\"simpleContent\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-simpleContent\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:choice>\n      <xs:element name=\"restriction\" type=\"xs:simpleRestrictionType\"/>\n      <xs:element name=\"extension\" type=\"xs:simpleExtensionType\"/>\n     </xs:choice>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n \n <xs:element name=\"complexType\" type=\"xs:topLevelComplexType\" id=\"complexType\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-complexType\"/>\n  </xs:annotation>\n </xs:element>\n\n\n  <xs:simpleType name=\"blockSet\">\n   <xs:annotation>\n    <xs:documentation>\n    A utility type, not for public use</xs:documentation>\n    <xs:documentation>\n    #all or (possibly empty) subset of {substitution, extension,\n    restriction}</xs:documentation>\n   </xs:annotation>\n   <xs:union>\n    <xs:simpleType>    \n     <xs:restriction base=\"xs:token\">\n      <xs:enumeration value=\"#all\"/>\n     </xs:restriction>\n    </xs:simpleType>\n    <xs:simpleType>\n     <xs:list>\n      <xs:simpleType>\n       <xs:restriction base=\"xs:derivationControl\">\n        <xs:enumeration value=\"extension\"/>\n        <xs:enumeration value=\"restriction\"/>\n        <xs:enumeration value=\"substitution\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:list>\n    </xs:simpleType>\n   </xs:union>  \n  </xs:simpleType>\n\n <xs:complexType name=\"element\" abstract=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   The element element can be used either\n   at the top level to define an element-type binding globally,\n   or within a content model to either reference a globally-defined\n   element or type or declare an element-type binding locally.\n   The ref form is not allowed at the top level.</xs:documentation>\n  </xs:annotation>\n\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attribute name=\"type\" type=\"xs:QName\"/>\n    <xs:attribute name=\"substitutionGroup\" type=\"xs:QName\"/>\n    <xs:attributeGroup ref=\"xs:occurs\"/>\n    <xs:attribute name=\"default\" type=\"xs:string\"/>\n    <xs:attribute name=\"fixed\" type=\"xs:string\"/>\n    <xs:attribute name=\"nillable\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"abstract\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n    <xs:attribute name=\"final\" type=\"xs:derivationSet\"/>\n    <xs:attribute name=\"block\" type=\"xs:blockSet\"/>\n    <xs:attribute name=\"form\" type=\"xs:formChoice\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"topLevelElement\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:element\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"form\" use=\"prohibited\"/>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"localElement\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:element\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"substitutionGroup\" use=\"prohibited\"/>\n    <xs:attribute name=\"final\" use=\"prohibited\"/>\n    <xs:attribute name=\"abstract\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"element\" type=\"xs:topLevelElement\" id=\"element\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-element\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"group\" abstract=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   group type for explicit groups, named top-level groups and\n   group references</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:particle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n    <xs:attributeGroup ref=\"xs:occurs\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"realGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:group\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\" maxOccurs=\"1\">\n      <xs:element ref=\"xs:all\"/>\n      <xs:element ref=\"xs:choice\"/>\n      <xs:element ref=\"xs:sequence\"/>\n     </xs:choice>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"namedGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:realGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"1\" maxOccurs=\"1\">\n      <xs:element name=\"all\">\n       <xs:complexType>\n        <xs:complexContent>\n         <xs:restriction base=\"xs:all\">\n          <xs:group ref=\"xs:allModel\"/>\n          <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n          <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n          <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n         </xs:restriction>\n        </xs:complexContent>\n       </xs:complexType>\n      </xs:element>\n      <xs:element name=\"choice\" type=\"xs:simpleExplicitGroup\"/>\n      <xs:element name=\"sequence\" type=\"xs:simpleExplicitGroup\"/>\n     </xs:choice>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"groupRef\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:realGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"required\" type=\"xs:QName\"/>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"explicitGroup\">\n  <xs:annotation>\n   <xs:documentation>\n   group type for the three kinds of group</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:restriction base=\"xs:group\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:nestedParticle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"prohibited\"/>\n    <xs:attribute name=\"ref\" type=\"xs:QName\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"simpleExplicitGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:explicitGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:nestedParticle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"minOccurs\" use=\"prohibited\"/>\n    <xs:attribute name=\"maxOccurs\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:group name=\"allModel\">\n  <xs:sequence>\n      <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:annotation>\n        <xs:documentation>This choice with min/max is here to\n                          avoid a pblm with the Elt:All/Choice/Seq\n                          Particle derivation constraint</xs:documentation>\n       </xs:annotation>\n       <xs:element name=\"element\" type=\"xs:narrowMaxMin\"/>\n      </xs:choice>\n     </xs:sequence>\n </xs:group>\n \n \n <xs:complexType name=\"narrowMaxMin\">\n  <xs:annotation>\n   <xs:documentation>restricted max/min</xs:documentation>\n  </xs:annotation>\n  <xs:complexContent>\n   <xs:restriction base=\"xs:localElement\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:choice minOccurs=\"0\">\n      <xs:element name=\"simpleType\" type=\"xs:localSimpleType\"/>\n      <xs:element name=\"complexType\" type=\"xs:localComplexType\"/>\n     </xs:choice>\n     <xs:group ref=\"xs:identityConstraint\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"minOccurs\" use=\"optional\" default=\"1\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:nonNegativeInteger\">\n       <xs:enumeration value=\"0\"/>\n       <xs:enumeration value=\"1\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:attribute name=\"maxOccurs\" use=\"optional\" default=\"1\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:allNNI\">\n       <xs:enumeration value=\"0\"/>\n       <xs:enumeration value=\"1\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n  <xs:complexType name=\"all\">\n   <xs:annotation>\n    <xs:documentation>\n   Only elements allowed inside</xs:documentation>\n   </xs:annotation>\n   <xs:complexContent>\n    <xs:restriction base=\"xs:explicitGroup\">\n     <xs:group ref=\"xs:allModel\"/>\n     <xs:attribute name=\"minOccurs\" use=\"optional\" default=\"1\">\n      <xs:simpleType>\n       <xs:restriction base=\"xs:nonNegativeInteger\">\n        <xs:enumeration value=\"0\"/>\n        <xs:enumeration value=\"1\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n     <xs:attribute name=\"maxOccurs\" use=\"optional\" default=\"1\">\n      <xs:simpleType>\n       <xs:restriction base=\"xs:allNNI\">\n        <xs:enumeration value=\"1\"/>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n     <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n    </xs:restriction>\n   </xs:complexContent>\n  </xs:complexType>\n\n <xs:element name=\"all\" id=\"all\" type=\"xs:all\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-all\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"choice\" type=\"xs:explicitGroup\" id=\"choice\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-choice\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"sequence\" type=\"xs:explicitGroup\" id=\"sequence\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-sequence\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"group\" type=\"xs:namedGroup\" id=\"group\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-group\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"wildcard\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:attribute name=\"namespace\" type=\"xs:namespaceList\" use=\"optional\" default=\"##any\"/>\n    <xs:attribute name=\"processContents\" use=\"optional\" default=\"strict\">\n     <xs:simpleType>\n      <xs:restriction base=\"xs:NMTOKEN\">\n       <xs:enumeration value=\"skip\"/>\n       <xs:enumeration value=\"lax\"/>\n       <xs:enumeration value=\"strict\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"any\" id=\"any\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-any\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:wildcard\">\n     <xs:attributeGroup ref=\"xs:occurs\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n  <xs:annotation>\n   <xs:documentation>\n   simple type for the value of the 'namespace' attr of\n   'any' and 'anyAttribute'</xs:documentation>\n  </xs:annotation>\n  <xs:annotation>\n   <xs:documentation>\n   Value is\n              ##any      - - any non-conflicting WFXML/attribute at all\n\n              ##other    - - any non-conflicting WFXML/attribute from\n                              namespace other than targetNS\n\n              ##local    - - any unqualified non-conflicting WFXML/attribute \n\n              one or     - - any non-conflicting WFXML/attribute from\n              more URI        the listed namespaces\n              references\n              (space separated)\n\n    ##targetNamespace or ##local may appear in the above list, to\n        refer to the targetNamespace of the enclosing\n        schema or an absent targetNamespace respectively</xs:documentation>\n  </xs:annotation>\n\n <xs:simpleType name=\"namespaceList\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>\n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"##any\"/>\n     <xs:enumeration value=\"##other\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list>\n     <xs:simpleType>\n      <xs:union memberTypes=\"xs:anyURI\">\n       <xs:simpleType>\n        <xs:restriction base=\"xs:token\">\n         <xs:enumeration value=\"##targetNamespace\"/>\n         <xs:enumeration value=\"##local\"/>\n        </xs:restriction>\n       </xs:simpleType>\n      </xs:union>\n     </xs:simpleType>\n    </xs:list>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n <xs:element name=\"attribute\" type=\"xs:topLevelAttribute\" id=\"attribute\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-attribute\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:complexType name=\"attributeGroup\" abstract=\"true\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:group ref=\"xs:attrDecls\"/>\n    <xs:attributeGroup ref=\"xs:defRef\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n \n <xs:complexType name=\"namedAttributeGroup\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attributeGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n     <xs:group ref=\"xs:attrDecls\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\"/>\n    <xs:attribute name=\"ref\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:complexType name=\"attributeGroupRef\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:attributeGroup\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"ref\" use=\"required\" type=\"xs:QName\"/>\n    <xs:attribute name=\"name\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:element name=\"attributeGroup\" type=\"xs:namedAttributeGroup\" id=\"attributeGroup\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-attributeGroup\"/>\n  </xs:annotation>\n </xs:element>\n\n <xs:element name=\"include\" id=\"include\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-include\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\" use=\"required\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"redefine\" id=\"redefine\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-redefine\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:openAttrs\">\n     <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <xs:element ref=\"xs:annotation\"/>\n      <xs:group ref=\"xs:redefinable\"/>\n     </xs:choice>\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\" use=\"required\"/>\n     <xs:attribute name=\"id\" type=\"xs:ID\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"import\" id=\"import\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-import\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"namespace\" type=\"xs:anyURI\"/>\n     <xs:attribute name=\"schemaLocation\" type=\"xs:anyURI\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"selector\" id=\"selector\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-selector\"/>\n  </xs:annotation>\n  <xs:complexType>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"xpath\" use=\"required\">\n      <xs:simpleType>\n       <xs:annotation>\n        <xs:documentation>A subset of XPath expressions for use\nin selectors</xs:documentation>\n        <xs:documentation>A utility type, not for public\nuse</xs:documentation>\n       </xs:annotation>\n       <xs:restriction base=\"xs:token\">\n        <xs:annotation>\n         <xs:documentation>The following pattern is intended to allow XPath\n                           expressions per the following EBNF:\n          Selector    ::=    Path ( '|' Path )*  \n          Path    ::=    ('.//')? Step ( '/' Step )*  \n          Step    ::=    '.' | NameTest  \n          NameTest    ::=    QName | '*' | NCName ':' '*'  \n                           child:: is also allowed\n         </xs:documentation>\n        </xs:annotation>\n        <xs:pattern value=\"(\\.//)?(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)(/(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.))*(\\|(\\.//)?(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)(/(((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.))*)*\">\n        </xs:pattern>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n </xs:element>\n\n <xs:element name=\"field\" id=\"field\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-field\"/>\n  </xs:annotation>\n  <xs:complexType>\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"xpath\" use=\"required\">\n      <xs:simpleType>\n       <xs:annotation>\n        <xs:documentation>A subset of XPath expressions for use\nin fields</xs:documentation>\n        <xs:documentation>A utility type, not for public\nuse</xs:documentation>\n       </xs:annotation>\n       <xs:restriction base=\"xs:token\">\n        <xs:annotation>\n         <xs:documentation>The following pattern is intended to allow XPath\n                           expressions per the same EBNF as for selector,\n                           with the following change:\n          Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) \n         </xs:documentation>\n        </xs:annotation>\n        <xs:pattern value=\"(\\.//)?((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)/)*((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)|((attribute::|@)((\\i\\c*:)?(\\i\\c*|\\*))))(\\|(\\.//)?((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)/)*((((child::)?((\\i\\c*:)?(\\i\\c*|\\*)))|\\.)|((attribute::|@)((\\i\\c*:)?(\\i\\c*|\\*)))))*\">\n        </xs:pattern>\n       </xs:restriction>\n      </xs:simpleType>\n     </xs:attribute>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n </xs:element>\n\n <xs:complexType name=\"keybase\">\n  <xs:complexContent>\n   <xs:extension base=\"xs:annotated\">\n    <xs:sequence>\n     <xs:element ref=\"xs:selector\"/>\n     <xs:element ref=\"xs:field\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n    </xs:sequence>\n    <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n   </xs:extension>\n  </xs:complexContent>\n </xs:complexType>\n\n <xs:group name=\"identityConstraint\">\n  <xs:annotation>\n   <xs:documentation>The three kinds of identity constraints, all with\n                     type of or derived from 'keybase'.\n   </xs:documentation>\n  </xs:annotation>\n  <xs:choice>\n   <xs:element ref=\"xs:unique\"/>\n   <xs:element ref=\"xs:key\"/>\n   <xs:element ref=\"xs:keyref\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:element name=\"unique\" type=\"xs:keybase\" id=\"unique\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-unique\"/>\n  </xs:annotation>\n </xs:element>\n <xs:element name=\"key\" type=\"xs:keybase\" id=\"key\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-key\"/>\n  </xs:annotation>\n </xs:element>\n <xs:element name=\"keyref\" id=\"keyref\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-keyref\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:keybase\">\n     <xs:attribute name=\"refer\" type=\"xs:QName\" use=\"required\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:element name=\"notation\" id=\"notation\">\n  <xs:annotation>\n   <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-notation\"/>\n  </xs:annotation>\n  <xs:complexType>\n   <xs:complexContent>\n    <xs:extension base=\"xs:annotated\">\n     <xs:attribute name=\"name\" type=\"xs:NCName\" use=\"required\"/>\n     <xs:attribute name=\"public\" type=\"xs:public\"/>\n     <xs:attribute name=\"system\" type=\"xs:anyURI\"/>\n    </xs:extension>\n   </xs:complexContent>\n  </xs:complexType>\n </xs:element>\n\n <xs:simpleType name=\"public\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n   <xs:documentation>\n   A public identifier, per ISO 8879</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:token\"/>\n </xs:simpleType>\n\n <xs:element name=\"appinfo\" id=\"appinfo\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-appinfo\"/>\n   </xs:annotation>\n   <xs:complexType mixed=\"true\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n     <xs:any processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:attribute name=\"source\" type=\"xs:anyURI\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:complexType>\n </xs:element>\n\n <xs:element name=\"documentation\" id=\"documentation\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-documentation\"/>\n   </xs:annotation>\n   <xs:complexType mixed=\"true\">\n    <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n     <xs:any processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:attribute name=\"source\" type=\"xs:anyURI\"/>\n    <xs:attribute ref=\"xml:lang\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:complexType>\n </xs:element>\n\n <xs:element name=\"annotation\" id=\"annotation\">\n   <xs:annotation>\n     <xs:documentation source=\"http://www.w3.org/TR/xmlschema-1/#element-annotation\"/>\n   </xs:annotation>\n   <xs:complexType>\n    <xs:complexContent>\n     <xs:extension base=\"xs:openAttrs\">\n      <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n       <xs:element ref=\"xs:appinfo\"/>\n       <xs:element ref=\"xs:documentation\"/>\n      </xs:choice>\n      <xs:attribute name=\"id\" type=\"xs:ID\"/>\n     </xs:extension>\n    </xs:complexContent>\n   </xs:complexType>\n </xs:element>\n\n <xs:annotation>\n  <xs:documentation>\n   notations for use within XML Schema schemas</xs:documentation>\n </xs:annotation>\n\n<!--\n <xs:notation name=\"XMLSchemaStructures\" public=\"structures\" system=\"http://www.w3.org/2000/08/XMLSchema.xsd\"/>\n <xs:notation name=\"XML\" public=\"REC-xml-19980210\" system=\"http://www.w3.org/TR/1998/REC-xml-19980210\"/>\n-->\n  \n <xs:complexType name=\"anyType\" mixed=\"true\">\n  <xs:annotation>\n   <xs:documentation>\n   Not the real urType, but as close an approximation as we can\n   get in the XML representation</xs:documentation>\n  </xs:annotation>\n  <xs:sequence>\n   <xs:any minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n  </xs:sequence>\n  <xs:anyAttribute processContents=\"lax\"/>\n </xs:complexType>\n\n  <xs:annotation>\n    <xs:documentation>\n      First the built-in primitive datatypes.  These definitions are for\n      information only, the real built-in definitions are magic.\n    </xs:documentation>\n\n    <xs:documentation>\n      For each built-in datatype in this schema (both primitive and\n      derived) can be uniquely addressed via a URI constructed\n      as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the datatype\n\n      For example, to address the int datatype, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#int\n\n      Additionally, each facet definition element can be uniquely\n      addressed via a URI constructed as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the facet\n\n      For example, to address the maxInclusive facet, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#maxInclusive\n\n      Additionally, each facet usage in a built-in datatype definition\n      can be uniquely addressed via a URI constructed as follows:\n        1) the base URI is the URI of the XML Schema namespace\n        2) the fragment identifier is the name of the datatype, followed\n           by a period (\".\") followed by the name of the facet\n\n      For example, to address the usage of the maxInclusive facet in\n      the definition of int, the URI is:\n\n        http://www.w3.org/2001/XMLSchema#int.maxInclusive\n\n    </xs:documentation>\n  </xs:annotation>\n\n  <xs:simpleType name=\"string\" id=\"string\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#string\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"preserve\" id=\"string.preserve\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"boolean\" id=\"boolean\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#boolean\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"boolean.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"float\" id=\"float\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#float\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"float.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"double\" id=\"double\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#double\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"double.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"decimal\" id=\"decimal\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"totalDigits\"/>\n        <hfp:hasFacet name=\"fractionDigits\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"total\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"true\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#decimal\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"decimal.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"duration\" id=\"duration\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#duration\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"duration.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n <xs:simpleType name=\"dateTime\" id=\"dateTime\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#dateTime\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"dateTime.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"time\" id=\"time\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#time\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"time.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"date\" id=\"date\">\n   <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#date\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"date.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gYearMonth\" id=\"gYearMonth\">\n   <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gYearMonth\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gYearMonth.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gYear\" id=\"gYear\">\n    <xs:annotation>\n    <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gYear\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gYear.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"gMonthDay\" id=\"gMonthDay\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n       <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gMonthDay\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gMonthDay.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"gDay\" id=\"gDay\">\n    <xs:annotation>\n  <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gDay\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gDay.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"gMonth\" id=\"gMonth\">\n    <xs:annotation>\n  <xs:appinfo>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"maxInclusive\"/>\n        <hfp:hasFacet name=\"maxExclusive\"/>\n        <hfp:hasFacet name=\"minInclusive\"/>\n        <hfp:hasFacet name=\"minExclusive\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"partial\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#gMonth\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n         <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"gMonth.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"hexBinary\" id=\"hexBinary\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#binary\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"hexBinary.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n <xs:simpleType name=\"base64Binary\" id=\"base64Binary\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#base64Binary\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"base64Binary.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"anyURI\" id=\"anyURI\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#anyURI\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"anyURI.whiteSpace\"/>\n    </xs:restriction>\n   </xs:simpleType>\n\n  <xs:simpleType name=\"QName\" id=\"QName\">\n    <xs:annotation>\n        <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#QName\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"QName.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"NOTATION\" id=\"NOTATION\">\n    <xs:annotation>\n        <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NOTATION\"/>\n      <xs:documentation>\n        NOTATION cannot be used directly in a schema; rather a type\n        must be derived from it by specifying at least one enumeration\n        facet whose value is the name of a NOTATION declared in the\n        schema.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:restriction base=\"xs:anySimpleType\">\n      <xs:whiteSpace value=\"collapse\" fixed=\"true\" id=\"NOTATION.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:annotation>\n    <xs:documentation>\n      Now the derived primitive types\n    </xs:documentation>\n  </xs:annotation>\n\n  <xs:simpleType name=\"normalizedString\" id=\"normalizedString\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#normalizedString\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:string\">\n      <xs:whiteSpace value=\"replace\" id=\"normalizedString.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"token\" id=\"token\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#token\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:normalizedString\">\n      <xs:whiteSpace value=\"collapse\" id=\"token.whiteSpace\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"language\" id=\"language\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#language\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*\" id=\"language.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.ietf.org/rfc/rfc3066.txt\">\n            pattern specifies the content of section 2.12 of XML 1.0e2\n            and RFC 3066 (Revised version of RFC 1766).\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"IDREFS\" id=\"IDREFS\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#IDREFS\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:IDREF\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"IDREFS.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"ENTITIES\" id=\"ENTITIES\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ENTITIES\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:ENTITY\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"ENTITIES.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NMTOKEN\" id=\"NMTOKEN\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NMTOKEN\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"\\c+\" id=\"NMTOKEN.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml#NT-Nmtoken\">\n            pattern matches production 7 from the XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NMTOKENS\" id=\"NMTOKENS\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasFacet name=\"length\"/>\n        <hfp:hasFacet name=\"minLength\"/>\n        <hfp:hasFacet name=\"maxLength\"/>\n        <hfp:hasFacet name=\"enumeration\"/>\n        <hfp:hasFacet name=\"whiteSpace\"/>\n        <hfp:hasFacet name=\"pattern\"/>\n        <hfp:hasProperty name=\"ordered\" value=\"false\"/>\n        <hfp:hasProperty name=\"bounded\" value=\"false\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"countably infinite\"/>\n        <hfp:hasProperty name=\"numeric\" value=\"false\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NMTOKENS\"/>\n    </xs:annotation>\n    <xs:restriction>\n      <xs:simpleType>\n        <xs:list itemType=\"xs:NMTOKEN\"/>\n      </xs:simpleType>\n        <xs:minLength value=\"1\" id=\"NMTOKENS.minLength\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"Name\" id=\"Name\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#Name\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:token\">\n      <xs:pattern value=\"\\i\\c*\" id=\"Name.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml#NT-Name\">\n            pattern matches production 5 from the XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"NCName\" id=\"NCName\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#NCName\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:Name\">\n      <xs:pattern value=\"[\\i-[:]][\\c-[:]]*\" id=\"NCName.pattern\">\n        <xs:annotation>\n          <xs:documentation source=\"http://www.w3.org/TR/REC-xml-names/#NT-NCName\">\n            pattern matches production 4 from the Namespaces in XML spec\n          </xs:documentation>\n        </xs:annotation>\n      </xs:pattern>\n    </xs:restriction>\n  </xs:simpleType>\n\n   <xs:simpleType name=\"ID\" id=\"ID\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ID\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"IDREF\" id=\"IDREF\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#IDREF\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n   <xs:simpleType name=\"ENTITY\" id=\"ENTITY\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#ENTITY\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:NCName\"/>\n   </xs:simpleType>\n\n  <xs:simpleType name=\"integer\" id=\"integer\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#integer\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:decimal\">\n      <xs:fractionDigits value=\"0\" fixed=\"true\" id=\"integer.fractionDigits\"/>\n      <xs:pattern value=\"[\\-+]?[0-9]+\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"nonPositiveInteger\" id=\"nonPositiveInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:maxInclusive value=\"0\" id=\"nonPositiveInteger.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"negativeInteger\" id=\"negativeInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#negativeInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonPositiveInteger\">\n      <xs:maxInclusive value=\"-1\" id=\"negativeInteger.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"long\" id=\"long\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#long\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:minInclusive value=\"-9223372036854775808\" id=\"long.minInclusive\"/>\n      <xs:maxInclusive value=\"9223372036854775807\" id=\"long.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"int\" id=\"int\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#int\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:long\">\n      <xs:minInclusive value=\"-2147483648\" id=\"int.minInclusive\"/>\n      <xs:maxInclusive value=\"2147483647\" id=\"int.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"short\" id=\"short\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#short\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:int\">\n      <xs:minInclusive value=\"-32768\" id=\"short.minInclusive\"/>\n      <xs:maxInclusive value=\"32767\" id=\"short.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"byte\" id=\"byte\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#byte\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:short\">\n      <xs:minInclusive value=\"-128\" id=\"byte.minInclusive\"/>\n      <xs:maxInclusive value=\"127\" id=\"byte.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"nonNegativeInteger\" id=\"nonNegativeInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:integer\">\n      <xs:minInclusive value=\"0\" id=\"nonNegativeInteger.minInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedLong\" id=\"unsignedLong\">\n    <xs:annotation>\n      <xs:appinfo>\n        <hfp:hasProperty name=\"bounded\" value=\"true\"/>\n        <hfp:hasProperty name=\"cardinality\" value=\"finite\"/>\n      </xs:appinfo>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedLong\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonNegativeInteger\">\n      <xs:maxInclusive value=\"18446744073709551615\" id=\"unsignedLong.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedInt\" id=\"unsignedInt\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedInt\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedLong\">\n      <xs:maxInclusive value=\"4294967295\" id=\"unsignedInt.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedShort\" id=\"unsignedShort\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedShort\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedInt\">\n      <xs:maxInclusive value=\"65535\" id=\"unsignedShort.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"unsignedByte\" id=\"unsignedByte\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#unsignedByte\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:unsignedShort\">\n      <xs:maxInclusive value=\"255\" id=\"unsignedByte.maxInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:simpleType name=\"positiveInteger\" id=\"positiveInteger\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#positiveInteger\"/>\n    </xs:annotation>\n    <xs:restriction base=\"xs:nonNegativeInteger\">\n      <xs:minInclusive value=\"1\" id=\"positiveInteger.minInclusive\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n <xs:simpleType name=\"derivationControl\">\n  <xs:annotation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:restriction base=\"xs:NMTOKEN\">\n   <xs:enumeration value=\"substitution\"/>\n   <xs:enumeration value=\"extension\"/>\n   <xs:enumeration value=\"restriction\"/>\n   <xs:enumeration value=\"list\"/>\n   <xs:enumeration value=\"union\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:group name=\"simpleDerivation\">\n  <xs:choice>\n    <xs:element ref=\"xs:restriction\"/>\n    <xs:element ref=\"xs:list\"/>\n    <xs:element ref=\"xs:union\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:simpleType name=\"simpleDerivationSet\">\n  <xs:annotation>\n   <xs:documentation>\n   #all or (possibly empty) subset of {restriction, union, list}\n   </xs:documentation>\n   <xs:documentation>\n   A utility type, not for public use</xs:documentation>\n  </xs:annotation>\n  <xs:union>\n   <xs:simpleType>\n    <xs:restriction base=\"xs:token\">\n     <xs:enumeration value=\"#all\"/>\n    </xs:restriction>\n   </xs:simpleType>\n   <xs:simpleType>\n    <xs:list>\n     <xs:simpleType>\n      <xs:restriction base=\"xs:derivationControl\">\n       <xs:enumeration value=\"list\"/>\n       <xs:enumeration value=\"union\"/>\n       <xs:enumeration value=\"restriction\"/>\n      </xs:restriction>\n     </xs:simpleType>\n    </xs:list>\n   </xs:simpleType>\n  </xs:union>\n </xs:simpleType>\n\n  <xs:complexType name=\"simpleType\" abstract=\"true\">\n    <xs:complexContent>\n      <xs:extension base=\"xs:annotated\">\n        <xs:group ref=\"xs:simpleDerivation\"/>\n        <xs:attribute name=\"final\" type=\"xs:simpleDerivationSet\"/>\n        <xs:attribute name=\"name\" type=\"xs:NCName\">\n          <xs:annotation>\n            <xs:documentation>\n              Can be restricted to required or forbidden\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"topLevelSimpleType\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:simpleType\">\n        <xs:sequence>\n          <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          <xs:group ref=\"xs:simpleDerivation\"/>\n        </xs:sequence>\n        <xs:attribute name=\"name\" use=\"required\" type=\"xs:NCName\">\n          <xs:annotation>\n            <xs:documentation>\n              Required at the top level\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"localSimpleType\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:simpleType\">\n        <xs:sequence>\n          <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          <xs:group ref=\"xs:simpleDerivation\"/>\n        </xs:sequence>\n        <xs:attribute name=\"name\" use=\"prohibited\">\n          <xs:annotation>\n            <xs:documentation>\n              Forbidden when nested\n            </xs:documentation>\n          </xs:annotation>\n        </xs:attribute>\n        <xs:attribute name=\"final\" use=\"prohibited\"/>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:element name=\"simpleType\" type=\"xs:topLevelSimpleType\" id=\"simpleType\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-simpleType\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:group name=\"facets\">\n   <xs:annotation>\n    <xs:documentation>\n       We should use a substitution group for facets, but\n       that's ruled out because it would allow users to\n       add their own, which we're not ready for yet.\n    </xs:documentation>\n   </xs:annotation>\n   <xs:choice>\n    <xs:element ref=\"xs:minExclusive\"/>\n    <xs:element ref=\"xs:minInclusive\"/>\n    <xs:element ref=\"xs:maxExclusive\"/>\n    <xs:element ref=\"xs:maxInclusive\"/>\n    <xs:element ref=\"xs:totalDigits\"/>\n    <xs:element ref=\"xs:fractionDigits\"/>\n    <xs:element ref=\"xs:length\"/>\n    <xs:element ref=\"xs:minLength\"/>\n    <xs:element ref=\"xs:maxLength\"/>\n    <xs:element ref=\"xs:enumeration\"/>\n    <xs:element ref=\"xs:whiteSpace\"/>\n    <xs:element ref=\"xs:pattern\"/>\n   </xs:choice>\n  </xs:group>\n\n  <xs:group name=\"simpleRestrictionModel\">\n   <xs:sequence>\n    <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\"/>\n    <xs:group ref=\"xs:facets\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n   </xs:sequence>\n  </xs:group>\n\n  <xs:element name=\"restriction\" id=\"restriction\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-restriction\">\n          base attribute and simpleType child are mutually\n          exclusive, but one or other is required\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n         <xs:group ref=\"xs:simpleRestrictionModel\"/>\n         <xs:attribute name=\"base\" type=\"xs:QName\" use=\"optional\"/>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"list\" id=\"list\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-list\">\n          itemType attribute and simpleType child are mutually\n          exclusive, but one or other is required\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n          <xs:sequence>\n            <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"itemType\" type=\"xs:QName\" use=\"optional\"/>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"union\" id=\"union\">\n   <xs:complexType>\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-union\">\n          memberTypes attribute must be non-empty or there must be\n          at least one simpleType child\n        </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n        <xs:extension base=\"xs:annotated\">\n          <xs:sequence>\n            <xs:element name=\"simpleType\" type=\"xs:localSimpleType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          </xs:sequence>\n          <xs:attribute name=\"memberTypes\" use=\"optional\">\n            <xs:simpleType>\n              <xs:list itemType=\"xs:QName\"/>\n            </xs:simpleType>\n          </xs:attribute>\n        </xs:extension>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:complexType name=\"facet\">\n    <xs:complexContent>\n      <xs:extension base=\"xs:annotated\">\n        <xs:attribute name=\"value\" use=\"required\"/>\n        <xs:attribute name=\"fixed\" type=\"xs:boolean\" use=\"optional\" default=\"false\"/>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n\n <xs:complexType name=\"noFixedFacet\">\n  <xs:complexContent>\n   <xs:restriction base=\"xs:facet\">\n    <xs:sequence>\n     <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n    </xs:sequence>\n    <xs:attribute name=\"fixed\" use=\"prohibited\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n   </xs:restriction>\n  </xs:complexContent>\n </xs:complexType>\n\n  <xs:element name=\"minExclusive\" id=\"minExclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minExclusive\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"minInclusive\" id=\"minInclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minInclusive\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"maxExclusive\" id=\"maxExclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxExclusive\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"maxInclusive\" id=\"maxInclusive\" type=\"xs:facet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxInclusive\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:complexType name=\"numFacet\">\n    <xs:complexContent>\n      <xs:restriction base=\"xs:facet\">\n       <xs:sequence>\n         <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n       </xs:sequence>\n       <xs:attribute name=\"value\" type=\"xs:nonNegativeInteger\" use=\"required\"/>\n       <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n      </xs:restriction>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:element name=\"totalDigits\" id=\"totalDigits\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-totalDigits\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:numFacet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" type=\"xs:positiveInteger\" use=\"required\"/>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n  <xs:element name=\"fractionDigits\" id=\"fractionDigits\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-fractionDigits\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"length\" id=\"length\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-length\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"minLength\" id=\"minLength\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-minLength\"/>\n    </xs:annotation>\n  </xs:element>\n  <xs:element name=\"maxLength\" id=\"maxLength\" type=\"xs:numFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-maxLength\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"enumeration\" id=\"enumeration\" type=\"xs:noFixedFacet\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-enumeration\"/>\n    </xs:annotation>\n  </xs:element>\n\n  <xs:element name=\"whiteSpace\" id=\"whiteSpace\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-whiteSpace\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:facet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" use=\"required\">\n            <xs:simpleType>\n              <xs:restriction base=\"xs:NMTOKEN\">\n                <xs:enumeration value=\"preserve\"/>\n                <xs:enumeration value=\"replace\"/>\n                <xs:enumeration value=\"collapse\"/>\n              </xs:restriction>\n            </xs:simpleType>\n          </xs:attribute>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n  <xs:element name=\"pattern\" id=\"pattern\">\n    <xs:annotation>\n      <xs:documentation source=\"http://www.w3.org/TR/xmlschema-2/#element-pattern\"/>\n    </xs:annotation>\n    <xs:complexType>\n      <xs:complexContent>\n        <xs:restriction base=\"xs:noFixedFacet\">\n          <xs:sequence>\n            <xs:element ref=\"xs:annotation\" minOccurs=\"0\"/>\n          </xs:sequence>\n          <xs:attribute name=\"value\" type=\"xs:string\" use=\"required\"/>\n         <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n        </xs:restriction>\n      </xs:complexContent>\n    </xs:complexType>\n  </xs:element>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/soapEncoding.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8' ?>\n\n<!-- Schema for the SOAP/1.1 encoding\n\n     This schema has been produced using W3C's SOAP Version 1.2 schema\n     found at:\n\n     http://www.w3.org/2001/06/soap-encoding\n\n     Copyright 2001 Martin Gudgin, Developmentor.\n\t http://www.develop.co.uk\n\n     Changes made are the following:\n     - reverted namespace to http://schemas.xmlsoap.org/soap/encoding/\n     - reverted root to only allow 0 and 1 as lexical values\n\n\t Further changes:\n\n\t - removed default value from root attribute declaration - 20030314\n\n     Original copyright:\n     \n     Copyright 2001 W3C (Massachusetts Institute of Technology,\n     Institut National de Recherche en Informatique et en Automatique,\n     Keio University). All Rights Reserved.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:tns=\"http://schemas.xmlsoap.org/soap/encoding/\"\n           targetNamespace=\"http://schemas.xmlsoap.org/soap/encoding/\" >\n        \n <xs:attribute name=\"root\" >\n   <xs:annotation>\n     <xs:documentation>\n\t   'root' can be used to distinguish serialization roots from other\n       elements that are present in a serialization but are not roots of\n       a serialized value graph \n\t </xs:documentation>\n   </xs:annotation>\n   <xs:simpleType>\n\n     <xs:restriction base='xs:boolean'>\n\t   <xs:pattern value='0|1' />\n\t </xs:restriction>\n   </xs:simpleType>\n </xs:attribute>\n\n  <xs:attributeGroup name=\"commonAttributes\" >\n    <xs:annotation>\n\t  <xs:documentation>\n\n\t    Attributes common to all elements that function as accessors or \n        represent independent (multi-ref) values.  The href attribute is\n        intended to be used in a manner like CONREF.  That is, the element\n        content should be empty iff the href attribute appears\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:attribute name=\"id\" type=\"xs:ID\" />\n    <xs:attribute name=\"href\" type=\"xs:anyURI\" />\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:attributeGroup>\n\n  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them. -->\n       \n  <!-- Array attributes. Needed to give the type and dimensions of an array's contents, and the offset for partially-transmitted arrays. -->\n\n   \n  <xs:simpleType name=\"arrayCoordinate\" >\n    <xs:restriction base=\"xs:string\" />\n  </xs:simpleType>\n          \n  <xs:attribute name=\"arrayType\" type=\"xs:string\" />\n  <xs:attribute name=\"offset\" type=\"tns:arrayCoordinate\" />\n  \n  <xs:attributeGroup name=\"arrayAttributes\" >\n    <xs:attribute ref=\"tns:arrayType\" />\n    <xs:attribute ref=\"tns:offset\" />\n  </xs:attributeGroup>    \n  \n  <xs:attribute name=\"position\" type=\"tns:arrayCoordinate\" /> \n  \n  <xs:attributeGroup name=\"arrayMemberAttributes\" >\n\n    <xs:attribute ref=\"tns:position\" />\n  </xs:attributeGroup>    \n\n  <xs:group name=\"Array\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\" />\n\t</xs:sequence>\n  </xs:group>\n\n  <xs:element name=\"Array\" type=\"tns:Array\" />\n  <xs:complexType name=\"Array\" >\n\n    <xs:annotation>\n\t  <xs:documentation>\n\t   'Array' is a complex type for accessors identified by position \n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:group ref=\"tns:Array\" minOccurs=\"0\" />\n    <xs:attributeGroup ref=\"tns:arrayAttributes\" />\n    <xs:attributeGroup ref=\"tns:commonAttributes\" />\n  </xs:complexType> \n\n  <!-- 'Struct' is a complex type for accessors identified by name. \n       Constraint: No element may be have the same name as any other,\n       nor may any element have a maxOccurs > 1. -->\n\n   \n  <xs:element name=\"Struct\" type=\"tns:Struct\" />\n\n  <xs:group name=\"Struct\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\" />\n\t</xs:sequence>\n  </xs:group>\n\n  <xs:complexType name=\"Struct\" >\n    <xs:group ref=\"tns:Struct\" minOccurs=\"0\" />\n\n    <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n  </xs:complexType> \n\n  <!-- 'Base64' can be used to serialize binary data using base64 encoding\n       as defined in RFC2045 but without the MIME line length limitation. -->\n\n  <xs:simpleType name=\"base64\" >\n    <xs:restriction base=\"xs:base64Binary\" />\n  </xs:simpleType>\n\n <!-- Element declarations corresponding to each of the simple types in the \n      XML Schemas Specification. -->\n\n  <xs:element name=\"duration\" type=\"tns:duration\" />\n\n  <xs:complexType name=\"duration\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:duration\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"dateTime\" type=\"tns:dateTime\" />\n\n  <xs:complexType name=\"dateTime\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:dateTime\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n\n\n  <xs:element name=\"NOTATION\" type=\"tns:NOTATION\" />\n  <xs:complexType name=\"NOTATION\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n\n  <xs:element name=\"time\" type=\"tns:time\" />\n\n  <xs:complexType name=\"time\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:time\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"date\" type=\"tns:date\" />\n\n  <xs:complexType name=\"date\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:date\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYearMonth\" type=\"tns:gYearMonth\" />\n\n  <xs:complexType name=\"gYearMonth\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYearMonth\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYear\" type=\"tns:gYear\" />\n\n  <xs:complexType name=\"gYear\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYear\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonthDay\" type=\"tns:gMonthDay\" />\n\n  <xs:complexType name=\"gMonthDay\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonthDay\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gDay\" type=\"tns:gDay\" />\n\n  <xs:complexType name=\"gDay\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gDay\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonth\" type=\"tns:gMonth\" />\n\n  <xs:complexType name=\"gMonth\" >\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonth\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:element name=\"boolean\" type=\"tns:boolean\" />\n  <xs:complexType name=\"boolean\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:boolean\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"base64Binary\" type=\"tns:base64Binary\" />\n  <xs:complexType name=\"base64Binary\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:base64Binary\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"hexBinary\" type=\"tns:hexBinary\" />\n  <xs:complexType name=\"hexBinary\" >\n\n    <xs:simpleContent>\n     <xs:extension base=\"xs:hexBinary\" >\n       <xs:attributeGroup ref=\"tns:commonAttributes\" />\n     </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"float\" type=\"tns:float\" />\n  <xs:complexType name=\"float\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:float\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"double\" type=\"tns:double\" />\n  <xs:complexType name=\"double\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:double\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyURI\" type=\"tns:anyURI\" />\n  <xs:complexType name=\"anyURI\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:anyURI\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"QName\" type=\"tns:QName\" />\n  <xs:complexType name=\"QName\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  \n  <xs:element name=\"string\" type=\"tns:string\" />\n  <xs:complexType name=\"string\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:string\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"normalizedString\" type=\"tns:normalizedString\" />\n  <xs:complexType name=\"normalizedString\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:normalizedString\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"token\" type=\"tns:token\" />\n  <xs:complexType name=\"token\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:token\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"language\" type=\"tns:language\" />\n  <xs:complexType name=\"language\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:language\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"Name\" type=\"tns:Name\" />\n  <xs:complexType name=\"Name\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:Name\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKEN\" type=\"tns:NMTOKEN\" />\n  <xs:complexType name=\"NMTOKEN\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKEN\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NCName\" type=\"tns:NCName\" />\n  <xs:complexType name=\"NCName\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NCName\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKENS\" type=\"tns:NMTOKENS\" />\n  <xs:complexType name=\"NMTOKENS\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKENS\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ID\" type=\"tns:ID\" />\n  <xs:complexType name=\"ID\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ID\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"IDREF\" type=\"tns:IDREF\" />\n  <xs:complexType name=\"IDREF\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREF\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ENTITY\" type=\"tns:ENTITY\" />\n  <xs:complexType name=\"ENTITY\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITY\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"IDREFS\" type=\"tns:IDREFS\" />\n  <xs:complexType name=\"IDREFS\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREFS\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"ENTITIES\" type=\"tns:ENTITIES\" />\n  <xs:complexType name=\"ENTITIES\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITIES\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"decimal\" type=\"tns:decimal\" />\n  <xs:complexType name=\"decimal\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:decimal\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"integer\" type=\"tns:integer\" />\n  <xs:complexType name=\"integer\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:integer\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonPositiveInteger\" type=\"tns:nonPositiveInteger\" />\n  <xs:complexType name=\"nonPositiveInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonPositiveInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"negativeInteger\" type=\"tns:negativeInteger\" />\n  <xs:complexType name=\"negativeInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:negativeInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"long\" type=\"tns:long\" />\n  <xs:complexType name=\"long\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:long\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"int\" type=\"tns:int\" />\n  <xs:complexType name=\"int\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:int\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"short\" type=\"tns:short\" />\n  <xs:complexType name=\"short\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:short\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"byte\" type=\"tns:byte\" />\n  <xs:complexType name=\"byte\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:byte\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonNegativeInteger\" type=\"tns:nonNegativeInteger\" />\n  <xs:complexType name=\"nonNegativeInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonNegativeInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedLong\" type=\"tns:unsignedLong\" />\n  <xs:complexType name=\"unsignedLong\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedLong\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedInt\" type=\"tns:unsignedInt\" />\n  <xs:complexType name=\"unsignedInt\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedInt\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedShort\" type=\"tns:unsignedShort\" />\n  <xs:complexType name=\"unsignedShort\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedShort\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedByte\" type=\"tns:unsignedByte\" />\n  <xs:complexType name=\"unsignedByte\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedByte\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"positiveInteger\" type=\"tns:positiveInteger\" />\n  <xs:complexType name=\"positiveInteger\" >\n\n    <xs:simpleContent>\n      <xs:extension base=\"xs:positiveInteger\" >\n        <xs:attributeGroup ref=\"tns:commonAttributes\" />\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyType\" />\n</xs:schema>\n\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/soapEncoding12.xsd",
    "content": "<!-- Schema defined in the SOAP Version 1.2 Part 2 specification\n     Proposed Recommendation:\n     http://www.w3.org/TR/2003/PR-soap12-part2-20030507/\n     $Id$\n\n     Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved.\n     W3C viability, trademark, document use and software licensing rules\n     apply.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://www.w3.org/2003/05/soap-encoding\" targetNamespace=\"http://www.w3.org/2003/05/soap-encoding\">\n        \n  <xs:attributeGroup name=\"commonAttributes\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t    Attributes common to all elements that function as accessors or \n        represent independent (multi-ref) values.  The ref attribute is\n        intended to be used in a manner like CONREF.  That is, the element\n        content should be empty iff the ref attribute appears\n\t  </xs:documentation>\n\t</xs:annotation>\n\t<xs:attribute ref=\"tns:id\"/>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:attributeGroup>\n\n  <!-- Global Attributes.  The following attributes are intended to be  usable via qualified attribute names on any complex type referencing  them. -->\n  <xs:attribute name=\"id\" type=\"xs:ID\"/>\n  <xs:attribute name=\"ref\" type=\"xs:IDREF\"/>\n\n  <xs:complexType name=\"Ref\">\n    <xs:attribute ref=\"tns:ref\" use=\"required\"/>\n  </xs:complexType>\n\n  <xs:simpleType name=\"nodeType\">\n    <xs:restriction base=\"xs:token\">\n\t  <xs:enumeration value=\"simple\"/>\n\t  <xs:enumeration value=\"struct\"/>\n\t  <xs:enumeration value=\"array\"/>\n\t</xs:restriction>\n  </xs:simpleType>\n  <xs:attribute name=\"nodeType\" type=\"tns:nodeType\"/>\n\n  <!-- Array attributes. Needed to give the type and dimensions of an array\"s contents, and the offset for partially-transmitted arrays. -->\n\n  <xs:simpleType name=\"arraySizeBase\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t  A list type that allows * and non negative integers. Used as the\n    base type for arraySize below.\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:list>\n\t  <xs:simpleType>\n\t    <xs:union memberTypes=\"xs:nonNegativeInteger\">\n\t\t  <xs:simpleType>\n\t\t    <xs:restriction base=\"xs:token\">\n\t\t\t  <xs:enumeration value=\"*\"/>\n\t\t\t</xs:restriction>\n\t\t  </xs:simpleType>\n\t\t</xs:union>\n\t  </xs:simpleType>\n\t</xs:list>\n  </xs:simpleType>\n\n\n  <xs:simpleType name=\"arraySize\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t  Pattern based restriction of the arraySizeBase list type. Used\n    as the type of the arraySize attribute. Restricts asterisk ( * )\n    to first list item only. Instances must contain at least an\n    asterisk ( * ) or a nonNegativeInteger. May contain other \n    nonNegativeIntegers as subsequent list items.\n\tValid instances include;\n\t\n\t  *\n\t  1\n\t  * 2\n\t  2 2\n\t  * 2 0\n\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:restriction base=\"tns:arraySizeBase\">\n\t  <xs:pattern value=\"(\\*|(\\d+))(\\s+\\d+)*\"/>\n\t</xs:restriction>\n  </xs:simpleType>\n   \n  <xs:attribute name=\"arraySize\" type=\"tns:arraySize\"/>\n  <xs:attribute name=\"itemType\" type=\"xs:QName\"/>\n\n  <xs:attributeGroup name=\"arrayAttributes\">\n    <xs:attribute ref=\"tns:arraySize\"/>\n\t<xs:attribute ref=\"tns:itemType\"/>\n  </xs:attributeGroup>    \n  \n  <!-- 'Base64' can be used to serialize binary data using base64 encoding\n       as defined in RFC2045 but without the MIME line length limitation. -->\n\n  <xs:simpleType name=\"base64\">\n    <xs:restriction base=\"xs:base64Binary\"/>\n  </xs:simpleType>\n\n <!-- Element declarations corresponding to each of the simple types in the \n      XML Schemas Specification. -->\n\n  <xs:element name=\"duration\" type=\"tns:duration\"/>\n  <xs:complexType name=\"duration\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:duration\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"dateTime\" type=\"tns:dateTime\"/>\n  <xs:complexType name=\"dateTime\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:dateTime\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"time\" type=\"tns:time\"/>\n  <xs:complexType name=\"time\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:time\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"date\" type=\"tns:date\"/>\n  <xs:complexType name=\"date\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:date\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYearMonth\" type=\"tns:gYearMonth\"/>\n  <xs:complexType name=\"gYearMonth\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYearMonth\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gYear\" type=\"tns:gYear\"/>\n  <xs:complexType name=\"gYear\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gYear\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonthDay\" type=\"tns:gMonthDay\"/>\n  <xs:complexType name=\"gMonthDay\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonthDay\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gDay\" type=\"tns:gDay\"/>\n  <xs:complexType name=\"gDay\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gDay\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"gMonth\" type=\"tns:gMonth\"/>\n  <xs:complexType name=\"gMonth\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:gMonth\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:element name=\"boolean\" type=\"tns:boolean\"/>\n  <xs:complexType name=\"boolean\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:boolean\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"base64Binary\" type=\"tns:base64Binary\"/>\n  <xs:complexType name=\"base64Binary\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:base64Binary\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"hexBinary\" type=\"tns:hexBinary\"/>\n  <xs:complexType name=\"hexBinary\">\n    <xs:simpleContent>\n     <xs:extension base=\"xs:hexBinary\">\n       <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n     </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"float\" type=\"tns:float\"/>\n  <xs:complexType name=\"float\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:float\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"double\" type=\"tns:double\"/>\n  <xs:complexType name=\"double\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:double\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyURI\" type=\"tns:anyURI\"/>\n  <xs:complexType name=\"anyURI\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:anyURI\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"QName\" type=\"tns:QName\"/>\n  <xs:complexType name=\"QName\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:QName\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"string\" type=\"tns:string\"/>\n  <xs:complexType name=\"string\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:string\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"normalizedString\" type=\"tns:normalizedString\"/>\n  <xs:complexType name=\"normalizedString\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:normalizedString\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"token\" type=\"tns:token\"/>\n  <xs:complexType name=\"token\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:token\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"language\" type=\"tns:language\"/>\n  <xs:complexType name=\"language\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:language\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"Name\" type=\"tns:Name\"/>\n  <xs:complexType name=\"Name\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:Name\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NMTOKEN\" type=\"tns:NMTOKEN\"/>\n  <xs:complexType name=\"NMTOKEN\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKEN\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"NCName\" type=\"tns:NCName\"/>\n  <xs:complexType name=\"NCName\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NCName\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"decimal\" type=\"tns:decimal\"/>\n  <xs:complexType name=\"decimal\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:decimal\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"integer\" type=\"tns:integer\"/>\n  <xs:complexType name=\"integer\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:integer\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonPositiveInteger\" type=\"tns:nonPositiveInteger\"/>\n  <xs:complexType name=\"nonPositiveInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonPositiveInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"negativeInteger\" type=\"tns:negativeInteger\"/>\n  <xs:complexType name=\"negativeInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:negativeInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"long\" type=\"tns:long\"/>\n  <xs:complexType name=\"long\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:long\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"int\" type=\"tns:int\"/>\n  <xs:complexType name=\"int\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:int\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"short\" type=\"tns:short\"/>\n  <xs:complexType name=\"short\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:short\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"byte\" type=\"tns:byte\"/>\n  <xs:complexType name=\"byte\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:byte\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"nonNegativeInteger\" type=\"tns:nonNegativeInteger\"/>\n  <xs:complexType name=\"nonNegativeInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:nonNegativeInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedLong\" type=\"tns:unsignedLong\"/>\n  <xs:complexType name=\"unsignedLong\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedLong\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedInt\" type=\"tns:unsignedInt\"/>\n  <xs:complexType name=\"unsignedInt\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedInt\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedShort\" type=\"tns:unsignedShort\"/>\n  <xs:complexType name=\"unsignedShort\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedShort\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"unsignedByte\" type=\"tns:unsignedByte\"/>\n  <xs:complexType name=\"unsignedByte\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:unsignedByte\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"positiveInteger\" type=\"tns:positiveInteger\"/>\n  <xs:complexType name=\"positiveInteger\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:positiveInteger\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:element name=\"anyType\"/>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"NMTOKENS\" type=\"tns:NMTOKENS\"/>\n  <xs:complexType name=\"NMTOKENS\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:NMTOKENS\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ID\" type=\"tns:ID\"/>\n  <xs:complexType name=\"ID\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ID\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"IDREF\" type=\"tns:IDREF\"/>\n  <xs:complexType name=\"IDREF\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREF\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ENTITY\" type=\"tns:ENTITY\"/>\n  <xs:complexType name=\"ENTITY\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITY\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"IDREFS\" type=\"tns:IDREFS\"/>\n  <xs:complexType name=\"IDREFS\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:IDREFS\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <!-- \n       For compatibility with XML 1.0 the following element declaration\n       and associated complex type definition should NOT be used as\n       its type is only applicable to attributes in XML 1.0. It is\n       provided here for completenes.\n   -->\n  <xs:element name=\"ENTITIES\" type=\"tns:ENTITIES\"/>\n  <xs:complexType name=\"ENTITIES\">\n    <xs:simpleContent>\n      <xs:extension base=\"xs:ENTITIES\">\n        <xs:attributeGroup ref=\"tns:commonAttributes\"/>\n      </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/soapEnvelope.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Schema for the SOAP/1.1 envelope\n\nPortions © 2001 DevelopMentor. \n© 2001 W3C (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved.  \n \nThis document is governed by the W3C Software License [1] as described in the FAQ [2].\n[1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n[2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD \nBy obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:\n\nPermission to use, copy, modify, and distribute this software and its documentation, with or without modification,  for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:\n\n1.  The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. \n\n2.  Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: \"Copyright © 2001 World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. http://www.w3.org/Consortium/Legal/\" \n\n3.  Notice of any changes or modifications to the W3C files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)   \n\nOriginal W3C files; http://www.w3.org/2001/06/soap-envelope\nChanges made: \n     - reverted namespace to http://schemas.xmlsoap.org/soap/envelope/\n     - reverted mustUnderstand to only allow 0 and 1 as lexical values\n\t - made encodingStyle a global attribute 20020825\n\t - removed default value from mustUnderstand attribute declaration\n\t - added xml:lang to faultstring per WS-I BP\n\t - removed 'trailer' wildcard from Envelope per WS-I BP\n\nTHIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\n\nCOPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\n\nThe name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.\n\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://schemas.xmlsoap.org/soap/envelope/\" targetNamespace=\"http://schemas.xmlsoap.org/soap/envelope/\">\n\n  <!-- <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>  -->\n     \n  <!-- Envelope, header and body -->\n  <xs:element name=\"Envelope\" type=\"tns:Envelope\"/>\n  <xs:complexType name=\"Envelope\">\n    <xs:sequence>\n      <xs:element ref=\"tns:Header\" minOccurs=\"0\"/>\n      <xs:element ref=\"tns:Body\" minOccurs=\"1\"/>\n\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:complexType>\n\n  <xs:element name=\"Header\" type=\"tns:Header\"/>\n  <xs:complexType name=\"Header\">\n    <xs:sequence>\n      <xs:any namespace=\"##other\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\"/>\n  </xs:complexType>\n  \n  <xs:element name=\"Body\" type=\"tns:Body\"/>\n  <xs:complexType name=\"Body\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##any\" processContents=\"lax\">\n\t  <xs:annotation>\n\n\t    <xs:documentation>\n\t\t  Prose in the spec does not specify that attributes are allowed on the Body element\n\t\t</xs:documentation>\n\t  </xs:annotation>\n\t</xs:anyAttribute>\n  </xs:complexType>\n\n       \n  <!-- Global Attributes.  The following attributes are intended to be usable via qualified attribute names on any complex type referencing them.  -->\n  <xs:attribute name=\"mustUnderstand\">\t\n     <xs:simpleType>\n\n     <xs:restriction base=\"xs:boolean\">\n\t   <xs:pattern value=\"0|1\"/>\n\t </xs:restriction>\n   </xs:simpleType>\n  </xs:attribute>\n  <xs:attribute name=\"actor\" type=\"xs:anyURI\"/>\n\n  <xs:simpleType name=\"encodingStyle\">\n    <xs:annotation>\n\n\t  <xs:documentation>\n\t    'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element.  For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:list itemType=\"xs:anyURI\"/>\n  </xs:simpleType>\n\n  <xs:attribute name=\"encodingStyle\" type=\"tns:encodingStyle\"/>\n  <xs:attributeGroup name=\"encodingStyle\">\n    <xs:attribute ref=\"tns:encodingStyle\"/>\n\n  </xs:attributeGroup>\n\n  <xs:element name=\"Fault\" type=\"tns:Fault\"/>\n  <xs:complexType name=\"Fault\" final=\"extension\">\n    <xs:annotation>\n\t  <xs:documentation>\n\t    Fault reporting structure\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n\n      <xs:element name=\"faultcode\" type=\"xs:QName\"/>\n      <xs:element name=\"faultstring\" type=\"tns:FaultString\"/>\n      <xs:element name=\"faultactor\" type=\"xs:anyURI\" minOccurs=\"0\"/>\n      <xs:element name=\"detail\" type=\"tns:detail\" minOccurs=\"0\"/>      \n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"FaultString\">\n\t<xs:simpleContent>\n\t  <xs:extension base=\"xs:string\">\n\n\t\t<xs:attribute ref=\"xml:lang\" use=\"optional\"/>\n\t  </xs:extension>\n\t</xs:simpleContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"detail\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"lax\"/>\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##any\" processContents=\"lax\"/> \n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/soapEnvelope12.xsd",
    "content": "<!-- Schema defined in the SOAP Version 1.2 Part 1 specification\n     Proposed Recommendation:\n     http://www.w3.org/TR/2003/PR-soap12-part1-20030507/\n     $Id$\n\n     Copyright (C)2003 W3C(R) (MIT, ERCIM, Keio), All Rights Reserved.\n     W3C viability, trademark, document use and software licensing rules\n     apply.\n     http://www.w3.org/Consortium/Legal/\n\n     This document is governed by the W3C Software License [1] as\n     described in the FAQ [2].\n\n     [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720\n     [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD\n-->\n\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:tns=\"http://www.w3.org/2003/05/soap-envelope\"\n           targetNamespace=\"http://www.w3.org/2003/05/soap-envelope\" \n\t\t   elementFormDefault=\"qualified\" >\n\n  <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" />\n\n  <!-- Envelope, header and body -->\n  <xs:element name=\"Envelope\" type=\"tns:Envelope\" />\n  <xs:complexType name=\"Envelope\" >\n    <xs:sequence>\n      <xs:element ref=\"tns:Header\" minOccurs=\"0\" />\n\n      <xs:element ref=\"tns:Body\" minOccurs=\"1\" />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n\n  <xs:element name=\"Header\" type=\"tns:Header\" />\n  <xs:complexType name=\"Header\" >\n    <xs:annotation>\n\t  <xs:documentation>\n\n\t  Elements replacing the wildcard MUST be namespace qualified, but can be in the targetNamespace\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"  />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n  \n  <xs:element name=\"Body\" type=\"tns:Body\" />\n\n  <xs:complexType name=\"Body\" >\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\" />\n    </xs:sequence>\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" />\n  </xs:complexType>\n\n  <!-- Global Attributes.  The following attributes are intended to be\n  usable via qualified attribute names on any complex type referencing\n  them.  -->\n  <xs:attribute name=\"mustUnderstand\" type=\"xs:boolean\" default=\"0\" />\n\n  <xs:attribute name=\"relay\" type=\"xs:boolean\" default=\"0\" />\n  <xs:attribute name=\"role\" type=\"xs:anyURI\" />\n\n  <!-- 'encodingStyle' indicates any canonicalization conventions\n  followed in the contents of the containing element.  For example, the\n  value 'http://www.w3.org/2003/05/soap-encoding' indicates the pattern\n  described in the last call working draft of SOAP Version 1.2 Part 2:\n  Adjuncts -->\n\n  <xs:attribute name=\"encodingStyle\" type=\"xs:anyURI\" />\n\n  <xs:element name=\"Fault\" type=\"tns:Fault\" />\n  <xs:complexType name=\"Fault\" final=\"extension\" >\n    <xs:annotation>\n\n\t  <xs:documentation>\n\t    Fault reporting structure\n\t  </xs:documentation>\n\t</xs:annotation>\n    <xs:sequence>\n      <xs:element name=\"Code\" type=\"tns:faultcode\" />\n      <xs:element name=\"Reason\" type=\"tns:faultreason\" />\n      <xs:element name=\"Node\" type=\"xs:anyURI\" minOccurs=\"0\" />\n\t  <xs:element name=\"Role\" type=\"xs:anyURI\" minOccurs=\"0\" />\n\n      <xs:element name=\"Detail\" type=\"tns:detail\" minOccurs=\"0\" />\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"faultreason\" >\n    <xs:sequence>\n\t  <xs:element name=\"Text\" type=\"tns:reasontext\" \n                  minOccurs=\"1\"  maxOccurs=\"unbounded\" />\n\t</xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"reasontext\" >\n    <xs:simpleContent>\n\t  <xs:extension base=\"xs:string\" >\n\t    <xs:attribute ref=\"xml:lang\" use=\"required\" />\n\t  </xs:extension>\n\t</xs:simpleContent>\n  </xs:complexType>\n  \n  <xs:complexType name=\"faultcode\">\n\n    <xs:sequence>\n      <xs:element name=\"Value\"\n                  type=\"tns:faultcodeEnum\"/>\n      <xs:element name=\"Subcode\"\n                  type=\"tns:subcode\"\n                  minOccurs=\"0\"/>\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:simpleType name=\"faultcodeEnum\">\n    <xs:restriction base=\"xs:QName\">\n      <xs:enumeration value=\"tns:DataEncodingUnknown\"/>\n\n      <xs:enumeration value=\"tns:MustUnderstand\"/>\n      <xs:enumeration value=\"tns:Receiver\"/>\n      <xs:enumeration value=\"tns:Sender\"/>\n      <xs:enumeration value=\"tns:VersionMismatch\"/>\n    </xs:restriction>\n  </xs:simpleType>\n\n  <xs:complexType name=\"subcode\">\n    <xs:sequence>\n\n      <xs:element name=\"Value\"\n                  type=\"xs:QName\"/>\n      <xs:element name=\"Subcode\"\n                  type=\"tns:subcode\"\n                  minOccurs=\"0\"/>\n    </xs:sequence>\n  </xs:complexType>\n\n  <xs:complexType name=\"detail\">\n    <xs:sequence>\n      <xs:any namespace=\"##any\" processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"  />\n    </xs:sequence>\n\n    <xs:anyAttribute namespace=\"##other\" processContents=\"lax\" /> \n  </xs:complexType>\n\n  <!-- Global element declaration and complex type definition for header entry returned due to a mustUnderstand fault -->\n  <xs:element name=\"NotUnderstood\" type=\"tns:NotUnderstoodType\" />\n  <xs:complexType name=\"NotUnderstoodType\" >\n    <xs:attribute name=\"qname\" type=\"xs:QName\" use=\"required\" />\n  </xs:complexType>\n\n\n  <!-- Global element and associated types for managing version transition as described in Appendix A of the SOAP Version 1.2 Part 1 Last Call Working Draft -->  <xs:complexType name=\"SupportedEnvType\" >\n\n    <xs:attribute name=\"qname\" type=\"xs:QName\" use=\"required\" />\n  </xs:complexType>\n\n  <xs:element name=\"Upgrade\" type=\"tns:UpgradeType\" />\n  <xs:complexType name=\"UpgradeType\" >\n    <xs:sequence>\n\t  <xs:element name=\"SupportedEnvelope\" type=\"tns:SupportedEnvType\" minOccurs=\"1\" maxOccurs=\"unbounded\" />\n\t</xs:sequence>\n  </xs:complexType>\n\n\n</xs:schema>\n\n\n\n\n\n\n\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/swaref.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n  Copyright (c) 2002-2004 by The Web Services-Interoperability Organization (WS-I) and \n  Certain of its Members. All Rights Reserved.\n\t\n  Notice\n  The material contained herein is not a license, either expressly or impliedly, to any \n  intellectual property owned or controlled by any of the authors or developers of this \n  material or WS-I. The material contained herein is provided on an \"AS IS\" basis and to \n  the maximum extent permitted by applicable law, this material is provided AS IS AND WITH \n  ALL FAULTS, and the authors and developers of this material and WS-I hereby disclaim all \n  other warranties and conditions, either express, implied or statutory, including, but not \n  limited to, any (if any) implied warranties, duties or conditions of  merchantability, \n  of fitness for a particular purpose, of accuracy or completeness of responses, of results, \n  of workmanlike effort, of lack of viruses, and of lack of negligence. ALSO, THERE IS NO \n  WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO \n  DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THIS MATERIAL.\n\t\n  IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THIS MATERIAL OR WS-I BE LIABLE TO ANY OTHER \n  PARTY FOR THE COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, \n  LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT, INDIRECT, OR SPECIAL DAMAGES \n  WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR \n  ANY OTHER AGREEMENT RELATING TO THIS MATERIAL, WHETHER OR NOT SUCH PARTY HAD ADVANCE \n  NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.\n\t\n  WS-I License Information\n  Use of this WS-I Material is governed by the WS-I Test License and other licenses.  Information on these \n  licenses are contained in the README.txt and ReleaseNotes.txt files.  By downloading this file, you agree \n  to the terms of these licenses.\n\t\n  How To Provide Feedback\n  The Web Services-Interoperability Organization (WS-I) would like to receive input, \n  suggestions and other feedback (\"Feedback\") on this work from a wide variety of \n  industry participants to improve its quality over time. \n\t\n  By sending email, or otherwise communicating with WS-I, you (on behalf of yourself if \n  you are an individual, and your company if you are providing Feedback on behalf of the \n  company) will be deemed to have granted to WS-I, the members of WS-I, and other parties \n  that have access to your Feedback, a non-exclusive, non-transferable, worldwide, perpetual, \n  irrevocable, royalty-free license to use, disclose, copy, license, modify, sublicense or \n  otherwise distribute and exploit in any manner whatsoever the Feedback you provide regarding \n  the work. You acknowledge that you have no expectation of confidentiality with respect to \n  any Feedback you provide. You represent and warrant that you have rights to provide this \n  Feedback, and if you are providing Feedback on behalf of a company, you represent and warrant \n  that you have the rights to provide Feedback on behalf of your company. You also acknowledge \n  that WS-I is not required to review, discuss, use, consider or in any way incorporate your \n  Feedback into future versions of its work. If WS-I does incorporate some or all of your \n  Feedback in a future version of the work, it may, but is not obligated to include your name \n  (or, if you are identified as acting on behalf of your company, the name of your company) on \n  a list of contributors to the work. If the foregoing is not acceptable to you and any company \n  on whose behalf you are acting, please do not provide any Feedback.\n\t\n  Feedback on this document should be directed to wsi-test-comments@ws-i.org. \n-->\n<xsd:schema targetNamespace=\"http://ws-i.org/profiles/basic/1.1/xsd\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> \n  <xsd:simpleType name=\"swaRef\"> \n    <xsd:restriction base=\"xsd:anyURI\"/> \n  </xsd:simpleType> \n</xsd:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/xmime200411.xsd",
    "content": "<?xml version=\"1.0\" ?>\n<!-- \n   W3C XML Schema defined in the Assigning Media Types to Binary Data in XML\n   specification\n     http://www.w3.org/TR/xml-media-types\n\n   Copyright (c) 2004 World Wide Web Consortium,\n  \n   (Massachusetts Institute of Technology, European Research Consortium for\n   Informatics and Mathematics, Keio University). All Rights Reserved. This\n   work is distributed under the W3C(r) Software License [1] in the hope that\n   it will be useful, but WITHOUT ANY WARRANTY; without even the implied\n   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  \n   [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:xmime=\"http://www.w3.org/2004/11/xmlmime\"\n           targetNamespace=\"http://www.w3.org/2004/11/xmlmime\" >\n\n<xs:attribute name=\"contentType\" type=\"xs:string\" />\n\n<xs:attribute name=\"expectedMediaType\" type=\"xs:string\" />\n\n<xs:complexType name=\"base64Binary\" >\n    <xs:simpleContent>\n        <xs:extension base=\"xs:base64Binary\" >\n            <xs:attribute ref=\"xmime:contentType\" />\n        </xs:extension>\n    </xs:simpleContent>\n</xs:complexType>\n\n<xs:complexType name=\"hexBinary\" >\n    <xs:simpleContent>\n        <xs:extension base=\"xs:hexBinary\" >\n            <xs:attribute ref=\"xmime:contentType\" />\n        </xs:extension>\n    </xs:simpleContent>\n</xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/xmime200505.xsd",
    "content": "<?xml version=\"1.0\"?>\n<!-- \n   W3C XML Schema defined in the Describing Media Content of Binary Data in XML\n   specification\n     http://www.w3.org/TR/xml-media-types\n\n   Copyright © 2005 World Wide Web Consortium,\n  \n   (Massachusetts Institute of Technology, European Research Consortium for\n   Informatics and Mathematics, Keio University). All Rights Reserved. This\n   work is distributed under the W3C® Software License [1] in the hope that\n   it will be useful, but WITHOUT ANY WARRANTY; without even the implied\n   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n  \n   [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231\n\n   $Id: xmlmime.xsd,v 1.1 2005/04/25 17:08:35 hugo Exp $\n-->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xmime=\"http://www.w3.org/2005/05/xmlmime\" targetNamespace=\"http://www.w3.org/2005/05/xmlmime\">\n\n  <xs:attribute name=\"contentType\">\n    <xs:simpleType>\n      <xs:restriction base=\"xs:string\">\n      <xs:minLength value=\"3\"/>\n      </xs:restriction>\n    </xs:simpleType>\n  </xs:attribute>\n\n  <xs:attribute name=\"expectedContentTypes\" type=\"xs:string\"/>\n\n  <xs:complexType name=\"base64Binary\">\n    <xs:simpleContent>\n        <xs:extension base=\"xs:base64Binary\">\n            <xs:attribute ref=\"xmime:contentType\"/>\n        </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n  <xs:complexType name=\"hexBinary\">\n    <xs:simpleContent>\n        <xs:extension base=\"xs:hexBinary\">\n            <xs:attribute ref=\"xmime:contentType\"/>\n        </xs:extension>\n    </xs:simpleContent>\n  </xs:complexType>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/xml.xsd",
    "content": "<?xml version='1.0'?>\n<xs:schema targetNamespace=\"http://www.w3.org/XML/1998/namespace\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xml:lang=\"en\">\n\n <xs:annotation>\n  <xs:documentation>\n   See http://www.w3.org/XML/1998/namespace.html and\n   http://www.w3.org/TR/REC-xml for information about this namespace.\n\n    This schema document describes the XML namespace, in a form\n    suitable for import by other schema documents.  \n\n    Note that local names in this namespace are intended to be defined\n    only by the World Wide Web Consortium or its subgroups.  The\n    following names are currently defined in this namespace and should\n    not be used with conflicting semantics by any Working Group,\n    specification, or document instance:\n\n    base (as an attribute name): denotes an attribute whose value\n         provides a URI to be used as the base for interpreting any\n         relative URIs in the scope of the element on which it\n         appears; its value is inherited.  This name is reserved\n         by virtue of its definition in the XML Base specification.\n\n    id   (as an attribute name): denotes an attribute whose value\n         should be interpreted as if declared to be of type ID.\n         The xml:id specification is not yet a W3C Recommendation,\n         but this attribute is included here to facilitate experimentation\n         with the mechanisms it proposes.  Note that it is _not_ included\n         in the specialAttrs attribute group.\n\n    lang (as an attribute name): denotes an attribute whose value\n         is a language code for the natural language of the content of\n         any element; its value is inherited.  This name is reserved\n         by virtue of its definition in the XML specification.\n  \n    space (as an attribute name): denotes an attribute whose\n         value is a keyword indicating what whitespace processing\n         discipline is intended for the content of the element; its\n         value is inherited.  This name is reserved by virtue of its\n         definition in the XML specification.\n\n    Father (in any context at all): denotes Jon Bosak, the chair of \n         the original XML Working Group.  This name is reserved by \n         the following decision of the W3C XML Plenary and \n         XML Coordination groups:\n\n             In appreciation for his vision, leadership and dedication\n             the W3C XML Plenary on this 10th day of February, 2000\n             reserves for Jon Bosak in perpetuity the XML name\n             xml:Father\n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>This schema defines attributes and an attribute group\n        suitable for use by\n        schemas wishing to allow xml:base, xml:lang, xml:space or xml:id\n        attributes on elements they define.\n\n        To enable this, such a schema must import this schema\n        for the XML namespace, e.g. as follows:\n        &lt;schema . . .>\n         . . .\n         &lt;import namespace=\"http://www.w3.org/XML/1998/namespace\"\n                    schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>\n\n        Subsequently, qualified reference to any of the attributes\n        or the group defined below will have the desired effect, e.g.\n\n        &lt;type . . .>\n         . . .\n         &lt;attributeGroup ref=\"xml:specialAttrs\"/>\n \n         will define a type which will schema-validate an instance\n         element with any of those attributes</xs:documentation>\n\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>In keeping with the XML Schema WG's standard versioning\n   policy, this schema document will persist at\n   http://www.w3.org/2005/08/xml.xsd.\n   At the date of issue it can also be found at\n   http://www.w3.org/2001/xml.xsd.\n   The schema document at that URI may however change in the future,\n   in order to remain compatible with the latest version of XML Schema\n   itself, or with the XML namespace itself.  In other words, if the XML\n   Schema or XML namespaces change, the version of this document at\n   http://www.w3.org/2001/xml.xsd will change\n   accordingly; the version at\n   http://www.w3.org/2005/08/xml.xsd will not change.\n  </xs:documentation>\n </xs:annotation>\n\n <xs:attribute name=\"lang\">\n  <xs:annotation>\n   <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter\n         codes as the enumerated possible values is probably never\n         going to be a realistic possibility.  See\n         RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry\n         at http://www.iana.org/assignments/lang-tag-apps.htm for\n         further information.\n\n         The union allows for the 'un-declaration' of xml:lang with\n         the empty string.</xs:documentation>\n\n  </xs:annotation>\n  <xs:simpleType>\n   <xs:union memberTypes=\"xs:language\">\n    <xs:simpleType>    \n     <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"\"/>\n     </xs:restriction>\n    </xs:simpleType>\n   </xs:union>\n\n  </xs:simpleType>\n </xs:attribute>\n\n <xs:attribute name=\"space\">\n  <xs:simpleType>\n   <xs:restriction base=\"xs:NCName\">\n    <xs:enumeration value=\"default\"/>\n    <xs:enumeration value=\"preserve\"/>\n   </xs:restriction>\n\n  </xs:simpleType>\n </xs:attribute>\n\n <xs:attribute name=\"base\" type=\"xs:anyURI\">\n  <xs:annotation>\n   <xs:documentation>See http://www.w3.org/TR/xmlbase/ for\n                     information about this attribute.</xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n \n <xs:attribute name=\"id\" type=\"xs:ID\">\n\n  <xs:annotation>\n   <xs:documentation>See http://www.w3.org/TR/xml-id/ for\n                     information about this attribute.</xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n\n <xs:attributeGroup name=\"specialAttrs\">\n  <xs:attribute ref=\"xml:base\"/>\n  <xs:attribute ref=\"xml:lang\"/>\n  <xs:attribute ref=\"xml:space\"/>\n\n </xs:attributeGroup>\n\n</xs:schema>\n"
  },
  {
    "path": "soap-legacy/src/main/resources/xsds/xop.xsd",
    "content": "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"http://www.w3.org/2004/08/xop/include\" targetNamespace=\"http://www.w3.org/2004/08/xop/include\">\n\n  <xs:element name=\"Include\" type=\"tns:Include\"/>\n  <xs:complexType name=\"Include\">\n\t<xs:sequence>\n\t  <xs:any namespace=\"##other\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t</xs:sequence>\n\t<xs:attribute name=\"href\" type=\"xs:anyURI\" use=\"required\"/>\n\t<xs:anyAttribute namespace=\"##other\"/>\n  </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "soap-server/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-server</artifactId>\n    <packaging>bundle</packaging>\n    <name>soap-server - XML based SOAP server</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-builder</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.springframework.ws</groupId>\n            <artifactId>spring-ws-core</artifactId>\n            <version>2.1.1.RELEASE</version>\n        </dependency>\n        <dependency>\n            <groupId>javax.servlet</groupId>\n            <artifactId>servlet-api</artifactId>\n            <version>2.5</version>\n            <scope>provided</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.mortbay.jetty</groupId>\n            <artifactId>jetty-embedded</artifactId>\n            <version>6.1.26</version>\n        </dependency>\n        <dependency>\n            <groupId>org.mortbay.jetty</groupId>\n            <artifactId>jetty-java5-threadpool</artifactId>\n            <version>6.1.26</version>\n        </dependency>\n\n        <dependency>\n            <groupId>com.googlecode.guava-osgi</groupId>\n            <artifactId>guava-osgi</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>commons-logging</groupId>\n            <artifactId>commons-logging</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-api</artifactId>\n            <version>1.6.6</version>\n        </dependency>\n        <dependency>\n            <groupId>org.slf4j</groupId>\n            <artifactId>slf4j-log4j12</artifactId>\n            <version>1.6.6</version>\n        </dependency>\n    </dependencies>\n\n     <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-site-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <skip>true</skip>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/OperationNotFoundException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server;\n\n/**\n * Exception thrown when the invoked binding operation is not found in the WSDL\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class OperationNotFoundException extends SoapServerException {\n    public OperationNotFoundException(String message) {\n        super(message);\n    }\n\n    public OperationNotFoundException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public OperationNotFoundException(Throwable cause) {\n        super(cause);\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/ServiceRegistrationException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server;\n\n/**\n * Exception thrown when an service registration error occurs (for example a double registration)\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class ServiceRegistrationException extends SoapServerException {\n    public ServiceRegistrationException(String message) {\n        super(message);\n    }\n\n    public ServiceRegistrationException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public ServiceRegistrationException(Throwable cause) {\n        super(cause);\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/SoapServerException.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server;\n\nimport org.reficio.ws.SoapException;\n\n/**\n * Top-level exception type thrown by SoapServer\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapServerException extends SoapException {\n    public SoapServerException(String message) {\n        super(message);\n    }\n\n    public SoapServerException(String message, Throwable cause) {\n        super(message, cause);\n    }\n\n    public SoapServerException(Throwable cause) {\n        super(cause);\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/core/SoapServer.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.core;\n\nimport org.apache.log4j.Logger;\nimport org.mortbay.jetty.AbstractConnector;\nimport org.mortbay.jetty.Handler;\nimport org.mortbay.jetty.Server;\nimport org.mortbay.jetty.nio.SelectChannelConnector;\nimport org.mortbay.jetty.security.SslSelectChannelConnector;\nimport org.mortbay.jetty.servlet.Context;\nimport org.reficio.ws.annotation.ThreadSafe;\nimport org.reficio.ws.server.ServiceRegistrationException;\nimport org.reficio.ws.server.SoapServerException;\nimport org.reficio.ws.server.endpoint.GenericContextDomEndpoint;\nimport org.reficio.ws.server.responder.RequestResponder;\nimport org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\nimport org.springframework.web.context.WebApplicationContext;\nimport org.springframework.web.context.support.GenericWebApplicationContext;\n\nimport javax.servlet.ServletContext;\nimport java.net.URI;\nimport java.net.URISyntaxException;\nimport java.net.URL;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.Properties;\n\nimport static com.google.common.base.Preconditions.checkArgument;\nimport static com.google.common.base.Preconditions.checkNotNull;\n\n/**\n * SOAP server enables the user to handle a SOAP communication on a purely XML level.\n * It supports plain HTTP as well as HTTPS communication.\n * When it comes to SOAP it supports SOAP 1.1 and 1.2\n * This class may throw an unchecked @see org.reficio.ws.server.SoapServerException\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\n@ThreadSafe\npublic final class SoapServer {\n\n    private final static Logger log = Logger.getLogger(SoapServer.class);\n\n    private Integer httpPort = SoapServerConstants.HTTP_PORT;\n    private Integer httpsPort = SoapServerConstants.HTTPS_PORT;\n    private boolean reuseAddress = SoapServerConstants.REUSE_ADDRESS;\n    private Integer connectionMaxIdleTimeInSeconds = SoapServerConstants.CONNECTION_MAX_IDLE_TIME_IN_SECONDS;\n    private Integer acceptorThreads = SoapServerConstants.ACCEPTOR_THREADS_COUNT;\n    private Integer coreThreads = SoapServerConstants.CORE_THREADS_COUNT;\n    private Integer maxThreads = SoapServerConstants.MAX_THREADS_COUNT;\n    private Integer threadKeepAliveTimeInSeconds = SoapServerConstants.THREAD_KEEP_ALIVE_TIME_IN_SECONDS;\n\n    private URL keyStoreUrl;\n    private String keyStoreType = SoapServerConstants.KEYSTORE_TYPE;\n    private String keyStorePassword;\n\n    // helper attributes\n    private boolean http;\n    private boolean https;\n\n    // runtime attributes\n    private ClassPathXmlApplicationContext context;\n    private Server server;\n    private GenericContextDomEndpoint endpoint;\n\n    // ----------------------------------------------------------------\n    // PUBLIC API\n    // ----------------------------------------------------------------\n\n    /**\n     * Starts the SOAP server\n     */\n    public void start() {\n        try {\n            server.start();\n        } catch (Exception ex) {\n            throw new SoapServerException(ex);\n        }\n    }\n\n    public boolean isRunning() {\n        return server.isRunning();\n    }\n\n    public boolean isStarted() {\n        return server.isStarted();\n    }\n\n    public boolean isStarting() {\n        return server.isStarting();\n    }\n\n    public boolean isStopping() {\n        return server.isStopping();\n    }\n\n    public boolean isStopped() {\n        return server.isStopped();\n    }\n\n    public boolean isNotRunning() {\n        return isStopping() || isStopped();\n    }\n\n    public boolean isFailed() {\n        return server.isFailed();\n    }\n\n    /**\n     * Stops the SOAP server (does not release the allocated resources)\n     */\n    public void stop() {\n        try {\n            server.stop();\n        } catch (Exception ex) {\n            throw new SoapServerException(ex);\n        }\n    }\n\n    /**\n     * Stops the SOAP server and deallocates resources\n     */\n    public void destroy() {\n        stop();\n        context.close();\n    }\n\n    /**\n     * Registers responder under specified context path. Only one responder may be registered under one context path.\n     *\n     * @param contextPath\n     * @param responder\n     * @throws ServiceRegistrationException thrown if a registration error occurs - for example duplicate responder registered\n     */\n    public void registerRequestResponder(String contextPath, RequestResponder responder) throws ServiceRegistrationException {\n        checkNotNull(contextPath, \"contextPath cannot be null\");\n        checkNotNull(responder, \"responder cannot be null\");\n        validateUrl(contextPath);\n        log.info(String.format(\"Registering responder [%s] under the url [%s]\", responder, getUrl(contextPath)));\n        endpoint.registerRequestResponder(contextPath, responder);\n    }\n\n    /**\n     * Unregisters responder from the specified context path\n     *\n     * @param contextPath\n     * @throws ServiceRegistrationException thrown if an unregistration error occurs - for example no responder registerd\n     */\n    public void unregisterRequestResponder(String contextPath) throws ServiceRegistrationException {\n        checkNotNull(contextPath, \"contextPath cannot be null\");\n        log.info(String.format(\"Unregistering responder from the url [%s]\", getUrl(contextPath)));\n        endpoint.unregisterRequestResponder(contextPath);\n    }\n\n    private String getUrl(String contextPath) {\n        String format = String.format(\"%s://localhost:%d%s\", http ? \"http\" : \"https\", http ? httpPort : httpsPort, contextPath);\n        return format;\n    }\n\n    private void validateUrl(String contextPath) {\n        checkArgument(contextPath.startsWith(\"/\"), \"contextPath has to begin with a slash\");\n        String url = getUrl(contextPath);\n        try {\n            new URI(url);\n        } catch (URISyntaxException e) {\n            throw new IllegalArgumentException(String.format(\"URL with context path is malformed [%s]\", url), e);\n        }\n    }\n\n    /**\n     * @return a list of registered context paths\n     */\n    public List<String> getRegisteredContextPaths() {\n        return Collections.list(endpoint.getRegisteredContextPaths());\n    }\n\n    // ----------------------------------------------------------------\n    // INTERNAL API\n    // ----------------------------------------------------------------\n    private void configure() {\n        configureParentContext();\n        configureConnectors();\n        configureWebContext();\n    }\n\n    private void configureParentContext() {\n        PropertyPlaceholderConfigurer config = new PropertyPlaceholderConfigurer();\n        config.setProperties(buildProperties());\n        context = new ClassPathXmlApplicationContext();\n        context.addBeanFactoryPostProcessor(config);\n        context.setConfigLocation(SoapServerConstants.SPRING_CONTEXT_LOCATION);\n        context.refresh();\n        context.registerShutdownHook();\n        server = context.getBean(SoapServerConstants.SERVER_BEAN_NAME, Server.class);\n    }\n\n    private void configureConnectors() {\n        if (http) {\n            SelectChannelConnector httpConnector = context.getBean(SoapServerConstants.CONNECTOR_BEAN_NAME, SelectChannelConnector.class);\n            configureHttpConnector(httpConnector);\n            server.addConnector(httpConnector);\n        }\n        if (https) {\n            checkNotNull(keyStoreUrl, \"keyStore has to be set in https mode\");\n            SslSelectChannelConnector httpsConnector = context.getBean(SoapServerConstants.SSL_CONNECTOR_BEAN_NAME, SslSelectChannelConnector.class);\n            configureHttpsConnector(httpsConnector);\n            server.addConnector(httpsConnector);\n        }\n    }\n\n    private SelectChannelConnector configureHttpConnector(SelectChannelConnector connector) {\n        configureGenericConnector(connector);\n        connector.setReuseAddress(reuseAddress);\n        connector.setPort(httpPort);\n        return connector;\n    }\n\n    private SslSelectChannelConnector configureHttpsConnector(SslSelectChannelConnector connector) {\n        configureGenericConnector(connector);\n        connector.setReuseAddress(reuseAddress);\n        connector.setPort(httpsPort);\n        connector.setKeystore(keyStoreUrl.toString());\n        connector.setKeystoreType(keyStoreType);\n        connector.setKeyPassword(keyStorePassword);\n        return connector;\n    }\n\n    private AbstractConnector configureGenericConnector(AbstractConnector connector) {\n        connector.setAcceptors(acceptorThreads);\n        connector.setMaxIdleTime(connectionMaxIdleTimeInSeconds * SoapServerConstants.SECONDS_TO_MILLIS_RATIO);\n        return connector;\n    }\n\n    private void configureWebContext() {\n        ServletContext servletContext = getServletContext();\n        GenericWebApplicationContext webContext = new GenericWebApplicationContext();\n        webContext.setServletContext(servletContext);\n        webContext.setParent(context);\n        webContext.refresh();\n        servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, webContext);\n        if (webContext != null) {\n            endpoint = webContext.getBean(SoapServerConstants.ENDPOINT_BEAN_NAME, GenericContextDomEndpoint.class);\n        }\n    }\n\n    private ServletContext getServletContext() {\n        for (Handler handler : server.getHandlers()) {\n            if (handler instanceof Context) {\n                return ((Context) handler).getServletContext();\n            }\n        }\n        return null;\n    }\n\n    private Properties buildProperties() {\n        Properties properties = new Properties();\n        properties.setProperty(SoapServerConstants.CORE_POOL_SIZE_PROP_KEY, coreThreads.toString());\n        properties.setProperty(SoapServerConstants.MAX_POOL_SIZE_PROP_KEY, maxThreads.toString());\n        properties.setProperty(SoapServerConstants.KEEP_ALIVE_PROP_KEY, threadKeepAliveTimeInSeconds.toString());\n        return properties;\n    }\n\n    // ----------------------------------------------------------------\n    // BUILDER API\n    // ----------------------------------------------------------------\n    private SoapServer() {\n    }\n\n    /**\n     * Builder to construct a properly populated SoapServer\n     */\n    public static class Builder {\n        private final SoapServer server = new SoapServer();\n\n        /**\n         * @param value Sets the http port on which the server listens. Has to be not negative.\n         * @return builder\n         */\n        public Builder httpPort(int value) {\n            checkArgument(value >= 0);\n            server.http = true;\n            server.httpPort = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the https port on which the server listens. Has to be not negative.\n         * @return builder\n         */\n        public Builder httpsPort(int value) {\n            checkArgument(value >= 0);\n            server.https = true;\n            server.httpsPort = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the connection max idle time in seconds. Has to be not negative.\n         * @return builder\n         */\n        public Builder connectionMaxIdleTimeInSeconds(int value) {\n            checkArgument(value >= 0);\n            server.connectionMaxIdleTimeInSeconds = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the number of http server connector acceptor threads. Has to be positive.\n         * @return builder\n         */\n        public Builder acceptorThreads(int value) {\n            checkArgument(value > 0);\n            server.acceptorThreads = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the number of http server core threads. Has to be positive.\n         * @return builder\n         */\n        public Builder coreThreads(int value) {\n            checkArgument(value > 0);\n            server.coreThreads = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the maximal number of threads that the http server may spawn. Has to be positive.\n         * @return builder\n         */\n        public Builder maxThreads(int value) {\n            checkArgument(value > 0);\n            server.maxThreads = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the value of thread keep alive in seconds. Has to be not negative.\n         * @return builder\n         */\n        public Builder threadKeepAliveTimeInSeconds(int value) {\n            checkArgument(value >= 0);\n            server.threadKeepAliveTimeInSeconds = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the URL of the keystore to use in the SOAP communication. Null is not accepted. If there's more than\n         *              one certificate in the keystore it is undefined which of them will be used\n         * @return builder\n         */\n        public Builder keyStoreUrl(URL value) {\n            checkNotNull(value);\n            server.keyStoreUrl = value;\n            return this;\n        }\n\n        /**\n         * @param value Specifies the type of the keystore. Null is not accepted.\n         * @return builder\n         */\n        public Builder keyStoreType(String value) {\n            checkNotNull(value);\n            server.keyStoreType = value;\n            return this;\n        }\n\n        /**\n         * @param value keystore password. Null is accepted.\n         * @return builder\n         */\n        public Builder keyStorePassword(String value) {\n            server.keyStorePassword = value;\n            return this;\n        }\n\n        /**\n         * @param value Sets the reuseAddress on the underlying @see java.net.Socket\n         * @return builder\n         */\n        public Builder reuseAddress(boolean value) {\n            server.reuseAddress = value;\n            return this;\n        }\n\n        /**\n         * Builds populated SoapServer instance\n         *\n         * @return builder\n         */\n        public SoapServer build() {\n            server.configure();\n            return server;\n        }\n    }\n\n    /**\n     * @return a new instance of a SoapServer Builder\n     */\n    public static Builder builder() {\n        return new Builder();\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/core/SoapServerConstants.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.core;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\nfinal class SoapServerConstants {\n\n    private SoapServerConstants() {\n    }\n\n    public static final int HTTP_PORT = 8080;\n    public static final int HTTPS_PORT = 8443;\n    public static final int CONNECTION_MAX_IDLE_TIME_IN_SECONDS = 60;\n    public static final int ACCEPTOR_THREADS_COUNT = 4;\n    public static final int CORE_THREADS_COUNT = 8;\n    public static final int MAX_THREADS_COUNT = 16;\n    public static final int THREAD_KEEP_ALIVE_TIME_IN_SECONDS = 60;\n    public static final String KEYSTORE_TYPE = \"JKS\";\n    public static final boolean REUSE_ADDRESS = true;\n\n    public static final String SPRING_CONTEXT_LOCATION = \"classpath:soap-server.xml\";\n    public static final String SERVER_BEAN_NAME = \"jettyServer\";\n    public static final String CONNECTOR_BEAN_NAME = \"connector\";\n    public static final String SSL_CONNECTOR_BEAN_NAME = \"sslConnector\";\n    public static final String ENDPOINT_BEAN_NAME = \"endpoint\";\n\n    public static final String CORE_POOL_SIZE_PROP_KEY = \"core.pool.size\";\n    public static final String MAX_POOL_SIZE_PROP_KEY = \"max.pool.size\";\n    public static final String KEEP_ALIVE_PROP_KEY = \"keep.alive.time\";\n\n    public static final int SECONDS_TO_MILLIS_RATIO = 1000;\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/core/SoapServerFactory.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.core;\n\nimport org.reficio.ws.server.responder.RequestResponder;\n\nimport java.net.URL;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport static com.google.common.base.Preconditions.checkNotNull;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapServerFactory {\n\n    private Integer httpPort;\n    private Integer httpsPort;\n    private Boolean reuseAddress;\n    private Integer connectionMaxIdleTimeInSeconds;\n    private Integer acceptorThreads;\n    private Integer coreThreads;\n    private Integer maxThreads;\n    private Integer threadKeepAliveTimeInSeconds;\n\n    private URL keyStoreUrl;\n    private String keyStoreType;\n    private String keyStorePassword;\n    private Map<String, RequestResponder> responders;\n\n    public void setHttpPort(Integer value) {\n        checkNotNull(value);\n        this.httpPort = value;\n    }\n\n    public void setHttpsPort(Integer value) {\n        checkNotNull(value);\n        this.httpsPort = value;\n    }\n\n    public void setConnectionMaxIdleTimeInSeconds(Integer value) {\n        checkNotNull(value);\n        this.connectionMaxIdleTimeInSeconds = value;\n    }\n\n    public void setAcceptorThreads(Integer value) {\n        checkNotNull(value);\n        this.acceptorThreads = value;\n    }\n\n    public void setCoreThreads(Integer value) {\n        checkNotNull(value);\n        this.coreThreads = value;\n    }\n\n    public void setMaxThreads(Integer value) {\n        checkNotNull(value);\n        this.maxThreads = value;\n    }\n\n    public void setThreadKeepAliveTimeInSeconds(Integer value) {\n        checkNotNull(value);\n        this.threadKeepAliveTimeInSeconds = value;\n    }\n\n    public void setKeyStoreUrl(URL value) {\n        checkNotNull(value);\n        this.keyStoreUrl = value;\n    }\n\n    public void setKeyStoreType(String value) {\n        checkNotNull(value);\n        this.keyStoreType = value;\n    }\n\n    public void setKeyStorePassword(String value) {\n        this.keyStorePassword = value;\n    }\n\n    public void setReuseAddress(Boolean value) {\n        checkNotNull(value);\n        this.reuseAddress = value;\n    }\n\n    public void setResponders(Map<String, RequestResponder> responders) {\n        checkNotNull(responders);\n        this.responders = new HashMap<String, RequestResponder>(responders);\n    }\n\n    public SoapServer create() {\n        SoapServer.Builder builder = SoapServer.builder();\n\n        configureConnection(builder);\n        configureThreadPools(builder);\n        configureTimeouts(builder);\n        configureKeyStore(builder);\n\n        SoapServer server = builder.build();\n        configureResponders(server);\n        return server;\n    }\n\n    private void configureResponders(SoapServer server) {\n        for(Map.Entry<String, RequestResponder> entry : responders.entrySet()) {\n            server.registerRequestResponder(entry.getKey(), entry.getValue());\n        }\n    }\n\n    private void configureThreadPools(SoapServer.Builder builder) {\n        if (acceptorThreads != null) {\n            builder.acceptorThreads(acceptorThreads);\n        }\n        if (coreThreads != null) {\n            builder.coreThreads(coreThreads);\n        }\n        if (maxThreads != null) {\n            builder.maxThreads(maxThreads);\n        }\n    }\n\n    private void configureTimeouts(SoapServer.Builder builder) {\n        if (connectionMaxIdleTimeInSeconds != null) {\n            builder.connectionMaxIdleTimeInSeconds(connectionMaxIdleTimeInSeconds);\n        }\n        if (threadKeepAliveTimeInSeconds != null) {\n            builder.threadKeepAliveTimeInSeconds(threadKeepAliveTimeInSeconds);\n        }\n    }\n\n    private void configureConnection(SoapServer.Builder builder) {\n        if (httpPort != null) {\n            builder.httpPort(httpPort);\n        }\n        if (httpsPort != null) {\n            builder.httpsPort(httpsPort);\n        }\n        if (reuseAddress != null) {\n            builder.reuseAddress(reuseAddress);\n        }\n    }\n\n    private void configureKeyStore(SoapServer.Builder builder) {\n        if (keyStoreUrl != null) {\n            builder.keyStoreUrl(keyStoreUrl);\n        }\n        if (keyStoreType != null) {\n            builder.keyStoreType(keyStoreType);\n        }\n        builder.keyStorePassword(keyStorePassword);\n    }\n\n    public static void main(String[] args) {\n        SoapServerFactory f = new SoapServerFactory();\n        f.setHttpPort(9999);\n        SoapServer s = f.create();\n\n        s.start();\n\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/endpoint/ContextEndpointAdapter.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.endpoint;\n\nimport org.springframework.ws.context.MessageContext;\nimport org.springframework.ws.server.endpoint.adapter.PayloadEndpointAdapter;\n\nimport javax.xml.transform.Source;\n\n/**\n * It is an extension of the @see org.springframework.ws.server.endpoint.adapter.PayloadEndpointAdapter.\n * It is implemented in such a way that expects the ContextPayloadEndpoint which expects the context of the message in the\n * invoke method. This adapter provides this message context to the endpoint. It also sets the reply in the context by populating\n * the GenericSoapMessage - which contains the whole SOAP message (envelope = header + body).\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class ContextEndpointAdapter extends PayloadEndpointAdapter {\n\n    @Override\n    public void invoke(MessageContext messageContext, Object endpoint) {\n        ContextPayloadEndpoint payloadEndpoint = (ContextPayloadEndpoint) endpoint;\n        Source responseSource = payloadEndpoint.invoke(messageContext);\n        GenericSoapMessage message = new GenericSoapMessage(responseSource);\n        messageContext.setResponse(message);\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/endpoint/ContextPayloadEndpoint.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.endpoint;\n\nimport org.springframework.ws.context.MessageContext;\nimport org.springframework.ws.server.endpoint.PayloadEndpoint;\n\nimport javax.xml.transform.Source;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface ContextPayloadEndpoint extends PayloadEndpoint {\n\n    /**\n     * Invokes the endpoint with the given request and possibly returns a response.\n     * It extends the functionality of a @see org.springframework.ws.server.endpoint.PayloadEnpoint\n     * by decorating the invocation of the invoke method -> it get the context of the message as an argument\n     * enabling the user to control the invocation in a more detailed way.\n     *\n     * @param messageContext the context of the message containing the request and (possible response)\n     * @return the payload of the response message, may be <code>null</code> to indicate no response\n     * @throws Exception if an exception occurs\n     */\n    Source invoke(MessageContext messageContext);\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/endpoint/GenericContextDomEndpoint.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.endpoint;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.reficio.ws.server.ServiceRegistrationException;\nimport org.reficio.ws.server.SoapServerException;\nimport org.reficio.ws.server.responder.RequestResponder;\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.web.context.request.ServletRequestAttributes;\nimport org.springframework.ws.context.MessageContext;\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.xml.transform.Source;\nimport java.util.Enumeration;\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n * Implementation of the ContextPayloadEndpoint and AbstractDomPayloadEndpoint. It handles all SOAP requests.\n * It checks the context path of the request and then gets the responder registered under that context path.\n * If an responder exists it is invoked passing the message context to it, if it does not exist an exception\n * is thrown.\n * It also contains the API to register, unregister responders and get all responders registered in this endpoint.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class GenericContextDomEndpoint implements ContextPayloadEndpoint, InitializingBean {\n\n    private final static Log log = LogFactory.getLog(GenericContextDomEndpoint.class);\n\n    /**\n     * Map containing all registered context paths and request responders\n     */\n    private final ConcurrentHashMap<String, RequestResponder> services;\n\n    public GenericContextDomEndpoint() {\n        this.services = new ConcurrentHashMap<String, RequestResponder>();\n    }\n\n    /**\n     * Implementation of the invoke message that gets the MessageContext. It enables the responders to the the whole\n     * SOAP envelope (and not only the request element);\n     * The responders are invoked with that context. If there's no responder an exception is thrown.\n     */\n    @Override\n    public Source invoke(MessageContext messageContext) {\n        RequestResponder requestResponder = getRequestResponderBySessionRequestContextPath();\n        if (noResponderForRequestFound(requestResponder)) {\n            handleNoResponderFault();\n        }\n        SoapMessage msg = (SoapMessage) messageContext.getRequest();\n        Source response = requestResponder.respond(msg);\n        return response;\n    }\n\n    private RequestResponder getRequestResponderBySessionRequestContextPath() {\n        HttpServletRequest htpServletRequest = getHttpServletRequest();\n        return getRequestResponderByRequestContextPath(htpServletRequest.getRequestURI());\n    }\n\n    private RequestResponder getRequestResponderByRequestContextPath(String contextPath) {\n        return services.get(contextPath);\n    }\n\n    private boolean noResponderForRequestFound(RequestResponder responder) {\n        if (responder == null) {\n            return true;\n        }\n        return false;\n    }\n\n    private Source handleNoResponderFault() {\n        String msg = String.format(\"There is no service under the requested context path [%s]\", getRequestContextPath());\n        throw new SoapServerException(msg);\n    }\n\n    private HttpServletRequest getHttpServletRequest() {\n        return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();\n    }\n\n    private String getRequestContextPath() {\n        return getHttpServletRequest().getRequestURI();\n    }\n\n    /**\n     * Enables to register a responder under the specified context path\n     *\n     * @param contextPath to be used by the responder\n     * @param responder   request responder\n     * @throws ServiceRegistrationException thrown if error occurs, for example path is already taken\n     */\n    public void registerRequestResponder(String contextPath, RequestResponder responder) throws ServiceRegistrationException {\n        if (services.putIfAbsent(contextPath, responder) != null) {\n            throw new ServiceRegistrationException(String.format(\"Specified context path [%s] is already taken\", contextPath));\n        }\n    }\n\n    /**\n     * Unregisters the responder from the specified context path\n     *\n     * @param contextPath context path from which the responder should be removed\n     * @throws ServiceRegistrationException thrown if error occurs, for example no service under the specified path\n     */\n    public void unregisterRequestResponder(String contextPath) throws ServiceRegistrationException {\n        if (services.remove(contextPath) == null) {\n            throw new ServiceRegistrationException(String.format(\"There was no service under the specified context path [%s]\", contextPath));\n        }\n    }\n\n    /**\n     * @return Returns an enumeration of the taken context paths\n     */\n    public Enumeration<String> getRegisteredContextPaths() {\n        return services.keys();\n    }\n\n    @Override\n    public void afterPropertiesSet() {\n        log.info(\"Generic SOAP endpoint initialized\");\n    }\n\n    /**\n     * Empty method included here to be compliant with the PayloadEndpoint.\n     * Not used here as it does not enable the user to get the whole SOAP envelope.\n     */\n    @Override\n    public Source invoke(Source request) throws Exception {\n        throw new SoapServerException(\"This method is not implemented - it SHOULD NOT be used.\");\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/endpoint/GenericEndpointMapping.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.endpoint;\n\nimport org.springframework.ws.context.MessageContext;\nimport org.springframework.ws.server.endpoint.mapping.AbstractEndpointMapping;\n\n/**\n * Endpoint mapping that always invokes the generic endpoint\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class GenericEndpointMapping extends AbstractEndpointMapping {\n\n    /**\n     * Generic endpoint that handles all invocations\n     */\n    private ContextPayloadEndpoint genericEndpoint;\n\n    @Override\n    protected Object getEndpointInternal(MessageContext messageContext) {\n        return genericEndpoint;\n    }\n\n    public ContextPayloadEndpoint getGenericEndpoint() {\n        return genericEndpoint;\n    }\n\n    public void setGenericEndpoint(ContextPayloadEndpoint genericEndpoint) {\n        this.genericEndpoint = genericEndpoint;\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/endpoint/GenericSoapMessage.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.endpoint;\n\nimport org.reficio.ws.common.XmlUtils;\nimport org.reficio.ws.server.SoapServerException;\nimport org.springframework.ws.WebServiceMessage;\n\nimport javax.xml.transform.Result;\nimport javax.xml.transform.Source;\nimport java.io.IOException;\nimport java.io.OutputStream;\nimport java.io.OutputStreamWriter;\nimport java.io.Writer;\nimport java.nio.charset.Charset;\n\n/**\n * Implementation of a generic WebServiceMessage that contains the whole envelope in the source (envelope = header + body).\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class GenericSoapMessage implements WebServiceMessage {\n\n    /**\n     * Source containing the whole SOAP envelope (envelope = header + body).\n     */\n    private final Source source;\n\n    public GenericSoapMessage(Source source) {\n        this.source = source;\n    }\n\n    @Override\n    public Source getPayloadSource() {\n        return source;\n    }\n\n    @Override\n    public Result getPayloadResult() {\n        throw new SoapServerException(\"This method is not implemented - it SHOULD NOT be used.\");\n    }\n\n    @Override\n    public void writeTo(OutputStream outputStream) throws IOException {\n        Writer writer = new OutputStreamWriter(outputStream, Charset.forName(\"UTF-8\"));\n        String message = XmlUtils.sourceToXmlString(source);\n        writer.write(message);\n        writer.flush();\n        writer.close();\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/matcher/AggregatingVisitor.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.matcher;\n\nimport java.util.HashSet;\nimport java.util.Set;\n\n/**\n * Abstract visitor that contains convenience methods to store and retrieve results of a generic-type\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic abstract class AggregatingVisitor<T> implements BindingOperationVisitor {\n\n    private Set<T> results = new HashSet<T>();\n\n    /**\n     * Stores a result\n     * @param result result to store\n     */\n    public void addResult(T result) {\n        results.add(result);\n    }\n\n    /**\n     * Returns a result if only one was found\n     * @return found unique result\n     */\n    public T getUniqueResult() {\n        // return if only one unique result was found\n        if(results.size() == 1) {\n            return results.iterator().next();\n        }\n        return null;\n    }\n\n    /**\n     * Returns all found results\n     * @return Returns all found results\n     */\n    public Set<T> getResults() {\n        return new HashSet<T>(results);\n    }\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/matcher/BindingOperationVisitor.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.matcher;\n\nimport javax.wsdl.BindingOperation;\n\n/**\n * Visitor of a BindingOperation\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface BindingOperationVisitor {\n    /**\n     * Visits a BindingOperation\n     * @param operation operation to visit\n     */\n    void visit(BindingOperation operation);\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/matcher/SoapOperationMatcher.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.matcher;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.reficio.ws.builder.core.SoapUtils;\nimport org.reficio.ws.common.XmlUtils;\nimport org.reficio.ws.legacy.SoapLegacyFacade;\nimport org.reficio.ws.server.OperationNotFoundException;\nimport org.springframework.ws.soap.SoapMessage;\nimport org.w3c.dom.Node;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.wsdl.OperationType;\nimport javax.wsdl.Part;\nimport javax.xml.namespace.QName;\nimport javax.xml.transform.dom.DOMSource;\nimport java.util.Collection;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * Matches SOAP message to the binding operation.\n * Tries to match a SOAP message to a binding operation using the following mechanisms:\n * - SOAP Action mapping\n * - RCP bindings are matched using single top-level tag with the name of the invoked operation\n * - Document bindings are matched by input types and then by input names\n * <p/>\n * Thanks to Spring SOAPAction in both SOAP versions is treated transparently.\n * <p/>\n * Resources about SOAP-Action mystery in SOAP 1.1:\n * http://ws-rx.blogspot.com/2006/01/web-services-design-tips-soapaction.html\n * http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528\n * http://www.oreillynet.com/xml/blog/2002/11/unraveling_the_mystery_of_soap.html\n * http://damithakumarage.wordpress.com/2008/02/12/soap-action-and-addressing-action/\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapOperationMatcher {\n\n    protected final Binding binding;\n    protected final boolean rpc;\n\n    public SoapOperationMatcher(Binding binding) {\n        this.binding = binding;\n        this.rpc = SoapLegacyFacade.isRpc(binding);\n    }\n\n    /**\n     * @return returns true if the binding is an RPC binding\n     */\n    protected boolean isRpc() {\n        return rpc;\n    }\n\n    /**\n     * @return returns true if the binding is an Document binding\n     */\n    protected boolean isDocument() {\n        return isRpc() == false;\n    }\n\n    /**\n     * Matches the SoapMessage to an binding operation\n     * <p/>\n     * Tries to match using the following mechanisms:\n     * - SOAP Action mapping\n     * - RCP bindings are matched using single top-level tag with the name of the invoked operation\n     * - Document bindings are matched by input types and then by input names\n     * <p/>\n     *\n     * @param message message passed by the SOAP client\n     * @return the BindingOperation matched to the message\n     * @throws org.reficio.ws.server.OperationNotFoundException\n     *          if operation not found in the binding\n     */\n    public BindingOperation getInvokedOperation(SoapMessage message) throws OperationNotFoundException {\n        // SOAP action mapping - cheapest and fastest as no request analysis is required\n        BindingOperation invokedOperation = getOperationBySoapAction(message);\n        if (invokedOperation != null) {\n            return invokedOperation;\n        }\n        Set<Node> rootNodes = XmlUtils.getRootNodes((DOMSource) message.getPayloadSource());\n        if (isRpc()) {\n            // rpc-type requests always contain single top-level tag with invoked operation\n            invokedOperation = getOperationByRootQName(rootNodes);\n            if (invokedOperation != null) {\n                return invokedOperation;\n            }\n        } else {\n            // match by types of input arguments - if two operation defined with the same argument types\n            //  unable to distinguish\n            invokedOperation = getOperationByInputTypes(rootNodes);\n            if (invokedOperation != null) {\n                return invokedOperation;\n            }\n            // malformed services - rare but possible - if two operation defined with the same argument names\n            //  unable to distinguish\n            invokedOperation = getOperationByInputNames(rootNodes);\n            if (invokedOperation != null) {\n                return invokedOperation;\n            }\n        }\n        throw new OperationNotFoundException(\"Cannot match a SOAP operation to the given SOAP request\");\n    }\n\n\n    private BindingOperation getOperationBySoapAction(SoapMessage message) {\n        final String soapActionToMatch = SoapUtils.normalizeSoapAction(message.getSoapAction());\n        // optimization - if no soap action skip the visitor\n        if (StringUtils.isBlank(soapActionToMatch)) {\n            return null;\n        }\n        AggregatingVisitor<BindingOperation> visitor = new AggregatingVisitor<BindingOperation>() {\n            @Override\n            public void visit(BindingOperation operation) {\n                String soapAction = SoapUtils.normalizeSoapAction(SoapUtils.getSOAPActionUri(operation));\n                if (soapAction.equals(soapActionToMatch)) {\n                    addResult(operation);\n                }\n            }\n        };\n        visitOperation(visitor);\n        return visitor.getUniqueResult();\n    }\n\n    private BindingOperation getOperationByRootQName(Set<Node> rootNodes) throws OperationNotFoundException {\n        // check if only one root node exists\n        if (rootNodes.isEmpty() || rootNodes.size() > 1) {\n            throw new OperationNotFoundException(\"No unique top-level node containing the operation name in the rpc request.\");\n        }\n        QName root = XmlUtils.nodeToQName(rootNodes.iterator().next());\n        return matchElementNameToOperationName(root);\n    }\n\n    /**\n     * rpc-style -> operation name is always encoded in the request\n     */\n    private BindingOperation matchElementNameToOperationName(final QName elementName) {\n        AggregatingVisitor<BindingOperation> visitor = new AggregatingVisitor<BindingOperation>() {\n            @Override\n            public void visit(BindingOperation operation) {\n                if (operation.getOperation().getName().equals(elementName.getLocalPart())) {\n                    addResult(operation);\n                }\n            }\n        };\n        visitOperation(visitor);\n        return visitor.getUniqueResult();\n    }\n\n    /**\n     * Last matching mechanism ->\n     * When a non ws-compliant document-literal service specifies wsdl:part using the type instead of the element tag\n     * Resources:\n     * http://stackoverflow.com/questions/1172118/what-is-the-difference-between-type-and-element-in-wsdl\n     * http://www.xfront.com/ElementVersusType.html\n     * http://www.xfront.com/GlobalVersusLocal.html !!!\n     *\n     * @param rootNodes root nodes of the request\n     * @return operation matched\n     */\n    @SuppressWarnings(\"unchecked\")\n    private BindingOperation getOperationByInputTypes(final Set<Node> rootNodes) {\n        AggregatingVisitor<BindingOperation> visitor = new AggregatingVisitor<BindingOperation>() {\n            @Override\n            public void visit(BindingOperation operation) {\n                Collection<Part> expectedParts = operation.getOperation().getInput().getMessage().getParts().values();\n                Set<QName> expectedTypes = new HashSet<QName>();\n                for (Part part : expectedParts) {\n                    expectedTypes.add(part.getElementName());\n                }\n                Set<QName> receivedTypes = XmlUtils.getNodeTypes(rootNodes);\n                if (expectedTypes.equals(receivedTypes)) {\n                    addResult(operation);\n                } else if (expectedParts.isEmpty() && receivedTypes.size() == 1) {\n                    // check the case when pseudo input name was sent when no input was expected and got one element\n                    QName receivedType = receivedTypes.toArray(new QName[receivedTypes.size()])[0];\n                    String namespaceUri = operation.getOperation().getInput().getMessage().getQName().getNamespaceURI();\n                    String name = operation.getOperation().getName();\n                    QName pseudoInputName = new QName(namespaceUri, name);\n                    if (pseudoInputName.equals(receivedType)) {\n                        addResult(operation);\n                    }\n                }\n            }\n        };\n        visitOperation(visitor);\n        return visitor.getUniqueResult();\n    }\n\n    /**\n     * document style service -> there is not encoded operation name - matching based on the input style\n     *\n     * @param rootNodes root nodes of the request\n     * @return operation matched\n     */\n    @SuppressWarnings(\"unchecked\")\n    private BindingOperation getOperationByInputNames(final Set<Node> rootNodes) {\n        AggregatingVisitor<BindingOperation> visitor = new AggregatingVisitor<BindingOperation>() {\n            @Override\n            public void visit(BindingOperation operation) {\n                Set<String> expectedNames = operation.getOperation().getInput().getMessage().getParts().keySet();\n                Set<String> receivedNames = XmlUtils.getNodeNames(rootNodes);\n                if (receivedNames.equals(expectedNames)) {\n                    addResult(operation);\n                }\n            }\n        };\n        visitOperation(visitor);\n        return visitor.getUniqueResult();\n    }\n\n    @SuppressWarnings(\"unchecked\")\n    private <T extends BindingOperationVisitor> T visitOperation(T visitor) {\n        for (BindingOperation operation : (List<BindingOperation>) binding.getBindingOperations()) {\n            try {\n                visitor.visit(operation);\n            } catch (NullPointerException ex) {\n                // double-check in case of malformed WSDL's\n            }\n        }\n        return visitor;\n    }\n\n    public boolean isRequestResponseOperation(BindingOperation operation) {\n        // return operation.getBindingOutput() != null && operation.getBindingOutput().getName() != null;\n        return operation.getOperation().getStyle().equals(OperationType.REQUEST_RESPONSE);\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/protocol/GenericSoapMessageFactory.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.protocol;\n\nimport org.springframework.beans.factory.InitializingBean;\nimport org.springframework.web.context.request.RequestAttributes;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.ws.soap.SoapMessage;\nimport org.springframework.ws.soap.SoapMessageFactory;\nimport org.springframework.ws.soap.SoapVersion;\nimport org.springframework.ws.soap.saaj.SaajSoapMessageFactory;\nimport org.springframework.ws.transport.TransportInputStream;\n\nimport java.io.IOException;\nimport java.io.InputStream;\n\n/**\n * SOAP message factory that enables the exposition of a SOAP endpoint using both SOAP 1.1 and SOAP 1.2 versions.\n * It uses the SoapProtocolChooser to check which version of SOAP is used.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class GenericSoapMessageFactory implements SoapMessageFactory, InitializingBean {\n\n    private static final String REQUEST_CONTEXT_ATTRIBUTE = \"GenericSoapMessageFactory\";\n\n    /**\n     * Factory for SOAP 1.1 messages\n     */\n    private final SaajSoapMessageFactory soap11;\n    /**\n     * Factory for SOAP 1.2 messages\n     */\n    private final SaajSoapMessageFactory soap12;\n    /**\n     * Chooses the version of SOAP protocol\n     */\n    private SoapProtocolChooser soapProtocolChooser;\n\n    public GenericSoapMessageFactory() {\n        this.soap11 = new SaajSoapMessageFactory();\n        this.soap12 = new SaajSoapMessageFactory();\n        this.soapProtocolChooser = new SimpleSoapProtocolChooser();\n    }\n\n    private void setMessageFactoryForRequestContext(SaajSoapMessageFactory factory) {\n        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();\n        attributes.setAttribute(REQUEST_CONTEXT_ATTRIBUTE, factory, RequestAttributes.SCOPE_REQUEST);\n    }\n\n    private SaajSoapMessageFactory getMessageFactoryForRequestContext() {\n        RequestAttributes attributes = RequestContextHolder.getRequestAttributes();\n        return (SaajSoapMessageFactory) attributes.getAttribute(REQUEST_CONTEXT_ATTRIBUTE,\n                RequestAttributes.SCOPE_REQUEST);\n    }\n\n    public void setSoapVersion(SoapVersion version) {\n        // ignore this, it will be set automatically\n    }\n\n    public void setSoapProtocolChooser(SoapProtocolChooser soapProtocolChooser) {\n        this.soapProtocolChooser = soapProtocolChooser;\n    }\n\n    private void configureFactory(SaajSoapMessageFactory factory, SoapVersion version) {\n        factory.setSoapVersion(version);\n        factory.afterPropertiesSet();\n    }\n\n    @Override\n    public void afterPropertiesSet() {\n        configureFactory(soap11, SoapVersion.SOAP_11);\n        configureFactory(soap12, SoapVersion.SOAP_12);\n    }\n\n    @Override\n    public SoapMessage createWebServiceMessage() {\n        return getMessageFactoryForRequestContext().createWebServiceMessage();\n    }\n\n    @Override\n    public SoapMessage createWebServiceMessage(InputStream inputStream) throws IOException {\n        setMessageFactoryForRequestContext(soap11);\n        if (inputStream instanceof TransportInputStream) {\n            TransportInputStream transportInputStream = (TransportInputStream) inputStream;\n            if (soapProtocolChooser.useSoap12(transportInputStream)) {\n                setMessageFactoryForRequestContext(soap12);\n            }\n        }\n        SaajSoapMessageFactory mf = getMessageFactoryForRequestContext();\n        return mf.createWebServiceMessage(inputStream);\n    }\n\n}\n\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/protocol/SimpleSoapProtocolChooser.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.protocol;\n\nimport org.springframework.ws.transport.TransportInputStream;\n\nimport java.io.IOException;\nimport java.util.Iterator;\n\n/**\n * Chooses which soap version is used in the transmission.\n * It is a simple implementation that verifies the the content-type header.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SimpleSoapProtocolChooser implements SoapProtocolChooser {\n\n    private static final String CONTENT_TYPE_HEADER_NAME = \"content-type\";\n    private static final String CONTENT_TYPE_HEADER_CONTENT_SOAP_11 = \"text/xml\";\n\n    /**\n     * @param transportInputStream input stream from the SOAP client\n     * @return true if SOAP 1.1 is used\n     * @throws IOException in case an error occurs\n     */\n    @Override\n    public boolean useSoap11(TransportInputStream transportInputStream) throws IOException {\n        for (Iterator headerNames = transportInputStream.getHeaderNames(); headerNames.hasNext(); ) {\n            String headerName = (String) headerNames.next();\n            for (Iterator headerValues = transportInputStream.getHeaders(headerName); headerValues.hasNext(); ) {\n                String headerValue = (String) headerValues.next();\n                if (headerName.toLowerCase().contains(CONTENT_TYPE_HEADER_NAME)) {\n                    if (headerValue.trim().toLowerCase().contains(CONTENT_TYPE_HEADER_CONTENT_SOAP_11)) {\n                        return true;\n                    }\n\n                }\n            }\n        }\n        return false;\n    }\n\n    /**\n     * @param transportInputStream input stream from the SOAP client\n     * @return true if SOAP 1.2 is used\n     * @throws IOException in case an error occurs\n     */\n    @Override\n    public boolean useSoap12(TransportInputStream transportInputStream) throws IOException {\n        return useSoap11(transportInputStream) == false;\n    }\n\n}\n\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/protocol/SoapProtocolChooser.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.protocol;\n\n\nimport org.springframework.ws.transport.TransportInputStream;\n\nimport java.io.IOException;\n\n\n/**\n * Describes the functionality of SOAP version verification\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface SoapProtocolChooser {\n\n    boolean useSoap11(TransportInputStream transportInputStream) throws IOException;\n\n    boolean useSoap12(TransportInputStream transportInputStream) throws IOException;\n\n}\n\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/responder/AbstractResponder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.responder;\n\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.core.SoapUtils;\nimport org.reficio.ws.server.OperationNotFoundException;\nimport org.reficio.ws.server.SoapServerException;\nimport org.reficio.ws.server.matcher.SoapOperationMatcher;\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.wsdl.Binding;\nimport javax.wsdl.BindingOperation;\nimport javax.xml.transform.Source;\n\n/**\n * Convenience class that implements the RequestResponder interface and\n * contains a mechanism that matches the request to an operation from the Binding\n * RequestResponder method is implemented, but a new abstract respond method is added\n * which contains the invoked operation as an argument.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic abstract class AbstractResponder implements RequestResponder {\n\n    private final SoapBuilder builder;\n    private final Binding binding;\n    private final SoapOperationMatcher soapOperationMatcher;\n\n    public SoapBuilder getBuilder() {\n        return builder;\n    }\n\n    /**\n     * Constructs a responder for the specified binding of the builder\n     *\n     * @param builder Soap builder used to construct messages\n     */\n    public AbstractResponder(SoapBuilder builder) {\n        this.builder = builder;\n        this.binding = builder.getBinding();\n        this.soapOperationMatcher = new SoapOperationMatcher(builder.getBinding());\n    }\n\n    /**\n     * Implementation of the RequestResponder bare method.\n     * It matches the SoapMessage to the binding operation and invokes the\n     * abstract respond method that contains OperationWrapper as an argument.\n     *\n     * @param message SOAP message passed by the client\n     * @return response in the XML source format containing the whole SOAP envelope\n     */\n    @Override\n    public Source respond(SoapMessage message) {\n        try {\n            BindingOperation invokedOperation = soapOperationMatcher.getInvokedOperation(message);\n            if (soapOperationMatcher.isRequestResponseOperation(invokedOperation)) {\n                SoapOperation operation = SoapUtils.createOperation(builder, binding, invokedOperation, message.getSoapAction());\n                return respond(operation, message);\n            }\n            return null;\n        } catch (OperationNotFoundException e) {\n            throw new SoapServerException(e);\n        }\n    }\n\n    /**\n     * Abstract method that should be implemented by overriding classes.\n     * This method is invoked whenever a request is send by the client.\n     * InvokedOperation may be passed to a SoapBuilder to construct the\n     * response to the request that was sent by the client.\n     *\n     * @param invokedOperation operation from the binding that is matched to the SOAP message\n     * @param message          SOAP message passed by the client\n     * @return response in the XML source format containing the whole SOAP envelope\n     */\n    public abstract Source respond(SoapOperation invokedOperation, SoapMessage message);\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/responder/AutoResponder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.responder;\n\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.common.XmlUtils;\nimport org.reficio.ws.server.SoapServerException;\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.xml.transform.Source;\n\n/**\n * Convenience class to create SOAP mock services.\n * It replies with an sample response to all requests send to this responder.\n * SoapContext passed in the constructor may be used to fine-tune the generation\n * of the sample responses.\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class AutoResponder extends AbstractResponder {\n\n    private final SoapContext context;\n\n    /**\n     * Constructs an auto responder for the specified binding of the builder\n     *\n     * @param builder     Soap builder used to construct messages\n     */\n    public AutoResponder(SoapBuilder builder) {\n        super(builder);\n        this.context = SoapContext.builder().exampleContent(true).build();\n    }\n\n    /**\n     * Constructs an auto responder for the specified binding of the builder, fine-tuning the content of the generated messages\n     * by passing the SoapContext\n     *\n     * @param builder     Soap builder used to construct messages\n     * @param context     Contect that is passed to the builder to fine-tune the content of the generated responses\n     */\n    public AutoResponder(SoapBuilder builder, SoapContext context) {\n        super(builder);\n        this.context = context;\n    }\n\n    @Override\n    public Source respond(SoapOperation invokedOperation, SoapMessage message) {\n        try {\n            String response = getBuilder().buildOutputMessage(invokedOperation, context);\n            return XmlUtils.xmlStringToSource(response);\n        } catch (Exception e) {\n            throw new SoapServerException(e);\n        }\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/main/java/org/reficio/ws/server/responder/RequestResponder.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server.responder;\n\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.xml.transform.Source;\n\n/**\n * Interface describing the functionality of a SOAP Request Responder\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic interface RequestResponder {\n\n    /**\n     * Returns a response to a SOAP message.<br/>\n     * <p/>\n     * How to get full SOAP message envelope (envelope = header + body):\n     * msg.getEnvelope().getSource()\n     * <p/>\n     * How to get header section:\n     * msg.getEnvelope().getHeader().getSource()\n     * <p/>\n     * How to get body section:\n     * msg.getEnvelope().getBody().getSource()\n     * <p/>\n     * How to convert XML String to XML Source:\n     * XmlUtils.xmlStringToSource(string);\n     * <p/>\n     * How to convert XML Source to XML String:\n     * XmlUtils.sourceToXmlString(source);\n     *\n     * @param request SOAP message to handle\n     * @return response in the XML source format containing the whole SOAP envelope\n     */\n    Source respond(SoapMessage request);\n\n}\n"
  },
  {
    "path": "soap-server/src/main/resources/soap-server.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xmlns:p=\"http://www.springframework.org/schema/p\"\n       xmlns:util=\"http://www.springframework.org/schema/util\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans\n                           http://www.springframework.org/schema/beans/spring-beans.xsd\n\n                            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd\">\n\n\n    <bean name=\"genericReceiver\" id=\"genericReceiver\" class=\"org.reficio.ws.server.endpoint.GenericContextDomEndpoint\"/>\n\n    <bean name=\"endpoint\" id=\"endpoint\" class=\"org.reficio.ws.server.endpoint.GenericContextDomEndpoint\"/>\n\n    <bean id=\"connector\" class=\"org.mortbay.jetty.nio.SelectChannelConnector\" />\n    <bean id=\"sslConnector\" class=\"org.mortbay.jetty.security.SslSelectChannelConnector\" />\n\n    <bean id=\"messageFactory\" class=\"org.reficio.ws.server.protocol.GenericSoapMessageFactory\" />\n\n    <bean id=\"jettyServer\"\n          class=\"org.mortbay.jetty.Server\"\n          destroy-method=\"stop\">\n        <property name=\"threadPool\">\n            <bean id=\"ThreadPool\" class=\"org.mortbay.thread.concurrent.ThreadPool\">\n                <constructor-arg type=\"int\" value=\"${core.pool.size}\"/>\n                <constructor-arg type=\"int\" value=\"${max.pool.size}\"/>\n                <constructor-arg type=\"long\" value=\"${keep.alive.time}\"/>\n                <constructor-arg type=\"java.util.concurrent.TimeUnit\">\n\t\t\t\t\t<util:constant static-field=\"java.util.concurrent.TimeUnit.SECONDS\" />\n\t\t\t\t</constructor-arg>\n            </bean>\n        </property>\n        <property name=\"connectors\">\n            <list>\n\n            </list>\n        </property>\n        <property name=\"handlers\">\n            <list>\n                <bean class=\"org.mortbay.jetty.servlet.Context\"\n                      p:contextPath=\"/\">\n                    <property name=\"sessionHandler\">\n                        <bean class=\"org.mortbay.jetty.servlet.SessionHandler\"/>\n                    </property>\n                    <property name=\"servletHandler\">\n                        <bean class=\"org.mortbay.jetty.servlet.ServletHandler\">\n                            <property name=\"servlets\">\n                                <list>\n                                    <bean class=\"org.mortbay.jetty.servlet.ServletHolder\"\n                                          p:name=\"spring-ws\">\n                                        <property name=\"servlet\">\n                                            <bean class=\"org.springframework.ws.transport.http.MessageDispatcherServlet\">\n                                                <!--\n                                                <property name=\"messageReceiverBeanName\" value=\"genericReceiver\" />\n                                                -->\n                                            </bean>\n                                        </property>\n                                        <property name=\"initParameters\">\n                                            <map>\n                                                <entry key=\"contextConfigLocation\"\n                                                       value=\"classpath:soap-servlet.xml\"/>\n                                            </map>\n                                        </property>\n                                    </bean>\n                                </list>\n                            </property>\n                            <property name=\"servletMappings\">\n                                <list>\n                                    <bean class=\"org.mortbay.jetty.servlet.ServletMapping\"\n                                          p:servletName=\"spring-ws\"\n                                          p:pathSpec=\"/*\"/>\n                                </list>\n                            </property>\n                        </bean>\n                    </property>\n                </bean>\n                <bean class=\"org.mortbay.jetty.handler.DefaultHandler\"/>\n                <bean class=\"org.mortbay.jetty.handler.RequestLogHandler\"/>\n            </list>\n        </property>\n    </bean>\n\n</beans>\n"
  },
  {
    "path": "soap-server/src/main/resources/soap-servlet.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<beans xmlns=\"http://www.springframework.org/schema/beans\"\n       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n       xsi:schemaLocation=\"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd\">\n\n\n    <bean id=\"adapter\" class=\"org.reficio.ws.server.endpoint.ContextEndpointAdapter\"/>\n\n    <bean class=\"org.reficio.ws.server.endpoint.GenericEndpointMapping\">\n        <property name=\"genericEndpoint\" ref=\"endpoint\"/>\n        <property name=\"interceptors\">\n            <list>\n\n                <bean class=\"org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor\"/>\n\n                <bean class=\"org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor\">\n                    <property name=\"logRequest\" value=\"true\"/>\n                    <property name=\"logResponse\" value=\"true\"/>\n                </bean>\n            </list>\n        </property>\n    </bean>\n\n</beans>\n"
  },
  {
    "path": "soap-server/src/test/java/org/reficio/ws/server/PasswordLessKeystoreTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server; /**\n * Copyright (c) 2012 centeractive ag. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport org.junit.Ignore;\nimport org.junit.Test;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.server.core.SoapServer;\n\nimport java.io.File;\nimport java.io.FileOutputStream;\nimport java.io.InputStream;\nimport java.net.URL;\nimport java.security.Key;\nimport java.security.KeyStore;\nimport java.security.cert.Certificate;\n\nimport static org.junit.Assert.assertNotNull;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\n@Ignore // not supported yet\npublic class PasswordLessKeystoreTest {\n\n    // helper method\n    public void generateKeyLessKeystore() throws Exception {\n        URL keyStoreUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores\", \".keystore\");\n        InputStream in = keyStoreUrl.openStream();\n        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());\n        ks.load(in, \"changeit\".toCharArray());\n        in.close();\n\n        String path = keyStoreUrl.getFile().replace(\".keystore\", \"keyless2.keystore\");\n        File file = new File(path);\n        FileOutputStream out = new FileOutputStream(file);\n\n        Certificate certificate = ks.getCertificate(\"john\");\n        assertNotNull(certificate);\n        Key key = ks.getKey(\"john\", \"changeit\".toCharArray());\n        assertNotNull(key);\n\n        KeyStore keyLess = KeyStore.getInstance(KeyStore.getDefaultType());\n        keyLess.load(null);\n        keyLess.setKeyEntry(\"tom\", key, \"\".toCharArray(), new Certificate[] {certificate});\n        keyLess.store(out, \"\".toCharArray());\n    }\n\n    @Test\n    public void trustStoreUrl() throws Exception {\n        URL keyStoreUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores\", \"keyless.keystore\");\n        InputStream in = keyStoreUrl.openStream();\n        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());\n        ks.load(in, null);\n        in.close();\n\n        Certificate certificate = ks.getCertificate(\"tom\");\n        assertNotNull(certificate);\n        Key key = ks.getKey(\"tom\", \"\".toCharArray());\n        assertNotNull(key);\n    }\n\n    @Test\n    public void testServerWithKeyLessKeystore_EmptyPwd() {\n        URL keyStoreUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores\", \"keyless.keystore\");\n        SoapServer server = SoapServer.builder()\n                .httpsPort(9696)\n                .keyStoreUrl(keyStoreUrl)\n                .keyStorePassword(\"\")\n                .build();\n        server.start();\n        server.stop();\n    }\n\n    @Test(expected = SoapServerException.class)\n    public void testServerWithKeyLessKeystore_NullPwd() {\n        URL keyStoreUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores\", \"keyless.keystore\");\n        SoapServer server = SoapServer.builder()\n                .httpsPort(9696)\n                .keyStoreUrl(keyStoreUrl)\n                .keyStorePassword(null)\n                .build();\n        server.start();\n        server.stop();\n    }\n\n    @Test(expected = SoapServerException.class)\n    public void testServerWithKeyLessKeystore_WrongPwd() {\n        URL keyStoreUrl = ResourceUtils.getResourceWithAbsolutePackagePath(\"/keystores\", \"keyless.keystore\");\n        SoapServer server = SoapServer.builder()\n                .httpsPort(9696)\n                .keyStoreUrl(keyStoreUrl)\n                .keyStorePassword(\"wrong_password\")\n                .build();\n        server.start();\n        server.stop();\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/test/java/org/reficio/ws/server/SimpleServerTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.server;\n\nimport org.junit.Test;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.reficio.ws.server.responder.RequestResponder;\nimport org.springframework.ws.soap.SoapMessage;\n\nimport javax.xml.transform.Source;\nimport java.io.IOException;\nimport java.net.DatagramSocket;\nimport java.net.ServerSocket;\nimport java.util.List;\n\nimport static junit.framework.Assert.assertFalse;\nimport static org.junit.Assert.*;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SimpleServerTest {\n\n    public static boolean isPortAvailable(int port) {\n        ServerSocket ss = null;\n        DatagramSocket ds = null;\n        try {\n            ss = new ServerSocket(port);\n            ss.setReuseAddress(true);\n            ds = new DatagramSocket(port);\n            ds.setReuseAddress(true);\n            return true;\n        } catch (IOException e) {\n        } finally {\n            if (ds != null) {\n                ds.close();\n            }\n\n            if (ss != null) {\n                try {\n                    ss.close();\n                } catch (IOException e) {\n                }\n            }\n        }\n        return false;\n    }\n\n    public static int getFreePort() {\n        for (int portToCheck = 20000; portToCheck < 21000; portToCheck++) {\n            if (isPortAvailable(portToCheck)) {\n                return portToCheck;\n            }\n        }\n        throw new SoapServerException(\"Crazy stuff is happening, no free port available\");\n    }\n\n    public static SoapServer getServer() {\n        SoapServer server = SoapServer.builder()\n                .httpPort(getFreePort())\n                .build();\n        return server;\n    }\n\n    @Test\n    public void startStop() {\n        int port = getFreePort();\n        assertTrue(isPortAvailable(port));\n        SoapServer server = SoapServer.builder()\n                .httpPort(port)\n                .build();\n        server.start();\n        assertFalse(isPortAvailable(port));\n        server.stop();\n        assertTrue(isPortAvailable(port));\n    }\n\n    @Test\n    public void startStopDestroy() {\n        SoapServer server = getServer();\n        server.start();\n        server.stop();\n        server.destroy();\n    }\n\n    @Test\n    public void startStopDestroyCannotResurrect() {\n        SoapServer server = getServer();\n        server.start();\n        server.stop();\n        server.destroy();\n        RuntimeException caught = null;\n        try {\n            server.start();\n        } catch (RuntimeException ex) {\n            caught = ex;\n        }\n        assertNotNull(caught);\n    }\n\n    @Test\n    public void registerCheck() {\n        String contextPath = \"/test\";\n        SoapServer server = getServer();\n        server.registerRequestResponder(contextPath, new RequestResponder() {\n            @Override\n            public Source respond(SoapMessage message) {\n                return null;\n            }\n        });\n        List<String> paths = server.getRegisteredContextPaths();\n        assertEquals(paths.size(), 1);\n        assertEquals(paths.toArray(new String[]{})[0], contextPath);\n    }\n\n    @Test\n    public void unregisterCheck() {\n        String contextPath = \"/test\";\n        SoapServer server = getServer();\n        server.registerRequestResponder(contextPath, new RequestResponder() {\n            @Override\n            public Source respond(SoapMessage message) {\n                return null;\n            }\n        });\n        server.unregisterRequestResponder(contextPath);\n        List<String> paths = server.getRegisteredContextPaths();\n        assertEquals(paths.size(), 0);\n    }\n\n    @Test(expected = ServiceRegistrationException.class)\n    public void doubleRegister() {\n        String contextPath = \"/test\";\n        SoapServer server = getServer();\n        server.registerRequestResponder(contextPath, new RequestResponder() {\n            @Override\n            public Source respond(SoapMessage message) {\n                return null;\n            }\n        });\n        server.registerRequestResponder(contextPath, new RequestResponder() {\n            @Override\n            public Source respond(SoapMessage message) {\n                return null;\n            }\n        });\n    }\n\n    @Test(expected = NullPointerException.class)\n    public void registerNullResponder() {\n        String contextPath = \"/test\";\n        SoapServer server = getServer();\n        server.registerRequestResponder(contextPath, null);\n    }\n\n    @Test(expected = NullPointerException.class)\n    public void registerNullContextPath() {\n        SoapServer server = getServer();\n        server.registerRequestResponder(null, new RequestResponder() {\n            @Override\n            public Source respond(SoapMessage message) {\n                return null;\n            }\n        });\n    }\n\n    @Test(expected = ServiceRegistrationException.class)\n    public void unregisterNotExisting() {\n        String contextPath = \"/test\";\n        SoapServer server = getServer();\n        server.unregisterRequestResponder(contextPath);\n    }\n\n}\n"
  },
  {
    "path": "soap-server/src/test/resources/keystores/gen.sh",
    "content": "#!/bin/bash\nkeytool -genkey -keystore .keystore -alias john -storepass changeit -keypass changeit -dname \"CN=John Smith, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\nkeytool -genkey -keystore .keystore -alias george -storepass changeit -keypass changeit -dname \"CN=George Kowalski, OU=Development, O=Standard Supplies Inc., L=Anytown, S=North Carolina, C=US\"\n"
  },
  {
    "path": "soap-server/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <!-- Appenders -->\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.mortbay.log\">\n        <level value=\"fatal\"/>\n    </logger>\n\n    <logger name=\"org.reficio\">\n        <level value=\"fatal\"/>\n    </logger>\n\n    <logger name=\"org.springframework\">\n        <level value=\"fatal\"/>\n    </logger>\n\n    <!-- Root Logger -->\n    <root>\n        <priority value=\"fatal\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-test/pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.reficio</groupId>\n    <artifactId>soap-test</artifactId>\n    <name>soap-test - soap testing tools</name>\n\n    <parent>\n        <groupId>org.reficio</groupId>\n        <artifactId>soap-ws</artifactId>\n        <version>1.0.0-SNAPSHOT</version>\n        <relativePath>../pom.xml</relativePath>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-client</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n        <dependency>\n            <groupId>org.reficio</groupId>\n            <artifactId>soap-server</artifactId>\n            <version>${project.version}</version>\n        </dependency>\n\n        <dependency>\n            <groupId>junit</groupId>\n            <artifactId>junit</artifactId>\n            <version>4.11</version>\n            <scope>provided</scope>\n        </dependency>\n\n        <dependency>\n            <groupId>org.spockframework</groupId>\n            <artifactId>spock-core</artifactId>\n            <version>0.7-groovy-2.0</version>\n            <scope>provided</scope>\n        </dependency>\n\n    </dependencies>\n\n</project>\n"
  },
  {
    "path": "soap-test/src/main/groovy/org/reficio/ws/test/spock/Server.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.spock\n\nimport org.spockframework.runtime.extension.ExtensionAnnotation\n\nimport java.lang.annotation.ElementType\nimport java.lang.annotation.Retention\nimport java.lang.annotation.RetentionPolicy\nimport java.lang.annotation.Target\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target([ElementType.METHOD, ElementType.TYPE])\n@ExtensionAnnotation(ServerExtension)\n@interface Server {\n    String wsdl();\n    String binding();\n    String path() default \"/service\";\n    int port() default 51515;\n}\n"
  },
  {
    "path": "soap-test/src/main/groovy/org/reficio/ws/test/spock/ServerExtension.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.spock\n\nimport org.reficio.ws.test.ServerProcessor\nimport org.spockframework.runtime.AbstractRunListener\nimport org.spockframework.runtime.extension.AbstractAnnotationDrivenExtension\nimport org.spockframework.runtime.model.FeatureInfo\nimport org.spockframework.runtime.model.SpecInfo\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n *\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\nclass ServerExtension extends AbstractAnnotationDrivenExtension<Server> {\n\n    def featureAnnotations = [:]\n\n    void visitSpecAnnotation(Server annotation, SpecInfo spec) {\n        spec.addListener(new AbstractRunListener() {\n\n            private ServerProcessor processor\n\n            @Override\n            public void beforeSpec(SpecInfo specInfo) {\n                processor = new ServerProcessor(annotation, spec.getClass())\n                processor.initServer()\n            }\n\n            @Override\n            public void afterSpec(SpecInfo specInfo) {\n                processor.stopServer()\n            }\n\n        });\n    }\n\n    void visitFeatureAnnotation(Server annotation, FeatureInfo feature) {\n        if (featureAnnotations.isEmpty()) {\n            feature.getParent().addListener(new AbstractRunListener() {\n                @Override\n                public void beforeFeature(FeatureInfo featureInfo) {\n                    ServerProcessor processor = featureAnnotations[featureInfo]\n                    if (processor) {\n                        processor.initServer()\n                    }\n                }\n\n                @Override\n                public void afterFeature(FeatureInfo featureInfo) {\n                    ServerProcessor processor = featureAnnotations[featureInfo]\n                    if (processor) {\n                        processor.stopServer()\n                    }\n                }\n            });\n        }\n        featureAnnotations[feature] = new ServerProcessor(annotation, feature.getClass())\n    }\n\n}\n"
  },
  {
    "path": "soap-test/src/main/java/org/reficio/ws/test/ServerProcessor.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test;\n\nimport com.google.common.base.Preconditions;\nimport org.reficio.ws.SoapContext;\nimport org.reficio.ws.SoapException;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.common.ResourceUtils;\nimport org.reficio.ws.server.core.SoapServer;\nimport org.reficio.ws.server.responder.AutoResponder;\n\nimport java.net.MalformedURLException;\nimport java.net.URL;\n\n/**\n * @author: Tom Bujok (tom.bujok@gmail.com)\n * <p/>\n * Reficio™ - Reestablish your software!\n * www.reficio.org\n */\npublic class ServerProcessor {\n\n    private SoapServer server;\n\n    private final String wsdl;\n    private final String binding;\n    private final String path;\n    private final int port;\n    private final Class testClass;\n\n    public ServerProcessor(org.reficio.ws.test.junit.Server server, Class testClass) {\n        this.wsdl = processUrl(server.wsdl());\n        this.binding = server.binding();\n        this.path = server.path();\n        this.port = server.port();\n        this.testClass = testClass;\n    }\n\n    public ServerProcessor(org.reficio.ws.test.spock.Server server, Class testClass) {\n        this.wsdl = processUrl(server.wsdl());\n        this.binding = server.binding();\n        this.path = server.path();\n        this.port = server.port();\n        this.testClass = testClass;\n    }\n\n    private String processUrl(String wsdlUrl) {\n        if(wsdlUrl == null) {\n            return null;\n        }\n        if(wsdlUrl.startsWith(\"classpath:\")) {\n            return ResourceUtils.getResource(wsdlUrl.replace(\"classpath:\",\"\")).toString();\n        } else {\n            return wsdlUrl;\n        }\n    }\n\n    public SoapServer initServer() {\n        validate();\n        URL wsdlUrl = getWsdlUrl(testClass);\n        Wsdl parser = Wsdl.parse(wsdlUrl);\n        SoapBuilder builder = getBuilder(parser);\n        server = construct();\n        AutoResponder responder = getAutoResponder(builder);\n        registerService(server, responder);\n\n        server.start();\n        return server;\n    }\n\n    public void stopServer() {\n        if (server != null) {\n            server.stop();\n        }\n    }\n\n    private SoapServer construct() {\n        return SoapServer.builder()\n                .httpPort(port)\n                .build();\n    }\n\n    private void registerService(SoapServer server, AutoResponder responder) {\n        server.registerRequestResponder(path, responder);\n    }\n\n    private AutoResponder getAutoResponder(SoapBuilder builder) {\n        SoapContext context = SoapContext.builder()\n                .exampleContent(true)\n                .buildOptional(true)\n                .alwaysBuildHeaders(true)\n                .build();\n        return new AutoResponder(builder, context);\n    }\n\n    private SoapBuilder getBuilder(Wsdl parser) {\n        SoapBuilder builder = null;\n        try {\n            builder = parser.binding().name(binding).find();\n        } catch (SoapException ex) {\n            // ignore\n        }\n        if (builder == null) {\n            builder = parser.binding().localPart(binding).find();\n        }\n        Preconditions.checkNotNull(builder, \"Binding not found\");\n        return builder;\n    }\n\n    private URL getWsdlUrl(Class testClass) {\n        URL wsdlUrl = null;\n        try {\n            wsdlUrl = ResourceUtils.getResource(testClass, wsdl);\n        } catch (IllegalArgumentException ex) {\n            // ignore\n        }\n        if (wsdlUrl == null) {\n            try {\n                wsdlUrl = new URL(wsdl);\n            } catch (MalformedURLException e) {\n                throw new IllegalArgumentException(\"Wrong wsdl url\", e);\n            }\n        }\n        return wsdlUrl;\n    }\n\n    private void validate() {\n        Preconditions.checkNotNull(wsdl, \"Wsdl url cannot be null\");\n        Preconditions.checkNotNull(binding, \"Binding name cannot be null\");\n        Preconditions.checkArgument(port >= 0 && port < 65535, \"Port has to be in range [0, 655535]\");\n    }\n\n}\n"
  },
  {
    "path": "soap-test/src/main/java/org/reficio/ws/test/junit/Server.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.junit;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n/**\n * Annotation specifying a SOAP mock\n *\n * @author Tom Bujok\n * @since 1.0.0\n */\n@Retention(RetentionPolicy.RUNTIME)\n@Target({ElementType.METHOD, ElementType.TYPE})\npublic @interface Server {\n    String wsdl();\n    String binding();\n    String path() default \"/service\";\n    int port() default 51515;\n}\n"
  },
  {
    "path": "soap-test/src/main/java/org/reficio/ws/test/junit/SoapRule.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.junit;\n\nimport org.junit.rules.TestRule;\nimport org.junit.runner.Description;\nimport org.junit.runners.model.Statement;\nimport org.reficio.ws.test.ServerProcessor;\n\n/**\n * @author Tom Bujok\n * @since 1.0.0\n */\npublic class SoapRule implements TestRule {\n\n    @Override\n    public Statement apply(Statement base, Description description) {\n        return statement(base, description);\n    }\n\n    private Statement statement(final Statement base, final Description description) {\n        return new Statement() {\n            @Override\n            public void evaluate() throws Throwable {\n                Server server = description.getAnnotation(Server.class);\n                ServerProcessor processor = null;\n                if (server != null) {\n                    Class<?> testClass = description.getTestClass();\n                    processor = new ServerProcessor(server, testClass);\n                    processor.initServer();\n                }\n                try {\n                    base.evaluate();\n                } finally {\n                    if (processor != null) {\n                        processor.stopServer();\n                    }\n                }\n            }\n        };\n    }\n\n\n}\n"
  },
  {
    "path": "soap-test/src/test/groovy/org/reficio/ws/test/spock/SpockExtensionTest.groovy",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.spock\n\nimport groovy.util.logging.Log4j\nimport org.reficio.ws.builder.SoapBuilder\nimport org.reficio.ws.builder.SoapOperation\nimport org.reficio.ws.builder.core.Wsdl\nimport org.reficio.ws.client.core.SoapClient\nimport org.reficio.ws.common.ResourceUtils\nimport spock.lang.Specification\n\n@Log4j\n@Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\", binding = \"CurrencyConvertorSoap\")\nclass SpockExtensionTest extends Specification {\n\n    static final String WSDL = ResourceUtils.getResource(\"wsdl/currency-convertor.wsdl\").toString();\n\n    @Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\", binding = \"CurrencyConvertorSoap\", port = 41414)\n    def \"method specific server\"() {\n        setup:\n        SoapClient client = SoapClient.builder().endpointUri(\"http://localhost:41414/service\").build();\n        SoapBuilder builder = Wsdl.parse(WSDL).binding().localPart(\"CurrencyConvertorSoap\").find();\n        SoapOperation operation = builder.operation().name(\"ConversionRate\").find();\n        String request = builder.buildInputMessage(operation);\n        log.info(\"\\n\" + request);\n\n        when:\n        String response = client.post(request);\n\n        then:\n        assert response != null\n        log.info(\"\\n\" + response);\n    }\n\n    def \"test specific server\"() {\n        setup:\n        SoapClient client = SoapClient.builder().endpointUri(\"http://localhost:51515/service\").build();\n        SoapBuilder builder = Wsdl.parse(WSDL).binding().localPart(\"CurrencyConvertorSoap\").find();\n        SoapOperation operation = builder.operation().name(\"ConversionRate\").find();\n        String request = builder.buildInputMessage(operation);\n        log.info(\"\\n\" + request);\n\n        when:\n        String response = client.post(request);\n\n        then:\n        assert response != null\n        log.info(\"\\n\" + response);\n    }\n\n}\n"
  },
  {
    "path": "soap-test/src/test/java/org/reficio/ws/test/junit/SoapRuleTest.java",
    "content": "/**\n * Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n *\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npackage org.reficio.ws.test.junit;\n\nimport org.apache.log4j.Logger;\nimport org.junit.ClassRule;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.reficio.ws.builder.SoapBuilder;\nimport org.reficio.ws.builder.SoapOperation;\nimport org.reficio.ws.builder.core.Wsdl;\nimport org.reficio.ws.client.core.SoapClient;\nimport org.reficio.ws.common.ResourceUtils;\n\n// @Server annotation spawns an instance of a SoapServer for the lifespan of the test / method.\n// The SOAP server provides a SOAP auto-responder for the specified binding -> messages are generated and send automatically.\n// Generated messages are compliant with the WSDL and the schema (including enumerations, etc.)\n// The @Server annotation may be also used to annotate a method -> it spawns a SoapServer for the lifespan of the test method.\n// In order to enable the @Server annotation a junit @Rule has to be defined (JUnit requirement):\n//   - org.junit.ClassRule in order to enable the @Server on a per-class basis\n//   - org.junit.Rule in order to enable the @Server on a per-class basis\n@Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\", binding = \"CurrencyConvertorSoap\")\npublic class SoapRuleTest {\n\n    private final static Logger log = Logger.getLogger(SoapRuleTest.class);\n    private static final String WSDL = ResourceUtils.getResource(\"wsdl/currency-convertor.wsdl\").toString();\n\n    @Rule\n    // define an instance rule if the @Server annotation is used per method\n    public SoapRule rule = new SoapRule();\n\n    @ClassRule\n    // define a class rule if the @Server annotation is used per class\n    public static SoapRule classRule = new SoapRule();\n\n    @Test\n    @Server(wsdl = \"classpath:wsdl/currency-convertor.wsdl\", binding = \"CurrencyConvertorSoap\", port = 41414)\n    public void testSoapMock_perMethodServer() {\n        SoapClient client = SoapClient.builder().endpointUri(\"http://localhost:41414/service\").build();\n        SoapBuilder builder = Wsdl.parse(WSDL).binding().localPart(\"CurrencyConvertorSoap\").find();\n        SoapOperation operation = builder.operation().name(\"ConversionRate\").find();\n        String request = builder.buildInputMessage(operation);\n\n        log.info(\"\\n\" + request);\n\n        String response = client.post(request);\n        log.info(\"\\n\" + response);\n\n    }\n\n    @Test\n    public void testSoapMock_perClassServer() {\n        SoapClient client = SoapClient.builder().endpointUri(\"http://localhost:51515/service\").build();\n        SoapBuilder builder = Wsdl.parse(WSDL).binding().localPart(\"CurrencyConvertorSoap\").find();\n        SoapOperation operation = builder.operation().name(\"ConversionRate\").find();\n        String request = builder.buildInputMessage(operation);\n\n        log.info(\"\\n\" + request);\n\n        String response = client.post(request);\n        log.info(\"\\n\" + response);\n\n    }\n\n}\n"
  },
  {
    "path": "soap-test/src/test/resources/log4j.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n\n<!DOCTYPE log4j:configuration SYSTEM \"log4j.dtd\">\n\n<log4j:configuration xmlns:log4j=\"http://jakarta.apache.org/log4j/\">\n\n    <appender name=\"console\" class=\"org.apache.log4j.ConsoleAppender\">\n        <param name=\"Target\" value=\"System.out\"/>\n        <layout class=\"org.apache.log4j.PatternLayout\">\n            <param name=\"ConversionPattern\" value=\"[%t] %-5p: %c - %m%n\"/>\n        </layout>\n    </appender>\n\n    <logger name=\"org.reficio\">\n        <level value=\"warn\"/>\n    </logger>\n\n    <!--<logger name=\"org.reficio.ws.test\">-->\n        <!--<level value=\"info\"/>-->\n    <!--</logger>-->\n\n    <logger name=\"org.springframework\">\n        <level value=\"error\"/>\n    </logger>\n\n    <root>\n        <priority value=\"error\"/>\n        <appender-ref ref=\"console\"/>\n    </root>\n\n</log4j:configuration>\n"
  },
  {
    "path": "soap-test/src/test/resources/wsdl/TestService.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wsdl:definitions xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\"\n                  xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n                  xmlns:s=\"http://www.w3.org/2001/XMLSchema\"\n                  xmlns:tns=\"http://schemas.eviware.com/TestService/v1/\"\n                  xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\"\n                  xmlns:sp=\"http://schemas.xmlsoap.org/ws/2005/07/securitypolicy\"\n                  xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n                  targetNamespace=\"http://schemas.eviware.com/TestService/v1/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n\n<wsp:Policy wsu:Id=\"UsernameTokenPolicy\" >\n\t\t<sp:UsernameToken/>\n     </wsp:Policy>\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n       <s:include schemaLocation=\"testservice1.xsd\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"GetDefaultPageDataSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageData\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetDefaultPageDataResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetDefaultPageDataSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPage\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetPageResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetPageSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:GetChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"GetChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteria\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:FindPagesWithCriteriaResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"FindPagesWithCriteriaSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Save\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:SaveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"SaveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Ping\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:PingResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"PingSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersion\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteVersionResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteVersionSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Delete\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildren\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:DeleteChildrenResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"DeleteChildrenSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Move\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:MoveResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"MoveSignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:Copy\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:CopyResponse\" />\n  </wsdl:message>\n  <wsdl:message name=\"CopySignatureHeader\">\n    <wsdl:part name=\"SignatureHeader\" element=\"tns:SignatureHeader\" />\n  </wsdl:message>\n  <wsdl:portType name=\"TestServiceSoap\">\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\"><![CDATA[Read page da\n      asd\n      asd\n      s\n      ds\n      a\n      da\n      s\n      d\n      s\n      ds\n      a\n      sd\n      s\n      da\n      sd\n      as\n      da\n      s\n      da\n      sd\n      as\n      da\n      sdta from Test]]></documentation>\n      <wsdl:input message=\"tns:GetDefaultPageDataSoapIn\" />\n      <wsdl:output message=\"tns:GetDefaultPageDataSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page data from Test</documentation>\n      <wsdl:input message=\"tns:GetPageSoapIn\" />\n      <wsdl:output message=\"tns:GetPageSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Read page children from Test</documentation>\n      <wsdl:input message=\"tns:GetChildrenSoapIn\" />\n      <wsdl:output message=\"tns:GetChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Find pages that has special properties</documentation>\n      <wsdl:input message=\"tns:FindPagesWithCriteriaSoapIn\" />\n      <wsdl:output message=\"tns:FindPagesWithCriteriaSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Save page data to Test</documentation>\n      <wsdl:input message=\"tns:SaveSoapIn\" />\n      <wsdl:output message=\"tns:SaveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Returns true for signed and authenticated messages and false for unsigned messages</documentation>\n      <wsdl:input message=\"tns:PingSoapIn\" />\n      <wsdl:output message=\"tns:PingSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page version</documentation>\n      <wsdl:input message=\"tns:DeleteVersionSoapIn\" />\n      <wsdl:output message=\"tns:DeleteVersionSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete a page</documentation>\n      <wsdl:input message=\"tns:DeleteSoapIn\" />\n      <wsdl:output message=\"tns:DeleteSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Delete page children</documentation>\n      <wsdl:input message=\"tns:DeleteChildrenSoapIn\" />\n      <wsdl:output message=\"tns:DeleteChildrenSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Move a page</documentation>\n      <wsdl:input message=\"tns:MoveSoapIn\" />\n      <wsdl:output message=\"tns:MoveSoapOut\" />\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\">Copy a page</documentation>\n      <wsdl:input message=\"tns:CopySoapIn\" />\n      <wsdl:output message=\"tns:CopySoapOut\" />\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"TestServiceSoap\" type=\"tns:TestServiceSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\" style=\"document\" />\n    <wsdl:operation name=\"GetDefaultPageData\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetDefaultPageData\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetDefaultPageDataSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetPage\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetPage\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetPageSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"GetChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/GetChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:GetChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"FindPagesWithCriteria\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/FindPagesWithCriteria\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:FindPagesWithCriteriaSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Save\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Save\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:SaveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Ping\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Ping\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:PingSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteVersion\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteVersion\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteVersionSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Delete\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Delete\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"DeleteChildren\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/DeleteChildren\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:DeleteChildrenSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Move\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Move\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:MoveSignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n    <wsdl:operation name=\"Copy\">\n      <soap:operation soapAction=\"http://schemas.eviware.com/TestService/v1/Copy\" style=\"document\" />\n      <wsdl:input>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\" />\n        <soap:header message=\"tns:CopySignatureHeader\" part=\"SignatureHeader\" use=\"literal\" />\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"TestService\">\n    <documentation xmlns=\"http://schemas.xmlsoap.org/wsdl/\" />\n    <wsdl:port name=\"TestServiceSoap\" binding=\"tns:TestServiceSoap\">\n      <soap:address location=\"http://www.eviware.com/webservices/TestService\" />\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>\n"
  },
  {
    "path": "soap-test/src/test/resources/wsdl/currency-convertor.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsdl:definitions xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:tm=\"http://microsoft.com/wsdl/mime/textMatching/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\" xmlns:tns=\"http://www.webserviceX.NET/\" xmlns:s=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://schemas.xmlsoap.org/wsdl/soap12/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" targetNamespace=\"http://www.webserviceX.NET/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">\n  <wsdl:types>\n    <s:schema elementFormDefault=\"qualified\" targetNamespace=\"http://www.webserviceX.NET/\">\n      <s:element name=\"ConversionRate\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"FromCurrency\" type=\"tns:Currency\"/>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ToCurrency\" type=\"tns:Currency\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"Currency\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"AFA\"/>\n          <s:enumeration value=\"ALL\"/>\n          <s:enumeration value=\"DZD\"/>\n          <s:enumeration value=\"ARS\"/>\n          <s:enumeration value=\"AWG\"/>\n          <s:enumeration value=\"AUD\"/>\n          <s:enumeration value=\"BSD\"/>\n          <s:enumeration value=\"BHD\"/>\n          <s:enumeration value=\"BDT\"/>\n          <s:enumeration value=\"BBD\"/>\n          <s:enumeration value=\"BZD\"/>\n          <s:enumeration value=\"BMD\"/>\n          <s:enumeration value=\"BTN\"/>\n          <s:enumeration value=\"BOB\"/>\n          <s:enumeration value=\"BWP\"/>\n          <s:enumeration value=\"BRL\"/>\n          <s:enumeration value=\"GBP\"/>\n          <s:enumeration value=\"BND\"/>\n          <s:enumeration value=\"BIF\"/>\n          <s:enumeration value=\"XOF\"/>\n          <s:enumeration value=\"XAF\"/>\n          <s:enumeration value=\"KHR\"/>\n          <s:enumeration value=\"CAD\"/>\n          <s:enumeration value=\"CVE\"/>\n          <s:enumeration value=\"KYD\"/>\n          <s:enumeration value=\"CLP\"/>\n          <s:enumeration value=\"CNY\"/>\n          <s:enumeration value=\"COP\"/>\n          <s:enumeration value=\"KMF\"/>\n          <s:enumeration value=\"CRC\"/>\n          <s:enumeration value=\"HRK\"/>\n          <s:enumeration value=\"CUP\"/>\n          <s:enumeration value=\"CYP\"/>\n          <s:enumeration value=\"CZK\"/>\n          <s:enumeration value=\"DKK\"/>\n          <s:enumeration value=\"DJF\"/>\n          <s:enumeration value=\"DOP\"/>\n          <s:enumeration value=\"XCD\"/>\n          <s:enumeration value=\"EGP\"/>\n          <s:enumeration value=\"SVC\"/>\n          <s:enumeration value=\"EEK\"/>\n          <s:enumeration value=\"ETB\"/>\n          <s:enumeration value=\"EUR\"/>\n          <s:enumeration value=\"FKP\"/>\n          <s:enumeration value=\"GMD\"/>\n          <s:enumeration value=\"GHC\"/>\n          <s:enumeration value=\"GIP\"/>\n          <s:enumeration value=\"XAU\"/>\n          <s:enumeration value=\"GTQ\"/>\n          <s:enumeration value=\"GNF\"/>\n          <s:enumeration value=\"GYD\"/>\n          <s:enumeration value=\"HTG\"/>\n          <s:enumeration value=\"HNL\"/>\n          <s:enumeration value=\"HKD\"/>\n          <s:enumeration value=\"HUF\"/>\n          <s:enumeration value=\"ISK\"/>\n          <s:enumeration value=\"INR\"/>\n          <s:enumeration value=\"IDR\"/>\n          <s:enumeration value=\"IQD\"/>\n          <s:enumeration value=\"ILS\"/>\n          <s:enumeration value=\"JMD\"/>\n          <s:enumeration value=\"JPY\"/>\n          <s:enumeration value=\"JOD\"/>\n          <s:enumeration value=\"KZT\"/>\n          <s:enumeration value=\"KES\"/>\n          <s:enumeration value=\"KRW\"/>\n          <s:enumeration value=\"KWD\"/>\n          <s:enumeration value=\"LAK\"/>\n          <s:enumeration value=\"LVL\"/>\n          <s:enumeration value=\"LBP\"/>\n          <s:enumeration value=\"LSL\"/>\n          <s:enumeration value=\"LRD\"/>\n          <s:enumeration value=\"LYD\"/>\n          <s:enumeration value=\"LTL\"/>\n          <s:enumeration value=\"MOP\"/>\n          <s:enumeration value=\"MKD\"/>\n          <s:enumeration value=\"MGF\"/>\n          <s:enumeration value=\"MWK\"/>\n          <s:enumeration value=\"MYR\"/>\n          <s:enumeration value=\"MVR\"/>\n          <s:enumeration value=\"MTL\"/>\n          <s:enumeration value=\"MRO\"/>\n          <s:enumeration value=\"MUR\"/>\n          <s:enumeration value=\"MXN\"/>\n          <s:enumeration value=\"MDL\"/>\n          <s:enumeration value=\"MNT\"/>\n          <s:enumeration value=\"MAD\"/>\n          <s:enumeration value=\"MZM\"/>\n          <s:enumeration value=\"MMK\"/>\n          <s:enumeration value=\"NAD\"/>\n          <s:enumeration value=\"NPR\"/>\n          <s:enumeration value=\"ANG\"/>\n          <s:enumeration value=\"NZD\"/>\n          <s:enumeration value=\"NIO\"/>\n          <s:enumeration value=\"NGN\"/>\n          <s:enumeration value=\"KPW\"/>\n          <s:enumeration value=\"NOK\"/>\n          <s:enumeration value=\"OMR\"/>\n          <s:enumeration value=\"XPF\"/>\n          <s:enumeration value=\"PKR\"/>\n          <s:enumeration value=\"XPD\"/>\n          <s:enumeration value=\"PAB\"/>\n          <s:enumeration value=\"PGK\"/>\n          <s:enumeration value=\"PYG\"/>\n          <s:enumeration value=\"PEN\"/>\n          <s:enumeration value=\"PHP\"/>\n          <s:enumeration value=\"XPT\"/>\n          <s:enumeration value=\"PLN\"/>\n          <s:enumeration value=\"QAR\"/>\n          <s:enumeration value=\"ROL\"/>\n          <s:enumeration value=\"RUB\"/>\n          <s:enumeration value=\"WST\"/>\n          <s:enumeration value=\"STD\"/>\n          <s:enumeration value=\"SAR\"/>\n          <s:enumeration value=\"SCR\"/>\n          <s:enumeration value=\"SLL\"/>\n          <s:enumeration value=\"XAG\"/>\n          <s:enumeration value=\"SGD\"/>\n          <s:enumeration value=\"SKK\"/>\n          <s:enumeration value=\"SIT\"/>\n          <s:enumeration value=\"SBD\"/>\n          <s:enumeration value=\"SOS\"/>\n          <s:enumeration value=\"ZAR\"/>\n          <s:enumeration value=\"LKR\"/>\n          <s:enumeration value=\"SHP\"/>\n          <s:enumeration value=\"SDD\"/>\n          <s:enumeration value=\"SRG\"/>\n          <s:enumeration value=\"SZL\"/>\n          <s:enumeration value=\"SEK\"/>\n          <s:enumeration value=\"CHF\"/>\n          <s:enumeration value=\"SYP\"/>\n          <s:enumeration value=\"TWD\"/>\n          <s:enumeration value=\"TZS\"/>\n          <s:enumeration value=\"THB\"/>\n          <s:enumeration value=\"TOP\"/>\n          <s:enumeration value=\"TTD\"/>\n          <s:enumeration value=\"TND\"/>\n          <s:enumeration value=\"TRL\"/>\n          <s:enumeration value=\"USD\"/>\n          <s:enumeration value=\"AED\"/>\n          <s:enumeration value=\"UGX\"/>\n          <s:enumeration value=\"UAH\"/>\n          <s:enumeration value=\"UYU\"/>\n          <s:enumeration value=\"VUV\"/>\n          <s:enumeration value=\"VEB\"/>\n          <s:enumeration value=\"VND\"/>\n          <s:enumeration value=\"YER\"/>\n          <s:enumeration value=\"YUM\"/>\n          <s:enumeration value=\"ZMK\"/>\n          <s:enumeration value=\"ZWD\"/>\n          <s:enumeration value=\"TRY\"/>\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"ConversionRateResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ConversionRateResult\" type=\"s:double\"/>\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"double\" type=\"s:double\"/>\n    </s:schema>\n  </wsdl:types>\n  <wsdl:message name=\"ConversionRateSoapIn\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRate\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateSoapOut\">\n    <wsdl:part name=\"parameters\" element=\"tns:ConversionRateResponse\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpGetOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostIn\">\n    <wsdl:part name=\"FromCurrency\" type=\"s:string\"/>\n    <wsdl:part name=\"ToCurrency\" type=\"s:string\"/>\n  </wsdl:message>\n  <wsdl:message name=\"ConversionRateHttpPostOut\">\n    <wsdl:part name=\"Body\" element=\"tns:double\"/>\n  </wsdl:message>\n\n  <wsdl:portType name=\"CurrencyConvertorSoap\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateSoapIn\"/>\n      <wsdl:output message=\"tns:ConversionRateSoapOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n\n  <wsdl:portType name=\"CurrencyConvertorHttpGet\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpGetIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpGetOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:portType name=\"CurrencyConvertorHttpPost\">\n    <wsdl:operation name=\"ConversionRate\">\n      <wsdl:documentation xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\">&lt;br&gt;&lt;b&gt;Get conversion rate from one currency to another currency &lt;b&gt;&lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;font color='#000080' size='1' face='Verdana'&gt;&lt;u&gt;Differenct currency Code and Names around the world&lt;/u&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;font face='Verdana' size='1'&gt;AFA-Afghanistan Afghani&lt;br&gt;ALL-Albanian Lek&lt;br&gt;DZD-Algerian Dinar&lt;br&gt;ARS-Argentine Peso&lt;br&gt;AWG-Aruba Florin&lt;br&gt;AUD-Australian Dollar&lt;br&gt;BSD-Bahamian Dollar&lt;br&gt;BHD-Bahraini Dinar&lt;br&gt;BDT-Bangladesh Taka&lt;br&gt;BBD-Barbados Dollar&lt;br&gt;BZD-Belize Dollar&lt;br&gt;BMD-Bermuda Dollar&lt;br&gt;BTN-Bhutan Ngultrum&lt;br&gt;BOB-Bolivian Boliviano&lt;br&gt;BWP-Botswana Pula&lt;br&gt;BRL-Brazilian Real&lt;br&gt;GBP-British Pound&lt;br&gt;BND-Brunei Dollar&lt;br&gt;BIF-Burundi Franc&lt;br&gt;XOF-CFA Franc (BCEAO)&lt;br&gt;XAF-CFA Franc (BEAC)&lt;br&gt;KHR-Cambodia Riel&lt;br&gt;CAD-Canadian Dollar&lt;br&gt;CVE-Cape Verde Escudo&lt;br&gt;KYD-Cayman Islands Dollar&lt;br&gt;CLP-Chilean Peso&lt;br&gt;CNY-Chinese Yuan&lt;br&gt;COP-Colombian Peso&lt;br&gt;KMF-Comoros Franc&lt;br&gt;CRC-Costa Rica Colon&lt;br&gt;HRK-Croatian Kuna&lt;br&gt;CUP-Cuban Peso&lt;br&gt;CYP-Cyprus Pound&lt;br&gt;CZK-Czech Koruna&lt;br&gt;DKK-Danish Krone&lt;br&gt;DJF-Dijibouti Franc&lt;br&gt;DOP-Dominican Peso&lt;br&gt;XCD-East Caribbean Dollar&lt;br&gt;EGP-Egyptian Pound&lt;br&gt;SVC-El Salvador Colon&lt;br&gt;EEK-Estonian Kroon&lt;br&gt;ETB-Ethiopian Birr&lt;br&gt;EUR-Euro&lt;br&gt;FKP-Falkland Islands Pound&lt;br&gt;GMD-Gambian Dalasi&lt;br&gt;GHC-Ghanian Cedi&lt;br&gt;GIP-Gibraltar Pound&lt;br&gt;XAU-Gold Ounces&lt;br&gt;GTQ-Guatemala Quetzal&lt;br&gt;GNF-Guinea Franc&lt;br&gt;GYD-Guyana Dollar&lt;br&gt;HTG-Haiti Gourde&lt;br&gt;HNL-Honduras Lempira&lt;br&gt;HKD-Hong Kong Dollar&lt;br&gt;HUF-Hungarian Forint&lt;br&gt;ISK-Iceland Krona&lt;br&gt;INR-Indian Rupee&lt;br&gt;IDR-Indonesian Rupiah&lt;br&gt;IQD-Iraqi Dinar&lt;br&gt;ILS-Israeli Shekel&lt;br&gt;JMD-Jamaican Dollar&lt;br&gt;JPY-Japanese Yen&lt;br&gt;JOD-Jordanian Dinar&lt;br&gt;KZT-Kazakhstan Tenge&lt;br&gt;KES-Kenyan Shilling&lt;br&gt;KRW-Korean Won&lt;br&gt;KWD-Kuwaiti Dinar&lt;br&gt;LAK-Lao Kip&lt;br&gt;LVL-Latvian Lat&lt;br&gt;LBP-Lebanese Pound&lt;br&gt;LSL-Lesotho Loti&lt;br&gt;LRD-Liberian Dollar&lt;br&gt;LYD-Libyan Dinar&lt;br&gt;LTL-Lithuanian Lita&lt;br&gt;MOP-Macau Pataca&lt;br&gt;MKD-Macedonian Denar&lt;br&gt;MGF-Malagasy Franc&lt;br&gt;MWK-Malawi Kwacha&lt;br&gt;MYR-Malaysian Ringgit&lt;br&gt;MVR-Maldives Rufiyaa&lt;br&gt;MTL-Maltese Lira&lt;br&gt;MRO-Mauritania Ougulya&lt;br&gt;MUR-Mauritius Rupee&lt;br&gt;MXN-Mexican Peso&lt;br&gt;MDL-Moldovan Leu&lt;br&gt;MNT-Mongolian Tugrik&lt;br&gt;MAD-Moroccan Dirham&lt;br&gt;MZM-Mozambique Metical&lt;br&gt;MMK-Myanmar Kyat&lt;br&gt;NAD-Namibian Dollar&lt;br&gt;NPR-Nepalese Rupee&lt;br&gt;ANG-Neth Antilles Guilder&lt;br&gt;NZD-New Zealand Dollar&lt;br&gt;NIO-Nicaragua Cordoba&lt;br&gt;NGN-Nigerian Naira&lt;br&gt;KPW-North Korean Won&lt;br&gt;NOK-Norwegian Krone&lt;br&gt;OMR-Omani Rial&lt;br&gt;XPF-Pacific Franc&lt;br&gt;PKR-Pakistani Rupee&lt;br&gt;XPD-Palladium Ounces&lt;br&gt;PAB-Panama Balboa&lt;br&gt;PGK-Papua New Guinea Kina&lt;br&gt;PYG-Paraguayan Guarani&lt;br&gt;PEN-Peruvian Nuevo Sol&lt;br&gt;PHP-Philippine Peso&lt;br&gt;XPT-Platinum Ounces&lt;br&gt;PLN-Polish Zloty&lt;br&gt;QAR-Qatar Rial&lt;br&gt;ROL-Romanian Leu&lt;br&gt;RUB-Russian Rouble&lt;br&gt;WST-Samoa Tala&lt;br&gt;STD-Sao Tome Dobra&lt;br&gt;SAR-Saudi Arabian Riyal&lt;br&gt;SCR-Seychelles Rupee&lt;br&gt;SLL-Sierra Leone Leone&lt;br&gt;XAG-Silver Ounces&lt;br&gt;SGD-Singapore Dollar&lt;br&gt;SKK-Slovak Koruna&lt;br&gt;SIT-Slovenian Tolar&lt;br&gt;SBD-Solomon Islands Dollar&lt;br&gt;SOS-Somali Shilling&lt;br&gt;ZAR-South African Rand&lt;br&gt;LKR-Sri Lanka Rupee&lt;br&gt;SHP-St Helena Pound&lt;br&gt;SDD-Sudanese Dinar&lt;br&gt;SRG-Surinam Guilder&lt;br&gt;SZL-Swaziland Lilageni&lt;br&gt;SEK-Swedish Krona&lt;br&gt;TRY-Turkey Lira&lt;br&gt;CHF-Swiss Franc&lt;br&gt;SYP-Syrian Pound&lt;br&gt;TWD-Taiwan Dollar&lt;br&gt;TZS-Tanzanian Shilling&lt;br&gt;THB-Thai Baht&lt;br&gt;TOP-Tonga Pa'anga&lt;br&gt;TTD-Trinidad&amp;amp;amp;Tobago Dollar&lt;br&gt;TND-Tunisian Dinar&lt;br&gt;TRL-Turkish Lira&lt;br&gt;USD-U.S. Dollar&lt;br&gt;AED-UAE Dirham&lt;br&gt;UGX-Ugandan Shilling&lt;br&gt;UAH-Ukraine Hryvnia&lt;br&gt;UYU-Uruguayan New Peso&lt;br&gt;VUV-Vanuatu Vatu&lt;br&gt;VEB-Venezuelan Bolivar&lt;br&gt;VND-Vietnam Dong&lt;br&gt;YER-Yemen Riyal&lt;br&gt;YUM-Yugoslav Dinar&lt;br&gt;ZMK-Zambian Kwacha&lt;br&gt;ZWD-Zimbabwe Dollar&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</wsdl:documentation>\n      <wsdl:input message=\"tns:ConversionRateHttpPostIn\"/>\n      <wsdl:output message=\"tns:ConversionRateHttpPostOut\"/>\n    </wsdl:operation>\n  </wsdl:portType>\n  <wsdl:binding name=\"CurrencyConvertorSoap\" type=\"tns:CurrencyConvertorSoap\">\n    <soap:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorSoap12\" type=\"tns:CurrencyConvertorSoap\">\n    <soap12:binding transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <soap12:operation soapAction=\"http://www.webserviceX.NET/ConversionRate\" style=\"document\"/>\n      <wsdl:input>\n        <soap12:body use=\"literal\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <soap12:body use=\"literal\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpGet\" type=\"tns:CurrencyConvertorHttpGet\">\n    <http:binding verb=\"GET\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <http:urlEncoded/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:binding name=\"CurrencyConvertorHttpPost\" type=\"tns:CurrencyConvertorHttpPost\">\n    <http:binding verb=\"POST\"/>\n    <wsdl:operation name=\"ConversionRate\">\n      <http:operation location=\"/ConversionRate\"/>\n      <wsdl:input>\n        <mime:content type=\"application/x-www-form-urlencoded\"/>\n      </wsdl:input>\n      <wsdl:output>\n        <mime:mimeXml part=\"Body\"/>\n      </wsdl:output>\n    </wsdl:operation>\n  </wsdl:binding>\n  <wsdl:service name=\"CurrencyConvertor\">\n    <wsdl:port name=\"CurrencyConvertorSoap\" binding=\"tns:CurrencyConvertorSoap\">\n      <soap:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorSoap12\" binding=\"tns:CurrencyConvertorSoap12\">\n      <soap12:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpGet\" binding=\"tns:CurrencyConvertorHttpGet\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n    <wsdl:port name=\"CurrencyConvertorHttpPost\" binding=\"tns:CurrencyConvertorHttpPost\">\n      <http:address location=\"http://www.webservicex.net/CurrencyConvertor.asmx\"/>\n    </wsdl:port>\n  </wsdl:service>\n</wsdl:definitions>"
  },
  {
    "path": "soap-test/src/test/resources/wsdl/testservice1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://schemas.eviware.com/TestService/v1/\"\nxmlns:tns=\"http://schemas.eviware.com/TestService/v1/\">\n\n<s:include schemaLocation=\"testservice2.xsd\"/>\n<s:element name=\"GetDefaultPageData\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" >\n            \t</s:element>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageTypeID\" type=\"s:int\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n    \n      <s:element name=\"GetDefaultPageDataResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetDefaultPageDataResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"RawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Property\" type=\"tns:ArrayOfRawProperty\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"ACL\" type=\"tns:ArrayOfRawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawProperty\" nillable=\"true\" type=\"tns:RawProperty\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawProperty\">\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PageDefinitionID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"OwnerTab\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsModified\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsRequired\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPropertyData\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsDynamicProperty\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsPersonalized\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"DisplayName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Description\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"LanguageKey\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"TypeName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"AssemblyName\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CustomData\" type=\"tns:ArrayOfRawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      \n      <s:simpleType name=\"PropertyDataType\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Boolean\" />\n          <s:enumeration value=\"Number\" />\n          <s:enumeration value=\"FloatNumber\" />\n          <s:enumeration value=\"PageType\" />\n          <s:enumeration value=\"PageReference\" />\n          <s:enumeration value=\"Date\" />\n          <s:enumeration value=\"String\" />\n          <s:enumeration value=\"LongString\" />\n          <s:enumeration value=\"Category\" />\n          <s:enumeration value=\"Form\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:complexType name=\"ArrayOfRawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawNameAndXml\" nillable=\"true\" type=\"tns:RawNameAndXml\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawNameAndXml\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Xml\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"ArrayOfRawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawACE\" nillable=\"true\" type=\"tns:RawACE\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"RawACE\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Access\" type=\"tns:AccessLevel\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"AccessLevel\">\n        <s:list>\n          <s:simpleType>\n            <s:restriction base=\"s:string\">\n              <s:enumeration value=\"Read\" />\n              <s:enumeration value=\"Create\" />\n              <s:enumeration value=\"Edit\" />\n              <s:enumeration value=\"Delete\" />\n              <s:enumeration value=\"Publish\" />\n              <s:enumeration value=\"Administer\" />\n            </s:restriction>\n          </s:simpleType>\n        </s:list>\n      </s:simpleType>\n      <s:element name=\"SignatureHeader\" type=\"tns:SignatureHeader\" />\n      <s:complexType name=\"SignatureHeader\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"CheckSum\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"GetPage\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetPageResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetPageResult\" type=\"tns:RawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"GetChildrenResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"GetChildrenResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfRawPage\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"RawPage\" nillable=\"true\" type=\"tns:RawPage\" />\n        </s:sequence>\n      </s:complexType>\n      <s:element name=\"FindPagesWithCriteria\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"criterias\" type=\"tns:ArrayOfPropertyCriteria\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:complexType name=\"ArrayOfPropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"PropertyCriteria\" nillable=\"true\" type=\"tns:PropertyCriteria\" />\n        </s:sequence>\n      </s:complexType>\n      <s:complexType name=\"PropertyCriteria\">\n        <s:sequence>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Name\" type=\"s:string\" />\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"Value\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Type\" type=\"tns:PropertyDataType\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Condition\" type=\"tns:CompareCondition\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"StringCondition\" type=\"tns:StringCompareMethod\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"IsNull\" type=\"s:boolean\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"Required\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n      <s:simpleType name=\"CompareCondition\">\n      \t<s:restriction base=\"s:string\">\n      \t\t<s:pattern value=\"([\\w\\.@-]{3,30})?\"></s:pattern>\n      \t</s:restriction>\n      </s:simpleType>\n      <s:simpleType name=\"StringCompareMethod\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"Identical\" />\n          <s:enumeration value=\"StartsWith\" />\n          <s:enumeration value=\"EndsWith\" />\n          <s:enumeration value=\"Contained\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"FindPagesWithCriteriaResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"FindPagesWithCriteriaResult\" type=\"tns:ArrayOfRawPage\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Save\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"page\" type=\"tns:RawPage\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"action\" type=\"tns:SaveAction\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:simpleType name=\"SaveAction\">\n        <s:restriction base=\"s:string\">\n          <s:enumeration value=\"None\" />\n          <s:enumeration value=\"Save\" />\n          <s:enumeration value=\"CheckIn\" />\n          <s:enumeration value=\"Publish\" />\n          <s:enumeration value=\"Reject\" />\n          <s:enumeration value=\"ForceNewVersion\" />\n          <s:enumeration value=\"ForceCurrentVersion\" />\n        </s:restriction>\n      </s:simpleType>\n      <s:element name=\"SaveResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"SaveResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"Ping\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"PingResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"PingResult\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersion\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteVersionResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Delete\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"DeleteChildren\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"forceDelete\" type=\"s:boolean\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"DeleteChildrenResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Move\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"MoveResponse\">\n        <s:complexType />\n      </s:element>\n      <s:element name=\"Copy\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"pageLink\" type=\"tns:PageReference\" />\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"destinationLink\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      <s:element name=\"CopyResponse\">\n        <s:complexType>\n          <s:sequence>\n            <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"CopyResult\" type=\"tns:PageReference\" />\n          </s:sequence>\n        </s:complexType>\n      </s:element>\n      \n</s:schema>\n"
  },
  {
    "path": "soap-test/src/test/resources/wsdl/testservice2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<s:schema xmlns:s=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\"http://schemas.eviware.com/TestService/v1/\">\n\n  <s:complexType name=\"PageReference\">\n        <s:annotation>\n        \t<s:documentation><![CDATA[\n        \t\t<html><p><b>test <i>test</i></b></p></html>]]>\n        \t</s:documentation>\n        </s:annotation>\n        <s:sequence>\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"ID\" type=\"s:int\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"WorkID\" type=\"s:int\" >\n          \t<s:annotation>\n          \t\t<s:documentation>WorkID is good to h</s:documentation>\n          \t</s:annotation></s:element>\n          <s:element minOccurs=\"0\" maxOccurs=\"1\" name=\"RemoteSite\" type=\"s:string\" />\n          <s:element minOccurs=\"1\" maxOccurs=\"1\" name=\"LoadRawPageData\" type=\"s:boolean\" />\n        </s:sequence>\n      </s:complexType>\n</s:schema>\n"
  },
  {
    "path": "src/main/resources/findbugs-exclude.xml",
    "content": "<FindBugsFilter>\n\t<Match>\n\t\t<Class name=\"~.*\\.*Test.*\" />\n\t</Match>\n\t<Match>\n      <Package name=\"~.*\\.test.*\" />\n    </Match>\n\t<Match>\n      <Package name=\"~.*\\.spikes.*\" />\n    </Match>\n</FindBugsFilter>\n"
  },
  {
    "path": "src/main/resources/license.txt",
    "content": "Copyright (c) ${year} ${company}. All Rights Reserved.\n\nLicensed to the Apache Software Foundation (ASF) under one or more\ncontributor license agreements.  See the NOTICE file distributed with\nthis work for additional information regarding copyright ownership.\nThe ASF licenses this file to You under the Apache License, Version 2.0\n(the \"License\"); you may not use this file except in compliance with\nthe License.  You may obtain a copy of the License at\n\n  http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n"
  },
  {
    "path": "src/site/fml/faq.fml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!--\n\n    Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n<faqs xmlns=\"http://maven.apache.org/FML/1.0.1\"\n      xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n      xsi:schemaLocation=\"http://maven.apache.org/FML/1.0.1 http://maven.apache.org/xsd/fml-1.0.1.xsd\"\n      title=\"Frequently Asked Questions\"\n      toplink=\"false\">\n\n    <part id=\"general\">\n        <title>General</title>\n\n        <faq id=\"whats-is-soap-ws\">\n            <question>\n                What is soap-ws?\n            </question>\n            <answer>\n                <p>\n                soap-ws is a lightweight and easy-to-use Java library to handle SOAP message generation and SOAP message transmission\n                on a purely XML level. With the usage of this library within few lines of code you can easily import your WSDL and generate\n                SOAP messages directly in an XML format. Then you can use the SoapClient to transmit this message over HTTP(s) to a web-service\n                endpoint. Finally, you can run SoapServer to receive SOAP messages and and respond to them. And all of that requires no classes\n                or stubs generation - everything happens directly in an XML format.\n                </p>\n            </answer>\n        </faq>\n\n        <faq id=\"why-should-i-bother\">\n            <question>\n                What should I bother?\n            </question>\n            <answer>\n                Have a look at this:\n                <ul>\n                    <li>Have you ever had problems with the versioning of web-service endpoints? Have you ever had to address the problem how to deal with many versions of the same classes generated from two versions of the same WSDL in one code base? Did you try to prefix the classes, change the package, or do any other mambo-jumbo tricks that are clearly against the best-practices of software design?</li>\n                    <li>Have you every tried to chain and orchestrate a few web-service invocations applying some XSLT transformation to the consecutive responses forwarding them to the next endpoint? Have you ever seen how cumbersome it is using Java generated ws clients/servers?</li>\n                    <li>Have you ever had to re-generate the ws-stubs, recompile and redeploy you application because of a tiny change in the WSDL?</li>\n                    <li>Have you every been confused why you generate all these domain and stub classes to invoke one simple web-service operation and to get a plain response that could be processed with XSTL one-liner?</li>\n                    <li>Have you ever had to had to send a simple XML message to a SOAP server in a fire and forget mode?</li>\n                    <li>Have you ever had to expose a mock SOAP endpoint that would respond to the request sending a sample response -let's say in an unit test?</li>\n                    <li>Have you ever had to download a hierarchical WSDL file with hierarchical XSD schemas and store it on your local hard drive with all the import and includes fixed properly so that you can reuse it locally?</li>\n                    <li>Have you ever…</li>\n                </ul>\n                <p>\n                    Yes, that's what soap-ws can do for you. But it can do much more, just dive in and check the plethora of stuff that we have implemented.\n                </p>\n            </answer>\n        </faq>\n\n        <faq id=\"how-can-i-hack-around\">\n            <question>\n                How can I hack around?\n            </question>\n            <answer>\n                Try here:\n                <ul>\n                    <li>GitHub -> https://github.com/reficio/soap-ws</li>\n                    <li>Jenkins -> https://reficio.ci.cloudbees.com/job/soap-ws</li>\n                    <li>Site -> http://projects.reficio.org/soap-ws/1.0.0-SNAPSHOT</li>\n                </ul>\n            </answer>\n        </faq>\n    </part>\n\n</faqs>\n"
  },
  {
    "path": "src/site/site.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n\n    Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.\n\n    Licensed to the Apache Software Foundation (ASF) under one or more\n    contributor license agreements.  See the NOTICE file distributed with\n    this work for additional information regarding copyright ownership.\n    The ASF licenses this file to You under the Apache License, Version 2.0\n    (the \"License\"); you may not use this file except in compliance with\n    the License.  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n-->\n<project xmlns=\"http://maven.apache.org/DECORATION/1.0.0\"\n         xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:schemaLocation=\"http://maven.apache.org/DECORATION/1.0.0 http://maven.apache.org/xsd/decoration-1.0.0.xsd\">\n    <skin>\n        <groupId>org.reficio</groupId>\n        <artifactId>maven-skin</artifactId>\n        <version>1.0.0</version>\n    </skin>\n\n    <body>\n        <head>\n            <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js\">\n            </script>\n\n            <script type=\"text/javascript\">\n                $(document).ready(function(){\n                $(\"a:contains('About')\").hide();\n                $(\"a:contains('JavaDocs')\").attr('target', '_blank');\n                $(\"a:contains('Source Xref')\").attr('target', '_blank');\n                $(\"a:contains('Cobertura Test Coverage')\").attr('target', '_blank');\n                $(\"a:contains('Clover')\").attr('target', '_blank');\n                });\n            </script>\n            <script type=\"text/javascript\" language=\"javascript\"\n                    src=\"http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js\"></script>\n            <script type=\"text/javascript\" language=\"javascript\"\n                    src=\"http://google-code-prettify.googlecode.com/svn/trunk/src/lang-css.js\"></script>\n            <script type=\"text/javascript\">\n                function addLoadEvent(func) {\n                var oldonload = window.onload;\n                if (typeof window.onload != 'function') {\n                window.onload = func;\n                } else {\n                window.onload = function() {\n                if (oldonload) {\n                oldonload();\n                }\n                func();\n                }\n                }\n                }\n                $(function() {\n                $('pre').addClass('prettyprint');\n                });\n                addLoadEvent(prettyPrint);\n\n\n            </script>\n            <style type=\"text/css\">\n                /* Pretty printing styles. Used with prettify.js. */\n\n                .str { color: #080; }\n                .kwd { color: #008; }\n                .com { color: #800; }\n                .typ { color: #606; }\n                .lit { color: #066; }\n                .pun { color: #660; }\n                .pln { color: #000; }\n                .tag { color: #008; }\n                .atn { color: #606; }\n                .atv { color: #080; }\n                .dec { color: #606; }\n                pre.prettyprint { padding: 2px; border: 1px solid #888; }\n\n                @media print {\n                .str { color: #060; }\n                .kwd { color: #006; font-weight: bold; }\n                .com { color: #600; font-style: italic; }\n                .typ { color: #404; font-weight: bold; }\n                .lit { color: #044; }\n                .pun { color: #440; }\n                .pln { color: #000; }\n                .tag { color: #006; font-weight: bold; }\n                .atn { color: #404; }\n                .atv { color: #060; }\n                }\n            </style>\n            <script type=\"text/javascript\">\n\n                var _gaq = _gaq || [];\n                _gaq.push(['_setAccount', 'UA-33336911-1']);\n                _gaq.push(['_setDomainName', '.reficio.org']);\n                _gaq.push(['_trackPageview']);\n\n                (function() {\n                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n                })();\n\n            </script>\n        </head>\n\n        <menu name=\"Overview\">\n            <item name=\"Usage\" href=\"\">\n                <item name=\"Manual\" href=\"manual.html\"/>\n                <item name=\"FAQ\" href=\"faq.html\"/>\n            </item>\n        </menu>\n        $reports\n    </body>\n\n</project>\n"
  }
]