2015-10-30 2 views
3

У меня есть этот JavaJaxRs словарь со своими шаблонами:Howto использование пользовательских шаблонов в Swagger

/templates/JavaJaxRs 

Я редактировал некоторые из них. И хочу, чтобы использовать их для моего поколения API (код был вдохновлен от этого подхода от https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen-maven-plugin/src/main/java/io/swagger/codegen/plugin/CodeGenMojo.java):

System.out.println("Generating API for: " + location); 
    DefaultGenerator generator = new DefaultGenerator(); 
    Swagger swagger = new SwaggerParser().read(location); 
    CodegenConfig config = CodegenConfigLoader.forName(this.language); 
    config.setOutputDir(new File(this.apiGeneratedSrcPath).getPath()); 

    if (null != templateDirectory) { 
     config.additionalProperties().put(TEMPLATE_DIR_PARAM, templateDirectory); 
    } 
    if (null != modelPackage) { 
     config.additionalProperties().put(MODEL_PACKAGE_PARAM, modelPackage); 
    } 
    if (null != apiPackage) { 
     config.additionalProperties().put(API_PACKAGE_PARAM, apiPackage); 
    } 
    if (null != invokerPackage) { 
     config.additionalProperties().put(INVOKER_PACKAGE_PARAM, invokerPackage); 
    } 

    if (configOptions != null) { 
     for (CliOption langCliOption : config.cliOptions()) { 
      if (configOptions.containsKey(langCliOption.getOpt())) { 
       config.additionalProperties().put(langCliOption.getOpt(), 
         configOptions.get(langCliOption.getOpt())); 
      } 
     } 
    } 

    if (null != configurationFile) { 
     Config genConfig = ConfigParser.read(configurationFile); 
     if (null != genConfig) { 
      for (CliOption langCliOption : config.cliOptions()) { 
       if (genConfig.hasOption(langCliOption.getOpt())) { 
        config.additionalProperties().put(langCliOption.getOpt(), genConfig.getOption(langCliOption.getOpt())); 
       } 
      } 
     } else { 
      throw new RuntimeException("Unable to read configuration file"); 
     } 
    } 

    ClientOptInput input = new ClientOptInput().opts(new ClientOpts()).swagger(swagger); 
    input.setConfig(config); 

    generator.opts(input).generate(); 

Как-то я всегда получаю код, сгенерированный со стандартным файлом шаблона.

UPDATE:

Когда я правильно помню, я имел условную ошибку на:

if(null != templateDirectory) 
    config.additionalProperties().put(TEMPLATE_DIR_PARAM, templateDirectory); 

или где-то еще, но с правом состоянии, код работает, как предполагалось.

Я оставляю вопрос здесь, возможно, это поможет некоторым другим пользователям.

ответ

2

Вы можете получить параметры справки для генератора кода, как например:

java -jar swagger-codegen-cli.jar help generate 

Который должен сказать вам, что вы можете изменить местоположение шаблона с -t параметра:

java -java swagger-codegen-cli.jar generate -l {language} -t path/to/templates 
+0

я думаю, я делаю это с 'config.additionalProperties() ставить (TEMPLATE_DIR_PARAM, templateDirectory); ' – Gobliins

+1

У меня было неправильное условие, в моем коде, поэтому строка для адаптации параметров wsa не выполняется. Сейчас это работает хорошо. – Gobliins

1

Что касается выше ava -java swagger-codegen-cli.jar generate -l {language} -t path/to/templates,

Мне удалось заставить его работать с текущим работающим на выпуск (2.2.0). С 2.1.6 (текущий GA) он не работает.

Я отправил следующее на развязность-Codegen на GitHub:. https://github.com/swagger-api/swagger-codegen/issues/3188

Не получил никакого внимания, хотя ...

+1

Просто пришел к нам, чтобы упомянуть, что версия 2.2.0 была выпущена. –

Смежные вопросы