diff --git a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ScalaClientCodegen.java b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ScalaClientCodegen.java
index 6c845a9ccb7..697114f79bf 100644
--- a/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ScalaClientCodegen.java
+++ b/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/ScalaClientCodegen.java
@@ -43,6 +43,7 @@ public class ScalaClientCodegen extends DefaultCodegen implements CodegenConfig
additionalProperties.put("groupId", groupId);
additionalProperties.put("artifactId", artifactId);
additionalProperties.put("artifactVersion", artifactVersion);
+ additionalProperties.put("asyncHttpClient", false);
supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml"));
supportingFiles.add(new SupportingFile("apiInvoker.mustache",
diff --git a/modules/swagger-codegen/src/main/resources/scala/apiInvoker.mustache b/modules/swagger-codegen/src/main/resources/scala/apiInvoker.mustache
index 5c6d60d37b5..b8f588a9aa0 100644
--- a/modules/swagger-codegen/src/main/resources/scala/apiInvoker.mustache
+++ b/modules/swagger-codegen/src/main/resources/scala/apiInvoker.mustache
@@ -35,10 +35,12 @@ object ScalaJsonUtil {
}
}
-object ApiInvoker {
- val mapper = ScalaJsonUtil.getJsonMapper
- val defaultHeaders: HashMap[String, String] = HashMap()
- val hostMap: HashMap[String, Client] = HashMap()
+class ApiInvoker(val mapper: ObjectMapper = ScalaJsonUtil.getJsonMapper,
+ httpHeaders: HashMap[String, String] = HashMap(),
+ hostMap: HashMap[String, Client] = HashMap(),
+ asyncHttpClient: Boolean = false) {
+
+ var defaultHeaders: HashMap[String, String] = httpHeaders
def escape(value: String): String = {
URLEncoder.encode(value, "utf-8").replaceAll("\\+", "%20")
@@ -151,14 +153,30 @@ object ApiInvoker {
hostMap.contains(host) match {
case true => hostMap(host)
case false => {
- val client = Client.create()
+ val client = newClient(host)
// client.addFilter(new LoggingFilter())
hostMap += host -> client
client
}
}
}
+
+ def newClient(host: String): Client = asyncHttpClient match {
+ case true => {
+ import org.sonatype.spice.jersey.client.ahc.config.DefaultAhcConfig
+ import org.sonatype.spice.jersey.client.ahc.AhcHttpClient
+
+ val config: DefaultAhcConfig = new DefaultAhcConfig()
+ AhcHttpClient.create(config)
+ }
+ case _ => Client.create()
+ }
}
+object ApiInvoker extends ApiInvoker(mapper = ScalaJsonUtil.getJsonMapper,
+ httpHeaders = HashMap(),
+ hostMap = HashMap(),
+ asyncHttpClient = {{asyncHttpClient}})
+
class ApiException(val code: Int, msg: String) extends RuntimeException(msg)
diff --git a/modules/swagger-codegen/src/main/resources/scala/pom.mustache b/modules/swagger-codegen/src/main/resources/scala/pom.mustache
index ae3779d7805..1163b7d381a 100644
--- a/modules/swagger-codegen/src/main/resources/scala/pom.mustache
+++ b/modules/swagger-codegen/src/main/resources/scala/pom.mustache
@@ -165,6 +165,12 @@
jersey-multipart
${jersey-version}
+
+ org.jfarcand
+ jersey-ahc-client
+ ${jersey-async-version}
+ compile
+
org.scala-lang
scala-library
@@ -204,6 +210,7 @@
2.2
1.7
1.5.0-M1
+ 1.0.5
1.0.0
2.4.2