From 886abda9260a33cd971b68bfb4e3b74309862d38 Mon Sep 17 00:00:00 2001 From: Silvio Heuberger Date: Wed, 20 Jan 2016 11:59:55 +0100 Subject: [PATCH] Add 'useRxJava' option to retrofit2 java client generator This still uses retrofit 2.0.0-beta2 because the api in beta3 has changed and the package has been renamed to retrofit2.* Change retrofit-rx to be a library option --- .../codegen/languages/JavaClientCodegen.java | 76 +++++++++++++++---- .../libraries/retrofit2/ApiClient.mustache | 3 + .../Java/libraries/retrofit2/api.mustache | 6 +- .../libraries/retrofit2/build.gradle.mustache | 14 +++- .../JavaInflectorServerOptionsTest.java | 2 +- .../codegen/java/JavaClientOptionsTest.java | 2 +- .../codegen/jaxrs/JaxRSServerOptionsTest.java | 2 +- .../codegen/options/JavaOptionsProvider.java | 33 ++++++-- .../online/OnlineGeneratorOptionsTest.java | 68 ++++++----------- 9 files changed, 134 insertions(+), 72 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java index a1ca3245953..dab42b00071 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java @@ -1,20 +1,45 @@ package io.swagger.codegen.languages; import com.google.common.base.Strings; -import io.swagger.codegen.*; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import io.swagger.codegen.CliOption; +import io.swagger.codegen.CodegenConfig; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.CodegenModel; +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenParameter; +import io.swagger.codegen.CodegenProperty; +import io.swagger.codegen.CodegenType; +import io.swagger.codegen.DefaultCodegen; +import io.swagger.codegen.SupportingFile; import io.swagger.models.Model; import io.swagger.models.Operation; import io.swagger.models.Path; import io.swagger.models.Swagger; import io.swagger.models.parameters.FormParameter; import io.swagger.models.parameters.Parameter; -import io.swagger.models.properties.*; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.util.*; +import io.swagger.models.properties.ArrayProperty; +import io.swagger.models.properties.BooleanProperty; +import io.swagger.models.properties.DoubleProperty; +import io.swagger.models.properties.FloatProperty; +import io.swagger.models.properties.IntegerProperty; +import io.swagger.models.properties.LongProperty; +import io.swagger.models.properties.MapProperty; +import io.swagger.models.properties.Property; +import io.swagger.models.properties.StringProperty; public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { @SuppressWarnings("hiding") @@ -22,6 +47,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { public static final String FULL_JAVA_UTIL = "fullJavaUtil"; public static final String DEFAULT_LIBRARY = ""; public static final String DATE_LIBRARY = "dateLibrary"; + public static final String USE_RX_JAVA = "useRxJava"; + + public static final String RETROFIT_1 = "retrofit"; + public static final String RETROFIT_2 = "retrofit2"; protected String dateLibrary = "default"; protected String invokerPackage = "io.swagger.client"; @@ -35,6 +64,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { protected String javaUtilPrefix = ""; protected Boolean serializableModel = false; protected boolean serializeBigDecimalAsString = false; + protected boolean useRxJava = false; public JavaClientCodegen() { super(); @@ -88,13 +118,15 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { cliOptions.add(CliOption.newBoolean(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, CodegenConstants .SERIALIZE_BIG_DECIMAL_AS_STRING_DESC)); cliOptions.add(CliOption.newBoolean(FULL_JAVA_UTIL, "whether to use fully qualified name for classes under java.util")); + cliOptions.add(CliOption.newBoolean(USE_RX_JAVA, "Whether to use the RxJava adapter with the retrofit2 library.")); supportedLibraries.put(DEFAULT_LIBRARY, "HTTP client: Jersey client 1.18. JSON processing: Jackson 2.4.2"); supportedLibraries.put("feign", "HTTP client: Netflix Feign 8.1.1"); supportedLibraries.put("jersey2", "HTTP client: Jersey client 2.6"); supportedLibraries.put("okhttp-gson", "HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1"); - supportedLibraries.put("retrofit", "HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1 (Retrofit 1.9.0)"); - supportedLibraries.put("retrofit2", "HTTP client: OkHttp 2.5.0. JSON processing: Gson 2.4 (Retrofit 2.0.0-beta2)"); + supportedLibraries.put(RETROFIT_1, "HTTP client: OkHttp 2.4.0. JSON processing: Gson 2.3.1 (Retrofit 1.9.0)"); + supportedLibraries.put(RETROFIT_2, "HTTP client: OkHttp 2.5.0. JSON processing: Gson 2.4 (Retrofit 2.0.0-beta2). Enable the RxJava adapter using '-DuseRxJava=true'."); + CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); library.setDefault(DEFAULT_LIBRARY); library.setEnum(supportedLibraries); @@ -183,6 +215,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { if (additionalProperties.containsKey(FULL_JAVA_UTIL)) { this.setFullJavaUtil(Boolean.valueOf(additionalProperties.get(FULL_JAVA_UTIL).toString())); } + + if (additionalProperties.containsKey(USE_RX_JAVA)) { + this.setUseRxJava(Boolean.valueOf(additionalProperties.get(USE_RX_JAVA).toString())); + } if (fullJavaUtil) { javaUtilPrefix = "java.util."; } @@ -240,7 +276,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("auth/OAuth.mustache", authFolder, "OAuth.java")); supportingFiles.add(new SupportingFile("auth/OAuthFlow.mustache", authFolder, "OAuthFlow.java")); - if (!("feign".equals(getLibrary()) || "retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary()))) { + if (!("feign".equals(getLibrary()) || usesAnyRetrofitLibrary())) { supportingFiles.add(new SupportingFile("apiException.mustache", invokerFolder, "ApiException.java")); supportingFiles.add(new SupportingFile("Configuration.mustache", invokerFolder, "Configuration.java")); supportingFiles.add(new SupportingFile("Pair.mustache", invokerFolder, "Pair.java")); @@ -257,7 +293,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("ProgressResponseBody.mustache", invokerFolder, "ProgressResponseBody.java")); // "build.sbt" is for development with SBT supportingFiles.add(new SupportingFile("build.sbt.mustache", "", "build.sbt")); - } else if ("retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary())) { + } else if (usesAnyRetrofitLibrary()) { supportingFiles.add(new SupportingFile("auth/OAuthOkHttpClient.mustache", authFolder, "OAuthOkHttpClient.java")); supportingFiles.add(new SupportingFile("CollectionFormats.mustache", invokerFolder, "CollectionFormats.java")); } else if("jersey2".equals(getLibrary())) { @@ -285,6 +321,14 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { } } + private boolean usesAnyRetrofitLibrary() { + return getLibrary() != null && getLibrary().contains(RETROFIT_1); + } + + private boolean usesRetrofit2Library() { + return getLibrary() != null && getLibrary().contains(RETROFIT_2); + } + private void sanitizeConfig() { // Sanitize any config options here. We also have to update the additionalProperties because // the whole additionalProperties object is injected into the main object passed to the mustache layer @@ -598,7 +642,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public Map postProcessOperations(Map objs) { - if("retrofit".equals(getLibrary()) || "retrofit2".equals(getLibrary())) { + if(usesAnyRetrofitLibrary()) { Map operations = (Map) objs.get("operations"); if (operations != null) { List ops = (List) operations.get("operation"); @@ -614,7 +658,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { if (operation.returnType == null) { operation.returnType = "Void"; } - if ("retrofit2".equals(getLibrary()) && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) + if (usesRetrofit2Library() && StringUtils.isNotEmpty(operation.path) && operation.path.startsWith("/")) operation.path = operation.path.substring(1); } } @@ -792,6 +836,10 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig { this.fullJavaUtil = fullJavaUtil; } + public void setUseRxJava(boolean useRxJava) { + this.useRxJava = useRxJava; + } + public void setDateLibrary(String library) { this.dateLibrary = library; } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/ApiClient.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/ApiClient.mustache index 56e83f7d915..6cd8aa399f1 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/ApiClient.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/ApiClient.mustache @@ -13,6 +13,7 @@ import org.apache.oltu.oauth2.client.request.OAuthClientRequest.TokenRequestBuil import retrofit.Converter; import retrofit.Retrofit; import retrofit.GsonConverterFactory; +{{#useRxJava}}import retrofit.RxJavaCallAdapterFactory;{{/useRxJava}} import com.google.gson.Gson; import com.google.gson.GsonBuilder; @@ -22,6 +23,7 @@ import com.squareup.okhttp.OkHttpClient; import com.squareup.okhttp.RequestBody; import com.squareup.okhttp.ResponseBody; + import {{invokerPackage}}.auth.HttpBasicAuth; import {{invokerPackage}}.auth.ApiKeyAuth; import {{invokerPackage}}.auth.OAuth; @@ -117,6 +119,7 @@ public class ApiClient { .Builder() .baseUrl(baseUrl) .client(okClient) + {{#useRxJava}}.addCallAdapterFactory(RxJavaCallAdapterFactory.create()){{/useRxJava}} .addConverterFactory(GsonCustomConverterFactory.create(gson)); } diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/api.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/api.mustache index a066a625cff..ff90557a3fa 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/api.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/api.mustache @@ -2,8 +2,10 @@ package {{package}}; import {{invokerPackage}}.CollectionFormats.*; -import retrofit.Call; +{{#useRxJava}}import rx.Observable;{{/useRxJava}} +{{^useRxJava}}import retrofit.Call;{{/useRxJava}} import retrofit.http.*; + import com.squareup.okhttp.RequestBody; {{#imports}}import {{import}}; @@ -25,7 +27,7 @@ public interface {{classname}} { {{#formParams}}{{#-first}} {{#isMultipart}}@Multipart{{/isMultipart}}{{^isMultipart}}@FormUrlEncoded{{/isMultipart}}{{/-first}}{{/formParams}} @{{httpMethod}}("{{path}}") - Call<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}}> {{operationId}}({{^allParams}});{{/allParams}} + {{#useRxJava}}Observable{{/useRxJava}}{{^useRxJava}}Call{{/useRxJava}}<{{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Object{{/returnType}}> {{operationId}}({{^allParams}});{{/allParams}} {{#allParams}}{{>libraries/retrofit2/queryParams}}{{>libraries/retrofit2/pathParams}}{{>libraries/retrofit2/headerParams}}{{>libraries/retrofit2/bodyParams}}{{>libraries/retrofit2/formParams}}{{#hasMore}}, {{/hasMore}}{{^hasMore}} );{{/hasMore}}{{/allParams}} diff --git a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache index cf0047cf283..74b43e5e1a4 100644 --- a/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache +++ b/modules/swagger-codegen/src/main/resources/Java/libraries/retrofit2/build.gradle.mustache @@ -93,14 +93,26 @@ ext { gson_version = "2.4" swagger_annotations_version = "1.5.0" junit_version = "4.12" +{{#useRxJava}} + rx_java_version = "1.0.15" +{{/useRxJava}} +{{^useRxJava}}{{/useRxJava}} } dependencies { compile "com.squareup.okhttp:okhttp:$okhttp_version" + compile "com.squareup.retrofit:retrofit:$retrofit_version" - compile "com.google.code.gson:gson:$gson_version" compile "com.squareup.retrofit:converter-gson:$retrofit_version" +{{#useRxJava}} + compile "com.squareup.retrofit:adapter-rxjava:$retrofit_version" + compile "io.reactivex:rxjava:$rx_java_version" +{{/useRxJava}} +{{^useRxJava}}{{/useRxJava}} + + compile "com.google.code.gson:gson:$gson_version" compile "io.swagger:swagger-annotations:$swagger_annotations_version" compile "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version" + testCompile "junit:junit:$junit_version" } diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java index 49399b3beef..0987a0d236e 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/inflector/JavaInflectorServerOptionsTest.java @@ -45,7 +45,7 @@ public class JavaInflectorServerOptionsTest extends JavaClientOptionsTest { times = 1; clientCodegen.setSerializableModel(Boolean.valueOf(JavaInflectorServerOptionsProvider.SERIALIZABLE_MODEL_VALUE)); times = 1; - clientCodegen.setLibrary(JavaInflectorServerOptionsProvider.LIBRARY_VALUE); + clientCodegen.setLibrary(JavaInflectorServerOptionsProvider.DEFAULT_LIBRARY_VALUE); times = 1; clientCodegen.setFullJavaUtil(Boolean.valueOf(JavaInflectorServerOptionsProvider.FULL_JAVA_UTIL_VALUE)); times = 1; diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaClientOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaClientOptionsTest.java index 2a4d582f776..701f9586eec 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaClientOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/java/JavaClientOptionsTest.java @@ -51,7 +51,7 @@ public class JavaClientOptionsTest extends AbstractOptionsTest { times = 1; clientCodegen.setSerializableModel(Boolean.valueOf(JavaOptionsProvider.SERIALIZABLE_MODEL_VALUE)); times = 1; - clientCodegen.setLibrary(JavaOptionsProvider.LIBRARY_VALUE); + clientCodegen.setLibrary(JavaOptionsProvider.DEFAULT_LIBRARY_VALUE); times = 1; clientCodegen.setFullJavaUtil(Boolean.valueOf(JavaOptionsProvider.FULL_JAVA_UTIL_VALUE)); times = 1; diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java index a441a7984d2..f6f7b1633bc 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java @@ -46,7 +46,7 @@ public class JaxRSServerOptionsTest extends JavaClientOptionsTest { times = 1; clientCodegen.setSerializableModel(Boolean.valueOf(JaxRSServerOptionsProvider.SERIALIZABLE_MODEL_VALUE)); times = 1; - clientCodegen.setLibrary(JaxRSServerOptionsProvider.LIBRARY_VALUE); + clientCodegen.setLibrary(JaxRSServerOptionsProvider.DEFAULT_LIBRARY_VALUE); times = 1; clientCodegen.setFullJavaUtil(Boolean.valueOf(JaxRSServerOptionsProvider.FULL_JAVA_UTIL_VALUE)); times = 1; diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java index 32490ba659b..bf6fd0aba7d 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/options/JavaOptionsProvider.java @@ -1,5 +1,6 @@ package io.swagger.codegen.options; +import io.swagger.codegen.Codegen; import io.swagger.codegen.CodegenConstants; import io.swagger.codegen.languages.JavaClientCodegen; @@ -17,15 +18,19 @@ public class JavaOptionsProvider implements OptionsProvider { public static final String ARTIFACT_VERSION_VALUE = "1.0.0-SNAPSHOT"; public static final String SOURCE_FOLDER_VALUE = "src/main/java/test"; public static final String LOCAL_PREFIX_VALUE = "tst"; - public static final String LIBRARY_VALUE = "jersey2"; + public static final String DEFAULT_LIBRARY_VALUE = "jersey2"; public static final String SERIALIZABLE_MODEL_VALUE = "false"; public static final String FULL_JAVA_UTIL_VALUE = "true"; public static final String ENSURE_UNIQUE_PARAMS_VALUE = "true"; - @Override - public Map createOptions() { - ImmutableMap.Builder builder = new ImmutableMap.Builder(); - return builder.put(CodegenConstants.MODEL_PACKAGE, MODEL_PACKAGE_VALUE) + private ImmutableMap options; + + /** + * Create an options provider with the default options. + */ + public JavaOptionsProvider() { + options = new ImmutableMap.Builder() + .put(CodegenConstants.MODEL_PACKAGE, MODEL_PACKAGE_VALUE) .put(CodegenConstants.API_PACKAGE, API_PACKAGE_VALUE) .put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, SORT_PARAMS_VALUE) .put(CodegenConstants.ENSURE_UNIQUE_PARAMS, ENSURE_UNIQUE_PARAMS_VALUE) @@ -37,12 +42,28 @@ public class JavaOptionsProvider implements OptionsProvider { .put(CodegenConstants.LOCAL_VARIABLE_PREFIX, LOCAL_PREFIX_VALUE) .put(CodegenConstants.SERIALIZABLE_MODEL, SERIALIZABLE_MODEL_VALUE) .put(JavaClientCodegen.FULL_JAVA_UTIL, FULL_JAVA_UTIL_VALUE) - .put(CodegenConstants.LIBRARY, LIBRARY_VALUE) + .put(CodegenConstants.LIBRARY, DEFAULT_LIBRARY_VALUE) .put(CodegenConstants.SERIALIZE_BIG_DECIMAL_AS_STRING, "true") + .put(JavaClientCodegen.USE_RX_JAVA, "false") .put(JavaClientCodegen.DATE_LIBRARY, "joda") .build(); } + /** + * Use the default options, but override the ones found in additionalOptions. + */ + public JavaOptionsProvider(Map additionalOptions) { + options = new ImmutableMap.Builder() + .putAll(options) + .putAll(additionalOptions) + .build(); + } + + @Override + public Map createOptions() { + return options; + } + @Override public boolean isServer() { return false; diff --git a/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java b/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java index 626255519bf..2ae76374adb 100644 --- a/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java +++ b/modules/swagger-generator/src/test/java/io/swagger/generator/online/OnlineGeneratorOptionsTest.java @@ -1,64 +1,31 @@ package io.swagger.generator.online; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotEquals; -import io.swagger.codegen.CliOption; -import io.swagger.codegen.CodegenConfigLoader; -import io.swagger.codegen.options.AkkaScalaClientOptionsProvider; -import io.swagger.codegen.options.AndroidClientOptionsProvider; -import io.swagger.codegen.options.AsyncScalaClientOptionsProvider; -import io.swagger.codegen.options.CSharpClientOptionsProvider; -import io.swagger.codegen.options.CsharpDotNet2ClientOptionsProvider; -import io.swagger.codegen.options.DartClientOptionsProvider; -import io.swagger.codegen.options.FlashClienOptionsProvider; -import io.swagger.codegen.options.JavaInflectorServerOptionsProvider; -import io.swagger.codegen.options.JavaOptionsProvider; -import io.swagger.codegen.options.JaxRSServerOptionsProvider; -import io.swagger.codegen.options.NodeJSServerOptionsProvider; -import io.swagger.codegen.options.ObjcClientOptionsProvider; -import io.swagger.codegen.options.OptionsProvider; -import io.swagger.codegen.options.PerlClientOptionsProvider; -import io.swagger.codegen.options.PhpClientOptionsProvider; -import io.swagger.codegen.options.PythonClientOptionsProvider; -import io.swagger.codegen.options.Qt5CPPOptionsProvider; -import io.swagger.codegen.options.RubyClientOptionsProvider; -import io.swagger.codegen.options.ScalaClientOptionsProvider; -import io.swagger.codegen.options.ScalatraServerOptionsProvider; -import io.swagger.codegen.options.SilexServerOptionsProvider; -import io.swagger.codegen.options.SinatraServerOptionsProvider; -import io.swagger.codegen.options.SlimFrameworkServerOptionsProvider; -import io.swagger.codegen.options.SpringMVCServerOptionsProvider; -import io.swagger.codegen.options.StaticDocOptionsProvider; -import io.swagger.codegen.options.StaticHtmlOptionsProvider; -import io.swagger.codegen.options.SwaggerOptionsProvider; -import io.swagger.codegen.options.SwaggerYamlOptionsProvider; -import io.swagger.codegen.options.SwiftOptionsProvider; -import io.swagger.codegen.options.TizenClientOptionsProvider; -import io.swagger.codegen.options.TypeScriptAngularClientOptionsProvider; -import io.swagger.codegen.options.TypeScriptNodeClientOptionsProvider; -import io.swagger.generator.exception.ApiException; -import io.swagger.generator.model.GeneratorInput; - import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Function; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import io.swagger.codegen.CliOption; +import io.swagger.codegen.CodegenConfigLoader; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.languages.JavaClientCodegen; +import io.swagger.codegen.options.*; +import io.swagger.generator.exception.ApiException; +import io.swagger.generator.model.GeneratorInput; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import javax.annotation.Nullable; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; -import javax.annotation.Nullable; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNotEquals; public class OnlineGeneratorOptionsTest { private static final String OPTIONS_PROVIDER = "optionsProvider"; @@ -69,7 +36,16 @@ public class OnlineGeneratorOptionsTest { {new AsyncScalaClientOptionsProvider()}, {new CSharpClientOptionsProvider()}, {new CsharpDotNet2ClientOptionsProvider()}, {new DartClientOptionsProvider()}, {new FlashClienOptionsProvider()}, {new JavaInflectorServerOptionsProvider()}, - {new JavaOptionsProvider()}, {new JaxRSServerOptionsProvider()}, + { + new JavaOptionsProvider(), + new JavaOptionsProvider(ImmutableMap.of(CodegenConstants.LIBRARY, JavaClientCodegen.RETROFIT_2) + ), + new JavaOptionsProvider(ImmutableMap.of( + CodegenConstants.LIBRARY, JavaClientCodegen.RETROFIT_2, + JavaClientCodegen.USE_RX_JAVA, "true") + ) + }, + {new JaxRSServerOptionsProvider()}, {new NodeJSServerOptionsProvider()}, {new ObjcClientOptionsProvider()}, {new PerlClientOptionsProvider()}, {new PhpClientOptionsProvider()}, {new PythonClientOptionsProvider()}, {new Qt5CPPOptionsProvider()},