/* * 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. */ package org.apache.axis2.wsdl; import java.net.Authenticator; import java.net.MalformedURLException; import java.net.PasswordAuthentication; import java.net.URL; import java.util.Map; import org.apache.axis2.util.CommandLineOption; import org.apache.axis2.util.CommandLineOptionConstants; import org.apache.axis2.util.CommandLineOptionParser; import org.apache.axis2.wsdl.codegen.CodeGenConfiguration; import org.apache.axis2.wsdl.codegen.CodeGenerationEngine; import org.apache.axis2.wsdl.codegen.CodegenConfigLoader; import org.apache.axis2.wsdl.codegen.jaxws.JAXWSCodeGenerationEngine; import org.apache.axis2.wsdl.i18n.CodegenMessages; import org.apache.axis2.wsdl.util.WSDL2JavaOptionsValidator; public class WSDL2Code { public static void main(String[] args) throws Exception { CommandLineOptionParser commandLineOptionParser = new CommandLineOptionParser( args); checkAuthentication(commandLineOptionParser); setSystemProperties(commandLineOptionParser); //If it is a JAX-WS code generation request call WSimportTool. if (isJwsOptionEnabled(commandLineOptionParser)){ new JAXWSCodeGenerationEngine(commandLineOptionParser, args).generate(); return; } if (isOptionsValid(commandLineOptionParser)){ CodeGenConfiguration config = new CodeGenConfiguration(); CodegenConfigLoader.loadConfig(config, commandLineOptionParser.getAllOptions()); new CodeGenerationEngine(config).generate(); } else { printUsage(); } } private static void printUsage() { System.out.println(CodegenMessages.getMessage("wsdl2code.arg")); System.out.println(CodegenMessages.getMessage("wsdl2code.arg1")); for (int i = 2; i <= 53; i++) { System.out.println(" " + CodegenMessages.getMessage("wsdl2code.arg" + i)); } } private static boolean isOptionsValid(CommandLineOptionParser parser) { boolean isValid = true; if (parser.getInvalidOptions(new WSDL2JavaOptionsValidator()).size() > 0){ isValid = false; } if (null == parser.getAllOptions().get( CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION)){ isValid = false; } return isValid; } private static boolean isJwsOptionEnabled(CommandLineOptionParser parser) { Map allOptions = parser.getAllOptions(); CommandLineOption option = (CommandLineOption) allOptions .get(CommandLineOptionConstants.WSDL2JavaConstants.JAX_WS_SERVICE_OPTION); if( option == null){ return false; } return true; } private static void checkAuthentication(CommandLineOptionParser commandLineOptionParser) { String userName = null; String password = null; Map allOptions = commandLineOptionParser.getAllOptions(); CommandLineOption userOption = (CommandLineOption) allOptions .get(CommandLineOptionConstants.WSDL2JavaConstants.HTTP_PROXY_USER_OPTION_LONG); CommandLineOption passwordOption = (CommandLineOption) allOptions .get(CommandLineOptionConstants.WSDL2JavaConstants.HTTP_PROXY_PASSWORD_OPTION_LONG); CommandLineOption urlOption = (CommandLineOption) allOptions .get(CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION); if(urlOption == null){ return; } if (userOption != null) { userName = userOption.getOptionValue(); } if (passwordOption != null) { password = passwordOption.getOptionValue(); } if (userName == null) { // Try to collect user name and password from UserInfo part of the URL. URL url = null; try { url = new URL(urlOption.getOptionValue()); } catch (MalformedURLException e) { return; } String userInfo = url.getUserInfo(); if (userInfo != null) { int i = userInfo.indexOf(':'); if (i >= 0) { userName = userInfo.substring(0, i); password = userInfo.substring(i + 1); } else { userName = userInfo; } } } if (userName != null) { final String user = userName; final String pass = password == null ? "" : password; Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(user, pass.toCharArray()); } }); } } private static void setSystemProperties(CommandLineOptionParser commandLineOptionParser) { Map<String, CommandLineOption> allOptions = commandLineOptionParser.getAllOptions(); // System properties follow "-Dproperty=value" format, only key is required. if (allOptions != null) { for (String key : allOptions.keySet()) { if (key != null && key.length() > 0 && key.startsWith(CommandLineOptionConstants.WSDL2JavaConstants.SYSTEM_PROPERTY_PREFIX) && key.contains("=")) { int splitIndex = key.indexOf("="); String pKey = key.substring(1, splitIndex); String pValue = key.substring(splitIndex + 1); if (pKey != null && pValue != null) { System.setProperty(pKey, pValue); } } } } } }