Package org.apache.axis.wsdl.gen

Source Code of org.apache.axis.wsdl.gen.WSDL2

/*
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 2001 The Apache Software Foundation.  All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. The end-user documentation included with the redistribution,
*    if any, must include the following acknowledgment:
*       "This product includes software developed by the
*        Apache Software Foundation (http://www.apache.org/)."
*    Alternately, this acknowledgment may appear in the software itself,
*    if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Axis" and "Apache Software Foundation" must
*    not be used to endorse or promote products derived from this
*    software without prior written permission. For written
*    permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
*    nor may "Apache" appear in their name, without prior written
*    permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.axis.wsdl.gen;

import org.apache.axis.utils.CLArgsParser;
import org.apache.axis.utils.CLOption;
import org.apache.axis.utils.CLOptionDescriptor;
import org.apache.axis.utils.CLUtil;
import org.apache.axis.utils.DefaultAuthenticator;
import org.apache.axis.utils.JavaUtils;

import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

public class WSDL2 {

    protected static final int DEBUG_OPT = 'D';
    protected static final int HELP_OPT = 'h';
    protected static final int NETWORK_TIMEOUT_OPT = 'O';
    protected static final int NOIMPORTS_OPT = 'n';
    protected static final int VERBOSE_OPT = 'v';
    protected static final int NOWRAP_OPT = 'W';

    protected CLOptionDescriptor[] options = new CLOptionDescriptor[]{
        new CLOptionDescriptor("help",
                CLOptionDescriptor.ARGUMENT_DISALLOWED,
                HELP_OPT,
                JavaUtils.getMessage("optionHelp00")),
        new CLOptionDescriptor("verbose",
                CLOptionDescriptor.ARGUMENT_DISALLOWED,
                VERBOSE_OPT,
                JavaUtils.getMessage("optionVerbose00")),
        new CLOptionDescriptor("noImports",
                CLOptionDescriptor.ARGUMENT_DISALLOWED,
                NOIMPORTS_OPT,
                JavaUtils.getMessage("optionImport00")),
        new CLOptionDescriptor("timeout",
                CLOptionDescriptor.ARGUMENT_REQUIRED,
                NETWORK_TIMEOUT_OPT,
                JavaUtils.getMessage("optionTimeout00")),
        new CLOptionDescriptor("Debug",
                CLOptionDescriptor.ARGUMENT_DISALLOWED,
                DEBUG_OPT,
                JavaUtils.getMessage("optionDebug00")),
        new CLOptionDescriptor("noWrapped",
                 CLOptionDescriptor.ARGUMENT_DISALLOWED,
                 NOWRAP_OPT,
                 JavaUtils.getMessage("optionNoWrap00"))
    };

    protected String wsdlURI = null;
    protected Parser parser;

    /**
     * Constructor
     * Used by extended classes to construct an instance of WSDL2
     */
    protected WSDL2 () {
        parser = createParser();
    } // ctor

    /**
     * createParser
     * Used by extended classes to construct an instance of the Parser
     */
    protected Parser createParser() {
        return new Parser();
    } // createParser

    /**
     * getParser
     * get the Parser object
     */
    protected Parser getParser() {
        return parser;
    } // getParser

    /**
     * addOptions
     * Add option descriptions to the tool.
     * @param newOptions CLOptionDescriptor[] the options
     */
    protected void addOptions(CLOptionDescriptor[] newOptions) {
        if (newOptions != null && newOptions.length > 0) {
            CLOptionDescriptor[] allOptions = new CLOptionDescriptor[
                   options.length + newOptions.length];
            System.arraycopy(options, 0, allOptions, 0, options.length);
            System.arraycopy(newOptions, 0, allOptions, options.length, newOptions.length);
            options = allOptions;
        }
    } // addOptions

    /**
     * Parse an option
     * @param option CLOption is the option
     */
    protected void parseOption(CLOption option) {
        switch (option.getId()) {
            case CLOption.TEXT_ARGUMENT:
                if (wsdlURI != null) {
                    System.out.println(JavaUtils.getMessage("w2jDuplicateWSDLURI00",
                                                            wsdlURI,
                                                            option.getArgument()));
                    printUsage();
                }
                wsdlURI = option.getArgument();
                break;

            case HELP_OPT:
                printUsage();
                break;

            case NOIMPORTS_OPT:
                parser.setImports(false);
                break;

            case NETWORK_TIMEOUT_OPT:
                String timeoutValue = option.getArgument();
                long timeout = Long.parseLong(timeoutValue);
                        // Convert seconds to milliseconds.
                if(timeout > 0)
                    timeout = timeout * 1000;
                parser.setTimeout(timeout);
                break;

            case VERBOSE_OPT:
                parser.setVerbose(true);
                break;

            case DEBUG_OPT:
                parser.setDebug(true);
                break;

            case NOWRAP_OPT:
                parser.setNowrap(true);
                break;
        }
    } // parseOption

    /**
     * validateOptions
     * This method is invoked after the options are set to validate and default the options
     * the option settings.
     **/
    protected void validateOptions() {
        if (wsdlURI == null) {
            System.out.println(JavaUtils.getMessage("w2jMissingWSDLURI00"));
            printUsage();
        }

        // Set username and password if provided in URL
        checkForAuthInfo(wsdlURI);
        Authenticator.setDefault(new DefaultAuthenticator(
                parser.getUsername(), parser.getPassword()));
    } // validateOptions


    /**
     * checkForAuthInfo
     * set user and password information
     */
    private void checkForAuthInfo(String uri) {
        URL url = null;
        try {
            url = new URL(uri);
        } catch (MalformedURLException e) {
            // not going to have userInfo
            return;
        }
        String userInfo = url.getUserInfo();
        if (userInfo != null) {
            int i = userInfo.indexOf(':');
            if (i >= 0) {
                parser.setUsername(userInfo.substring(0,i));
                parser.setPassword(userInfo.substring(i+1));
            } else {
                parser.setUsername(userInfo);
            }
        }
    }

    /**
     * printUsage
     * print usage information and quit.
     */
    protected void printUsage() {
        String lSep = System.getProperty("line.separator");
        StringBuffer msg = new StringBuffer();
        msg.append(
                JavaUtils.getMessage("usage00",
                "java " + getClass().getName() + " [options] WSDL-URI"))
                .append(lSep);
        msg.append(JavaUtils.getMessage("options00")).append(lSep);
        msg.append(CLUtil.describeOptions(options).toString());
        System.out.println(msg.toString());
        System.exit(1);
    } // printUsage

    /**
     * run
     * checkes the command-line arguments and runs the tool.
     * @param args String[] command-line arguments.
     */
    protected void run(String[] args) {
        // Parse the arguments
        CLArgsParser argsParser = new CLArgsParser(args, options);

        // Print parser errors, if any
        if (null != argsParser.getErrorString()) {
            System.err.println(
                    JavaUtils.getMessage("error01", argsParser.getErrorString()));
            printUsage();
        }

        // Get a list of parsed options
        List clOptions = argsParser.getArguments();
        int size = clOptions.size();

        try {
            // Parse the options and configure the emitter as appropriate.
            for (int i = 0; i < size; i++) {
                parseOption((CLOption)clOptions.get(i));
            }

            // validate argument combinations
            //
            validateOptions();

            parser.run(wsdlURI);

            // everything is good
            System.exit(0);
        }
        catch (Throwable t) {
            t.printStackTrace();
            System.exit(1);
        }
    } // run

    /**
     * Main
     * Run the tool with the specified command-line arguments
     * @param args String[] command-line arguments
     */
    public static void main(String[] args) {
        WSDL2 wsdl2 = new WSDL2();
        wsdl2.run(args);
    } // main
} // class WSDL2
TOP

Related Classes of org.apache.axis.wsdl.gen.WSDL2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.