<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements. See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership. The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied. See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<toolspec xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:xhtml="http://www.w3.org/TR/xhtml1/strict"
      xsi:schemaLocation="http://cxf.apache.org/Xutil/ToolSpecification http://cxf.apache.org/schema/xutil/tool-specification.xsd"
      xmlns="http://cxf.apache.org/Xutil/ToolSpecification"
      xmlns:ts="http://cxf.apache.org/Xutil/ToolSpecification">

    <annotation>
Examples:

        wsdl2java HelloWorld.wsdl
        wsdl2java -p com.iona.greeting Greeting.wsdl
        wsdl2java -client HelloWorld.wsdl
    </annotation>

    <usage>
        <optionGroup id="options">
            <option id="frontend" maxOccurs="unbounded">
                <annotation>
                    Specifies the front end. (defaults to JAXWS)
                </annotation>
                <switch>fe</switch>
                <switch>frontend</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>front-end-name</annotation>
                </associatedArgument>
            </option>

            <option id="databinding" maxOccurs="unbounded">
                <annotation>
                    Specifies the data binding. (defaults to JAXB)
                </annotation>
                <switch>db</switch>
                <switch>databinding</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>data-binding-name</annotation>
                </associatedArgument>
            </option>

            <option id="wsdlversion" maxOccurs="unbounded">
                <annotation>
                    Specifies the WSDL version. (default is WSDL1.1)
                </annotation>
                <switch>wv</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>wsdl-version</annotation>
                </associatedArgument>
            </option>

            <option id="packagename" maxOccurs="unbounded">
                <annotation>
                    Specifies the java package name to use for the generated code.
                    Optionally  specify a WSDL namespace to Java package name
                    mapping.
                </annotation>
                <switch>p</switch>
                <associatedArgument placement="afterSpace">
                    <valuetype>NamingSpacePackageString</valuetype>
                    <annotation>[wsdl-namespace =]package-name</annotation>
                </associatedArgument>
            </option>

            <option id="servicename">
                <annotation>
                    Specify he WSDL service name to use for the generated code.
                    Also, optionally specify the WSDL namespace.
                </annotation>
                <switch>sn</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>service-name</annotation>
                </associatedArgument>
            </option>

            <option id="binding" maxOccurs="unbounded">
                <annotation>
                    Specify an external jaxws or jaxb binding files. Use one
                    -b flag for each binding file.
                </annotation>
                <switch>b</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>binding-file-name</annotation>
                </associatedArgument>
            </option>

            <option id="catalog" maxOccurs="1">
                <annotation>
                    Specify catalog file to map the imported wsdl/schema.
                </annotation>
                <switch>catalog</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>catalog-file-name</annotation>
                </associatedArgument>
            </option>

            <option id="outputdir" maxOccurs="1">
                <annotation>
                    Specify the directory into which the code is placed.
                </annotation>
                <switch>d</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>output-directory</annotation>
                </associatedArgument>
            </option>

            <option id="compile" maxOccurs="1">
                <annotation>
                    Specifies that the generated code is compiled by the tool.</annotation>
                <switch>compile</switch>
            </option>

            <option id="classdir" maxOccurs="1">
                <annotation>
                    Specifies the directory into which compiled class files are placed.</annotation>
                <switch>classdir</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>compile-classes-directory</annotation>
                </associatedArgument>
            </option>

            <option id="impl" maxOccurs="1">
                <annotation>
                    Specifies that a dummy service implementation is generated.
                </annotation>
                <switch>impl</switch>
            </option>

            <option id="server" maxOccurs="1">
                <annotation>
                    Specifies that server code is generated.
                </annotation>
                <switch>server</switch>
            </option>

            <option id="client" maxOccurs="1">
                <annotation>
                    Specifies that client code is generated.
                </annotation>
                <switch>client</switch>
            </option>

            <option id="all" maxOccurs="1">
                <annotation>
                    Specifies that interfaces, types , service, server , dummy impl, client
                    and ant script are generated.
                </annotation>
                <switch>all</switch>
            </option>
            
            <option id="autoNameResolution" maxOccurs="1">
                <annotation>
                    Specifies that the tool will attempt to resolve class naming conflicts 
                    without requiring the use of binding customizations.
                </annotation>
                <switch>autoNameResolution</switch>
            </option>

	        <option id="defaultValues" maxOccurs="1">
                <annotation>
                    Specifies that default values are generated for the dummy implementation and client. 
                    You can specify the name of the class to provide the default values. The default is 
                    RandomValueProvider.
                </annotation>
                <switch>defaultValues</switch>
                <associatedArgument placement="immediate">
                    <annotation>=class-name-for-DefaultValueProvider</annotation>
                </associatedArgument>
            </option>

            <option id="ant" maxOccurs="1">
                <annotation>
                    Specifies that an ant build script is generated for the project.
                </annotation>
                <switch>ant</switch>
            </option>

            <option id="nexclude" maxOccurs="unbounded">
                <annotation>
                    Specifies a WSDL namespace to exclude when generating code. This
                    option can be specified multiple times. Optionally
                    specify the Java package name to use for the WSDL namespace.
                </annotation>
                <switch>nexclude</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>schema-namespace [= java-package-name]</annotation>
                </associatedArgument>
            </option>

            <option id="exsoapheader" maxOccurs="1">
                <annotation>
                    Enables the processing of extended SOAP header message binding.
                </annotation>
                <switch>exsh</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>(true, false)</annotation>
                    <valueenum>true|false</valueenum>
                </associatedArgument>
            </option>

            <option id="defaultns" maxOccurs="1">
                <annotation>
                    Enables loading the default namespace package name mapping. The default is true.
                </annotation>
                <switch>dns</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>Default value is true</annotation>
                    <valueenum>true|false</valueenum>
                </associatedArgument>
            </option>

            <option id="defaultex" maxOccurs="1">
                <annotation>
                    Enable loading the default excludes namespace mapping. The default is true.</annotation>
                <switch>dex</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>(true, false)</annotation>
                    <valueenum>true|false</valueenum>
                </associatedArgument>
            </option>

            <option id="validate" maxOccurs="1">
                <annotation>
                    Specifies that the WSDL is validated before generating the code. Using 
                    this option is highly recommended.
                </annotation>
                <switch>validate</switch>
            </option>

            <option id="newonly" maxOccurs="1">
                <annotation>
                    Specifies that existing code will not be over written. NOTE: You will have to solve any resulting compilation problems by yourself
                </annotation>
                <switch>keep</switch>
            </option>

            <option id="wsdlLocation" maxOccurs="1">
                <annotation>
                    Specifies the value of the @WebServiceClient annotation's wsdlLocation property.
                </annotation>
                <associatedArgument placement="afterSpace">
                    <annotation>wsdlLocation</annotation>
                </associatedArgument>
                <switch>wsdlLocation</switch>
            </option>

            <option id="xjc" maxOccurs="1">
                <annotation>
                    Specifies a comma separated list of arguments that are passed directly to XJC when the
                    JAXB data binding  is used. This option causes XJC to load additional plugins that 
                    augment code generation. For example to load the toString(ts) plugin that will add a toString() 
                    method to all generated types the following &lt;xjc arguments&gt; would 
                    be used:
                          -xjc-Xts
                    A list of available XJC plugins can be obtained by using -xjc-X.                     
                </annotation>
                <associatedArgument placement="immediate">
                    <annotation>xjc-arguments</annotation>
                </associatedArgument>
                <switch>xjc</switch>
            </option>
            
           <option id="noAddressBinding" maxOccurs="1">
                <annotation>
                    Specifies that the generator should not use the address jaxb binding file to map wsa:EndpointReferenceType 
                    or wsa:EndpointReference to javax.xml.ws.wsaddressing.W3CEndpointReference.
                </annotation>
                <switch>noAddressBinding</switch>
            </option>

        </optionGroup>
        <optionGroup id="common_options">
            <option id="help" maxOccurs="1">
                <annotation>
                    Display detailed information for options.
                </annotation>
                <switch>h</switch>
                <switch>?</switch>
                <switch>help</switch>
            </option>

            <option id="version">
                <annotation>
                    Display the version of the tool.</annotation>
                <switch>v</switch>
            </option>

            <option id="verbose">
                <annotation>
                    Specifies that the generator runs in verbose mode.</annotation>
                <switch>verbose</switch>
                <switch>V</switch>
            </option>

            <option id="quiet">
                <annotation>
                    Specifies that the generator runs in quiet mode.</annotation>
                <switch>quiet</switch>
                <switch>q</switch>
            </option>

	        <option id="wsdlList" maxOccurs="1">
	            <annotation>
	                Indicates the wsdlurl is a plain text list of wsdlurls that are new line delimited.
	                As an example the wsdlurl might point to 
	                http://127.0.0.1:8080/context_path/ws?formatted=false&amp;wsdlList=true on a cxf 
	                server. 
	            </annotation>
	            <switch>wsdlList</switch>
	        </option>

        </optionGroup>
        <argument id="wsdlurl" minOccurs="1" maxOccurs="1">
            <annotation>
                wsdl-url</annotation>
        </argument>
    </usage>
</toolspec>