Details
Description
/*
- 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.
*/
//extension property requires an extension java class see below
package org.apache.axis2.wsdl.codegen.jaxws;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.axiom.om.util.LogOutputStream;
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.CodeGenerationException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sun.tools.ws.wscompile.WsimportTool;
/**
- The Class JAXWSCodeGenerationEngine.
*/
public class JAXWSCodeGenerationEngine {
private static final Log log = LogFactory
.getLog(JAXWSCodeGenerationEngine.class);
private CodeGenConfiguration configuration;
private CommandLineOptionParser commandLineOptionParser;
private String[] originalArgs;
/**
- Instantiates a new jAXWS code generation engine.
* - @param configuration
- the configuration
- @param originalArgs
- the original args
- @throws CodeGenerationException
- the code generation exception
*/
public JAXWSCodeGenerationEngine(CodeGenConfiguration configuration,
String[] originalArgs) throws CodeGenerationException { this.configuration = configuration; this.originalArgs = originalArgs; // loadExtensions(); }
/**
- Instantiates a new jAXWS code generation engine.
* - @param commandLineOptionParser
- the command line option parser
- @param originalArgs
- the original args
*/
public JAXWSCodeGenerationEngine(
CommandLineOptionParser commandLineOptionParser,
String[] originalArgs) { this.commandLineOptionParser = commandLineOptionParser; this.originalArgs = originalArgs; // loadExtensions(); }
/**
- Generate.
* - @throws CodeGenerationException
- the code generation exception
*/
public void generate() throws CodeGenerationException {
LogOutputStream logOutputStream = new LogOutputStream(log,
Integer.MAX_VALUE);
com.sun.tools.ws.wscompile.WsimportTool importTool = new com.sun.tools.ws.wscompile.WsimportTool(logOutputStream);
ArrayList<String> args = new ArrayList<String>();
configurImportToolOptions(args);
mergeOriginalArgs(args);
String []array=args.toArray(new String[args.size()]);
log.info("JAXWSCodeGenerationEngine::generate LINE 100 before importTool.run where importTool="+importTool);
//if(array[0].indexOf("extension")!=-1) array[0]="extension=org.apache.axis2.jaxws.framework.JAXWSServiceBuilderExtension";
log.debug("JAXWSCodeGenerationEngine::generate LINE 101 before importTool.run where importTool(array="+array );
boolean success = importTool.run(array);
log.debug("JAXWSCodeGenerationEngine::generate LINE 103 SUCESS="+success);
if (success)
}
/**
- Merge original args.
* - @param args
- the args
*/
private void mergeOriginalArgs(ArrayList<String> args) {
Map<String, CommandLineOption> allOptions = commandLineOptionParser
.getAllOptions();
List<String> axisOptionList = new ArrayList<String>();
List<String> originalArgsOps = new ArrayList<String>(
Arrays.asList(originalArgs));
originalArgsOps
.remove("-"
.concat(CommandLineOptionConstants.WSDL2JavaConstants.JAX_WS_SERVICE_OPTION));
originalArgsOps
.remove("-"
.concat(CommandLineOptionConstants.WSDL2JavaConstants.JAX_WS_SERVICE_OPTION_LONG));
Field[] allFields = CommandLineOptionConstants.WSDL2JavaConstants.class
.getFields();
Iterator<String> mapItr = allOptions.keySet().iterator();
for (Field field : allFields) {
if (String.class.equals(field.getType()))Unknown macro: { try { axisOptionList .add((String) field .get(CommandLineOptionConstants.WSDL2JavaConstants.class)); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }}
while (mapItr.hasNext()) {
CommandLineOption op = allOptions.get(mapItr.next());
if (axisOptionList.contains(op.getOptionType())) {
if (op.getOptionType() != null)
if (op.getOptionValue() != null)
{ originalArgsOps.remove(op.getOptionValue()); }}
}
args.addAll(originalArgsOps);
log.info("Original WSImport options" + Arrays.asList(originalArgsOps));
log.info("All WSImport options" + Arrays.asList(args));
}
/**
- Configur import tool options.
* - @param args
- the args
*/
private void configurImportToolOptions(ArrayList<String> args) {
Map allOptions = commandLineOptionParser.getAllOptions();
// Set some default options
//you cant add an extension keyword without a corresponding Extension class
args.add("extension=org.apache.axis2.wsdl.codegen.extension.JAXWSWrapperExtension");
//args.add(WS_IMPORT_EXTENSION);
args.add(WS_IMPORT_NO_COMPILE);
args.add(WS_IMPORT_KEEP_FILE);
// Set some properties based on AXIS2 WSDL2JAVA options
String uri = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.WSDL_LOCATION_URI_OPTION);
if (uri != null)
String location = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION);
if (location == null)
if (location != null)
{ args.add(WS_IMPORT_FILE_OUTPUT_DIR); args.add(location); } String pkg = getOptionValue(allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION);
if (pkg == null)
if (pkg != null)
{ args.add(WS_IMPORT_PKG); args.add(pkg); } String proxcyHost = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.HTTP_PROXY_HOST_OPTION_LONG);
String proxcyPort = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.HTTP_PROXY_PORT_OPTION_LONG);
if (pkg != null)
}
/**
- Gets the option value.
* - @param allOptions
- the all options
- @param optionName
- the option name
- @return the option value
*/
private static String getOptionValue(Map allOptions, String optionName)Unknown macro: { CommandLineOption option = (CommandLineOption) allOptions .get(optionName); if (option != null) { return option.getOptionValue().toString(); } return null; }
public static final String WS_IMPORT_EXTENSION = "-extension";
public static final String WS_IMPORT_NO_COMPILE = "-Xnocompile";
public static final String WS_IMPORT_FILE_OUTPUT_DIR = "-d";
public static final String WS_IMPORT_SOURCE_OUTPUT_DIR = "-s";
public static final String WS_IMPORT_KEEP_FILE = "-keep";
public static final String WS_IMPORT_PKG = "-p";
public static final String WS_IMPORT_PROXY = "-httpproxy";
}