diff --git a/build.sbt b/build.sbt index bcc9df96b82..a221718800e 100644 --- a/build.sbt +++ b/build.sbt @@ -13,7 +13,7 @@ javacOptions ++= Seq("-target", "1.6", "-source", "1.6", "-Xlint:unchecked", "-X scalacOptions ++= Seq("-optimize", "-unchecked", "-deprecation", "-Xcheckinit", "-encoding", "utf8") -crossScalaVersions := Seq("2.10.0", "2.10.1", "2.10.2", "2.10.3", "2.10.4", "2.11.0", "2.11.1") +crossScalaVersions := Seq("2.10.4", "2.11.0", "2.11.1") scalaVersion := "2.10.4" diff --git a/sbt b/sbt index 491debf4fb3..82ebbfc72ab 100755 --- a/sbt +++ b/sbt @@ -128,7 +128,7 @@ declare -r default_jvm_opts="-Dfile.encoding=UTF8 -XX:MaxPermSize=256m -Xms512m declare -r noshare_opts="-Dsbt.global.base=project/.sbtboot -Dsbt.boot.directory=project/.boot -Dsbt.ivy.home=project/.ivy" declare -r latest_28="2.8.2" declare -r latest_29="2.9.3" -declare -r latest_210="2.10.0" +declare -r latest_210="2.10.4" declare -r script_path=$(get_script_path "$BASH_SOURCE") declare -r script_dir="$(dirname $script_path)" diff --git a/src/main/resources/scala/apiInvoker.mustache b/src/main/resources/scala/apiInvoker.mustache index 5c6d60d37b5..b8f588a9aa0 100644 --- a/src/main/resources/scala/apiInvoker.mustache +++ b/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/src/main/resources/scala/pom.mustache b/src/main/resources/scala/pom.mustache index d5ad2d05a09..77ebf74d252 100644 --- a/src/main/resources/scala/pom.mustache +++ b/src/main/resources/scala/pom.mustache @@ -162,6 +162,12 @@ ${jersey-version} compile + + org.jfarcand + jersey-ahc-client + ${jersey-async-version} + compile + org.scala-lang scala-library @@ -221,6 +227,7 @@ 1.7 + 1.0.5 4.8.1 1.0.0 4.8.1 diff --git a/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala b/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala index e4850a61544..c9652971764 100644 --- a/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala +++ b/src/main/scala/com/wordnik/swagger/codegen/BasicScalaGenerator.scala @@ -212,7 +212,8 @@ class BasicScalaGenerator extends BasicGenerator { additionalParams ++= Map( "artifactId" -> "scala-client", "artifactVersion" -> "1.0.0", - "groupId" -> "com.wordnik") + "groupId" -> "com.wordnik", + "asyncHttpClient" -> "false") // supporting classes override def supportingFiles = List(