[
https://issues.apache.org/jira/browse/AXIS2-5895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andreas Veithen resolved AXIS2-5895.
------------------------------------
Resolution: Incomplete
> JAXWSCodeGenerationEngine extension is incomplete
> -------------------------------------------------
>
> Key: AXIS2-5895
> URL: https://issues.apache.org/jira/browse/AXIS2-5895
> Project: Axis2
> Issue Type: Test
> Components: codegen
> Affects Versions: 1.7.6
> Environment: jdk 1.8
> maven 3.3.3
> Reporter: Martin Gainty
> Priority: Minor
> Fix For: 1.8.0
>
>
> /*
> * 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) {
> log.info("Code generation completed");
> }
> }
> /**
> * 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())) {
> 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<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) {
> 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";
> }
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]