org.apache.axis2.wsdl.codegen.jaxws.JAXWSCodeGenerationEngine Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of axis2-codegen Show documentation
Show all versions of axis2-codegen Show documentation
Axis2 Code Generation module
/*
* 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.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);
WsimportTool importTool = new WsimportTool(logOutputStream);
ArrayList args = new ArrayList();
configurImportToolOptions(args);
mergeOriginalArgs(args);
boolean success = importTool.run(args.toArray(new String[args.size()]));
if (success) {
log.info("Code generation completed");
}
}
/**
* Merge original args.
*
* @param args
* the args
*/
private void mergeOriginalArgs(ArrayList args) {
Map allOptions = commandLineOptionParser
.getAllOptions();
List axisOptionList = new ArrayList();
List originalArgsOps = new ArrayList(
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 mapItr = allOptions.keySet().iterator();
for (Field field : allFields) {
if (String.class.equals(field.getType())) {
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) {
originalArgsOps.remove("-".concat(op.getOptionType()));
}
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 args) {
Map allOptions = commandLineOptionParser.getAllOptions();
// Set some default options
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) {
args.add(uri);
}
String location = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION);
if (location == null) {
location = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.OUTPUT_LOCATION_OPTION_LONG);
}
if (location != null) {
args.add(WS_IMPORT_FILE_OUTPUT_DIR);
args.add(location);
}
String pkg = getOptionValue(allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION);
if (pkg == null) {
pkg = getOptionValue(
allOptions,
CommandLineOptionConstants.WSDL2JavaConstants.PACKAGE_OPTION_LONG);
}
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) {
args.add(WS_IMPORT_PROXY);
args.add(proxcyHost + ":" + proxcyPort);
}
}
/**
* 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) {
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";
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy