<?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="1">
                <annotation>Specify the frontend name</annotation>
                <switch>fe</switch>
                <switch>frontend</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>name of the front end (default use jaxws)</annotation>
                </associatedArgument>
            </option>

            <option id="databinding" maxOccurs="1">
                <annotation>Specify the databinding name</annotation>
                <switch>db</switch>
                <switch>databinding</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>name of the data binding (default use jaxb)</annotation>
                </associatedArgument>
            </option>

            <option id="packagename" maxOccurs="unbounded">
                <annotation>
                    The java package name to use for the generated code.
                    Also, optionally specify the wsdl namespace mapping
                    to a particular java packagename.
                </annotation>
                <switch>p</switch>
                <associatedArgument placement="afterSpace">
                    <valuetype>NamingSpacePackageString</valuetype>
                    <annotation>[wsdl namespace =]Package Name</annotation>
                </associatedArgument>
            </option>

            <!--
            <option id="binding" maxOccurs="unbounded">
            <annotation>
                Specify external jaxws or jaxb binding files, (Each 
                file must have its own -b)
            </annotation>
            <switch>b</switch>
            <associatedArgument placement="afterSpace">
                <annotation>binding-name</annotation>
            </associatedArgument>
            </option>
            -->

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

            <option id="compile" maxOccurs="1">
                <annotation>Compile the generated file</annotation>
                <switch>compile</switch>
            </option>

            <option id="classdir" maxOccurs="1">
                <annotation>Specify where to place generated class files</annotation>
                <switch>classdir</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>compile-classes-directory</annotation>
                </associatedArgument>
            </option>

            <!--
            <option id="impl" maxOccurs="1">
            <annotation>
            Generate the dummy service implementation.</annotation>
            <switch>impl</switch>
            </option>
    
            <option id="server" maxOccurs="1">
            <annotation>
            Generates the server code</annotation>
            <switch>server</switch>
            </option>
    
            <option id="client" maxOccurs="1">
            <annotation>
            Generates the client code.</annotation>
            <switch>client</switch>
            </option>
    
            <option id="all" maxOccurs="1">
            <annotation>
                Generates interfaces,types,service,server,impl,client
                and ant script.
            </annotation>
            <switch>all</switch>
            </option>
            
            <option id="ant" maxOccurs="1">
            <annotation>
                ant script generation.
            </annotation>
            <switch>ant</switch>
            </option>
            -->

            <option id="nexclude" maxOccurs="unbounded">
                <annotation>
                    The wsdl namespace to exclude when generating code. This
                    option can be specified multiple times. Also, optionally
                    specify the java package name to use for this wsdl namespace.
                </annotation>
                <switch>nexclude</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>schema namespace [= java packagename]</annotation>
                </associatedArgument>
            </option>

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

            <option id="defaultns" maxOccurs="1">
                <annotation>To enable loading the default namespace package name mapping
                </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>To enable loading the default excludes namespace mapping</annotation>
                <switch>dex</switch>
                <associatedArgument placement="afterSpace">
                    <annotation>Default value is true</annotation>
                    <valueenum>true|false</valueenum>
                </associatedArgument>
            </option>

            <option id="validate" maxOccurs="1">
                <annotation>
                    To valiate the wsdl before generate the code. We highly sugguest
                    you to run the tool called schema validator before generating
                    the code.
                </annotation>
                <switch>validate</switch>
            </option>

            <option id="wsdlLocation" maxOccurs="1">
                <annotation>
                    The wsdlLocation that is injected into code.  This location could be the location
                    of the wsdl once the app is deployed which could be different than at
                    code generation time.
                </annotation>
                <associatedArgument placement="afterSpace">
                    <annotation>wsdlLocation attribute</annotation>
                </associatedArgument>
            </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>Verbose mode</annotation>
                <switch>verbose</switch>
                <switch>V</switch>
            </option>

            <option id="quiet">
                <annotation>Quiet mode</annotation>
                <switch>quiet</switch>
                <switch>q</switch>
            </option>

        </optionGroup>
        <argument id="wsdlurl" minOccurs="1" maxOccurs="1">
            <annotation>WSDL URL</annotation>
        </argument>
    </usage>
</toolspec>
