Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-5895

JAXWSCodeGenerationEngine extension is incomplete

    XMLWordPrintableJSON

Details

    • Test
    • Status: Resolved
    • Minor
    • Resolution: Incomplete
    • 1.7.6
    • 1.8.0
    • codegen
    • None
    • jdk 1.8
      maven 3.3.3

    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)

      { 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()))
        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)

      { 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)
        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";

      }

      Attachments

        Activity

          People

            Unassigned Unassigned
            mgainty@hotmail.com Martin Gainty
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: