diff --git a/docs/generators/scala-akka-http-server.md b/docs/generators/scala-akka-http-server.md index 925d6565330..7e056315f61 100644 --- a/docs/generators/scala-akka-http-server.md +++ b/docs/generators/scala-akka-http-server.md @@ -61,6 +61,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-akka.md b/docs/generators/scala-akka.md index 4976275245f..683fbef2167 100644 --- a/docs/generators/scala-akka.md +++ b/docs/generators/scala-akka.md @@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-gatling.md b/docs/generators/scala-gatling.md index 55ce8c23d67..414715926d2 100644 --- a/docs/generators/scala-gatling.md +++ b/docs/generators/scala-gatling.md @@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-httpclient-deprecated.md b/docs/generators/scala-httpclient-deprecated.md index b130d49947e..15bf6f6e26f 100644 --- a/docs/generators/scala-httpclient-deprecated.md +++ b/docs/generators/scala-httpclient-deprecated.md @@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-lagom-server.md b/docs/generators/scala-lagom-server.md index e0f1e2ddee3..8dc2075e377 100644 --- a/docs/generators/scala-lagom-server.md +++ b/docs/generators/scala-lagom-server.md @@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-play-server.md b/docs/generators/scala-play-server.md index d734fed60c2..7be64e0f108 100644 --- a/docs/generators/scala-play-server.md +++ b/docs/generators/scala-play-server.md @@ -64,6 +64,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scala-sttp.md b/docs/generators/scala-sttp.md index 8a8b5d33c26..a0cd2044ea1 100644 --- a/docs/generators/scala-sttp.md +++ b/docs/generators/scala-sttp.md @@ -62,6 +62,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scalatra.md b/docs/generators/scalatra.md index d3a9b514913..a7a657bce95 100644 --- a/docs/generators/scalatra.md +++ b/docs/generators/scalatra.md @@ -57,6 +57,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/docs/generators/scalaz.md b/docs/generators/scalaz.md index 25355390e08..41b6240df6d 100644 --- a/docs/generators/scalaz.md +++ b/docs/generators/scalaz.md @@ -56,6 +56,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Any
  • Array
  • Boolean
  • +
  • Byte
  • Double
  • Float
  • Int
  • diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java index 43d974391b6..b7d31d9fce5 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java @@ -1580,6 +1580,7 @@ public class DefaultCodegen implements CodegenConfig { typeMapping.put("char", "String"); typeMapping.put("object", "Object"); typeMapping.put("integer", "Integer"); + // FIXME: java specific type should be in Java Based Abstract Impl's typeMapping.put("ByteArray", "byte[]"); typeMapping.put("binary", "File"); typeMapping.put("file", "File"); diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java index f15950eda2a..65ec72caca6 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractScalaCodegen.java @@ -73,7 +73,8 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { "List", "Seq", "Map", - "Array")); + "Array", + "Byte")); reservedWords.addAll(Arrays.asList( "abstract", @@ -118,6 +119,10 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { "yield" )); + // Scala specific openApi types mapping + typeMapping.put("ByteArray", "Array[Byte]"); + + importMapping = new HashMap(); importMapping.put("ListBuffer", "scala.collection.mutable.ListBuffer"); // although Seq is a predef, before Scala 2.13, it _could_ refer to a mutable Seq in some cases. @@ -344,17 +349,11 @@ public abstract class AbstractScalaCodegen extends DefaultCodegen { if (ModelUtils.isSet(p)) { openAPIType = "set"; } - - String type; + // don't apply renaming on types from the typeMapping if (typeMapping.containsKey(openAPIType)) { - type = typeMapping.get(openAPIType); - if (languageSpecificPrimitives.contains(type)) { - return toModelName(type); - } - } else { - type = openAPIType; + return typeMapping.get(openAPIType); } - return toModelName(type); + return toModelName(openAPIType); } @Override diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java index 4ad5505871c..dd0dca689fb 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ScalaSttpClientCodegen.java @@ -125,6 +125,7 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code importMapping.remove("Set"); importMapping.remove("Map"); + // TODO: there is no specific sttp mapping. All Scala Type mappings should be in AbstractScala typeMapping = new HashMap<>(); typeMapping.put("array", "Seq"); typeMapping.put("set", "Set"); @@ -144,7 +145,6 @@ public class ScalaSttpClientCodegen extends AbstractScalaCodegen implements Code typeMapping.put("number", "Double"); typeMapping.put("decimal", "BigDecimal"); typeMapping.put("ByteArray", "Array[Byte]"); - typeMapping.put("ArrayByte", "Array[Byte]"); instantiationTypes.put("array", "ListBuffer"); instantiationTypes.put("map", "Map"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java index 97e9c3102e8..ce62184a0d3 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/AbstractScalaCodegenTest.java @@ -1,5 +1,7 @@ package org.openapitools.codegen.scala; +import io.swagger.v3.oas.models.media.ObjectSchema; +import io.swagger.v3.oas.models.media.Schema; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.languages.AbstractScalaCodegen; import org.testng.Assert; @@ -95,4 +97,21 @@ public class AbstractScalaCodegenTest { Assert.assertFalse(fakeScalaCodegen.importMapping().containsKey("BigInt"), "BigInt is a Scala type and must not be imported"); } + + @Test + void checkScalaTypeDeclaration() { + + final AbstractScalaCodegen codegen = new P_AbstractScalaCodegen(); + + Schema byteArraySchema = new ObjectSchema(); + byteArraySchema.setType("string"); + byteArraySchema.setFormat("byte"); + byteArraySchema.setDescription("Schema with byte string"); + + Assert.assertEquals(codegen.getTypeDeclaration(byteArraySchema), "Array[Byte]", + "OpenApi File type represented as byte string should be represented as Array[Byte] scala type"); + + } + + } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java index c500dda7706..010fd99f564 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpBooleanPropertyTest.java @@ -1,7 +1,7 @@ package org.openapitools.codegen.scala; -import org.junit.Assert; -import org.junit.Test; +import org.testng.Assert; +import org.testng.annotations.Test; import org.openapitools.codegen.languages.ScalaSttpClientCodegen; import java.util.HashMap; @@ -14,7 +14,7 @@ public class SttpBooleanPropertyTest { Map additionalProperties = new HashMap<>(); booleanProperty.updateAdditionalProperties(additionalProperties); - Assert.assertEquals(false, additionalProperties.get("k1")); + Assert.assertEquals(additionalProperties.get("k1"), false); } @Test @@ -24,6 +24,6 @@ public class SttpBooleanPropertyTest { additionalProperties.put("k1", true); booleanProperty.updateAdditionalProperties(additionalProperties); - Assert.assertEquals(true, additionalProperties.get("k1")); + Assert.assertEquals(additionalProperties.get("k1"), true); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java index 60bf063f3c5..653fc342d82 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpCodegenTest.java @@ -1,8 +1,8 @@ package org.openapitools.codegen.scala; import org.openapitools.codegen.languages.ScalaSttpClientCodegen; -import org.junit.Assert; -import org.junit.Test; +import org.testng.Assert; +import org.testng.annotations.Test; import io.swagger.v3.oas.models.media.Schema; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java index d8473cb8f5d..23ae32e0511 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpJsonLibraryPropertyTest.java @@ -1,7 +1,7 @@ package org.openapitools.codegen.scala; -import org.junit.Assert; -import org.junit.Test; +import org.testng.Assert; +import org.testng.annotations.Test; import org.openapitools.codegen.languages.ScalaSttpClientCodegen; import java.util.HashMap; @@ -13,8 +13,8 @@ public class SttpJsonLibraryPropertyTest { ScalaSttpClientCodegen.JsonLibraryProperty property = new ScalaSttpClientCodegen.JsonLibraryProperty(); Map additionalProperties = new HashMap<>(); property.updateAdditionalProperties(additionalProperties); - Assert.assertEquals(true, additionalProperties.get("json4s")); - Assert.assertEquals(false, additionalProperties.get("circe")); + Assert.assertEquals(additionalProperties.get("json4s"), true); + Assert.assertEquals(additionalProperties.get("circe"), false); } @Test @@ -23,8 +23,8 @@ public class SttpJsonLibraryPropertyTest { Map additionalProperties = new HashMap<>(); additionalProperties.put("jsonLibrary", "json4s"); property.updateAdditionalProperties(additionalProperties); - Assert.assertEquals(true, additionalProperties.get("json4s")); - Assert.assertEquals(false, additionalProperties.get("circe")); + Assert.assertEquals(additionalProperties.get("json4s"), true); + Assert.assertEquals(additionalProperties.get("circe"), false); } @Test @@ -33,7 +33,7 @@ public class SttpJsonLibraryPropertyTest { Map additionalProperties = new HashMap<>(); additionalProperties.put("jsonLibrary", "circe"); property.updateAdditionalProperties(additionalProperties); - Assert.assertEquals(false, additionalProperties.get("json4s")); - Assert.assertEquals(true, additionalProperties.get("circe")); + Assert.assertEquals(additionalProperties.get("json4s"), false); + Assert.assertEquals(additionalProperties.get("circe"), true); } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java index 7aa45197522..8bbdb684f1c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpPackagePropertyTest.java @@ -1,7 +1,7 @@ package org.openapitools.codegen.scala; -import org.junit.Assert; -import org.junit.Test; +import org.testng.Assert; +import org.testng.annotations.Test; import org.openapitools.codegen.CodegenConstants; import org.openapitools.codegen.languages.ScalaSttpClientCodegen; diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java index f0db3bdafd3..22be5feecc8 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/scala/SttpStringPropertyTest.java @@ -1,7 +1,7 @@ package org.openapitools.codegen.scala; -import org.junit.Assert; -import org.junit.Test; +import org.testng.Assert; +import org.testng.annotations.Test; import org.openapitools.codegen.languages.ScalaSttpClientCodegen; import java.util.HashMap; @@ -10,21 +10,21 @@ import java.util.Map; public class SttpStringPropertyTest { @Test - public void shouldUseDefaultValueIfAdditionalPropertiesAreEmpty(){ + public void shouldUseDefaultValueIfAdditionalPropertiesAreEmpty() { ScalaSttpClientCodegen.StringProperty property = new ScalaSttpClientCodegen.StringProperty("k1", "desc", "default"); Map additionalProperties = new HashMap<>(); property.updateAdditionalProperties(additionalProperties); - Assert.assertEquals("default", additionalProperties.get("k1")); + Assert.assertEquals(additionalProperties.get("k1"), "default"); } @Test - public void shouldUseGivenValueIfProvided(){ + public void shouldUseGivenValueIfProvided() { ScalaSttpClientCodegen.StringProperty property = new ScalaSttpClientCodegen.StringProperty("k1", "desc", "default"); Map additionalProperties = new HashMap<>(); additionalProperties.put("k1", "custom"); property.updateAdditionalProperties(additionalProperties); - Assert.assertEquals("custom", additionalProperties.get("k1")); + Assert.assertEquals(additionalProperties.get("k1"), "custom"); } } diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/ApiInvoker.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/ApiInvoker.scala new file mode 100644 index 00000000000..f04c9fa6a1e --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/ApiInvoker.scala @@ -0,0 +1,237 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.example.invoker + +import com.sun.jersey.api.client.Client +import com.sun.jersey.api.client.ClientResponse +import com.sun.jersey.api.client.config.ClientConfig +import com.sun.jersey.api.client.config.DefaultClientConfig +import com.sun.jersey.api.client.filter.LoggingFilter + +import com.sun.jersey.core.util.MultivaluedMapImpl +import com.sun.jersey.multipart.FormDataMultiPart +import com.sun.jersey.multipart.file.FileDataBodyPart + +import java.io.File +import java.net.URLEncoder +import java.util.UUID +import javax.ws.rs.core.MediaType + +import scala.collection.JavaConverters._ +import scala.collection.mutable + +import com.fasterxml.jackson.module.scala.DefaultScalaModule +import com.fasterxml.jackson.datatype.joda.JodaModule +import com.fasterxml.jackson.core.JsonGenerator.Feature +import com.fasterxml.jackson.databind._ +import com.fasterxml.jackson.annotation._ +import com.fasterxml.jackson.databind.annotation.JsonSerialize + +object ScalaJsonUtil { + def getJsonMapper: ObjectMapper = { + val mapper = new ObjectMapper() + mapper.registerModule(new DefaultScalaModule()) + mapper.registerModule(new JodaModule()) + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL) + mapper.setSerializationInclusion(JsonInclude.Include.NON_DEFAULT) + mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY) + mapper + } +} + +class ApiInvoker(val mapper: ObjectMapper = ScalaJsonUtil.getJsonMapper, + httpHeaders: mutable.HashMap[String, String] = mutable.HashMap(), + hostMap: mutable.HashMap[String, Client] = mutable.HashMap(), + asyncHttpClient: Boolean = false, + authScheme: String = "", + authPreemptive: Boolean = false +) { + + var defaultHeaders: mutable.HashMap[String, String] = httpHeaders + + def escape(value: String): String = { + URLEncoder.encode(value, "utf-8").replaceAll("\\+", "%20") + } + def escape(values: List[String]): String = { + values.map(escape).mkString(",") + } + + def escape(value: Long): String = value.toString + def escape(value: Double): String = value.toString + def escape(value: Float): String = value.toString + def escape(value: UUID): String = value.toString + + def deserialize(json: String, containerType: String, cls: Class[_]) = { + if (cls == classOf[String]) { + json match { + case s: String => + if (s.startsWith("\"") && s.endsWith("\"") && s.length > 1) { + s.substring(1, s.length - 1) + } else { + s + } + case _ => null + } + } else { + containerType.toLowerCase match { + case "array" => + val typeInfo = mapper.getTypeFactory.constructCollectionType(classOf[java.util.List[_]], cls) + val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] + response.asScala.toList + case "list" => + val typeInfo = mapper.getTypeFactory.constructCollectionType(classOf[java.util.List[_]], cls) + val response = mapper.readValue(json, typeInfo).asInstanceOf[java.util.List[_]] + response.asScala.toList + case _ => + json match { + case e: String if "\"\"" == e => null + case _ => mapper.readValue(json, cls) + } + } + } + } + + def serialize(obj: AnyRef): String = { + if (obj != null) { + obj match { + case e: List[_] => mapper.writeValueAsString(obj.asInstanceOf[List[_]].asJava) + case _ => mapper.writeValueAsString(obj) + } + } else { + null + } + } + + def invokeApi( + host: String, + path: String, + method: String, + queryParams: Map[String, String], + formParams: Map[String, String], + body: AnyRef, + headerParams: Map[String, String], + contentType: String +): String = { + val client = getClient(host) + + val querystring = queryParams.filter(k => k._2 != null).map(k => escape(k._1) + "=" + escape(k._2)).mkString("?", "&", "") + val builder = client.resource(host + path + querystring).accept(contentType) + headerParams.map(p => builder.header(p._1, p._2)) + defaultHeaders.foreach(p => { + if (!headerParams.contains(p._1) && p._2 != null) { + builder.header(p._1, p._2) + } + }) + var formData: MultivaluedMapImpl = null + if (contentType == "application/x-www-form-urlencoded") { + formData = new MultivaluedMapImpl() + formParams.foreach(p => formData.add(p._1, p._2)) + } + + val response: ClientResponse = method match { + case "GET" => builder.get(classOf[ClientResponse]) + case "POST" => + if (formData != null && formData.size() > 0) { + builder.post(classOf[ClientResponse], formData) + } else if (body != null && body.isInstanceOf[File]) { + val file = body.asInstanceOf[File] + val form = new FormDataMultiPart() + form.field("filename", file.getName) + form.bodyPart(new FileDataBodyPart("file", file, MediaType.MULTIPART_FORM_DATA_TYPE)) + builder.post(classOf[ClientResponse], form) + } else { + if (body == null) { + builder.post(classOf[ClientResponse], serialize(body)) + } else { + builder.`type`(contentType).post(classOf[ClientResponse], serialize(body)) + } + } + case "PUT" => + if (formData != null) { + builder.post(classOf[ClientResponse], formData) + } else if (body == null) { + builder.put(classOf[ClientResponse], null) + } else { + builder.`type`(contentType).put(classOf[ClientResponse], serialize(body)) + } + case "DELETE" => builder.delete(classOf[ClientResponse]) + case "PATCH" => + if(formData != null) { + builder.header("X-HTTP-Method-Override", "PATCH").post(classOf[ClientResponse], formData) + } else if(body == null) { + builder.header("X-HTTP-Method-Override", "PATCH").post(classOf[ClientResponse], null) + } else { + builder.header("X-HTTP-Method-Override", "PATCH").`type`(contentType).post(classOf[ClientResponse], serialize(body)) + } + case _ => null + } + response.getStatusInfo.getStatusCode match { + case 204 => "" + case code: Int if Range(200, 299).contains(code) => + if (response.hasEntity) { + response.getEntity(classOf[String]) + } else { + "" + } + case _ => + val entity = if (response.hasEntity) { + response.getEntity(classOf[String]) + } else { + "no data" + } + throw new ApiException(response.getStatusInfo.getStatusCode, entity) + } + } + + def getClient(host: String): Client = { + if (hostMap.contains(host)) { + hostMap(host) + } else { + val client = newClient(host) + // client.addFilter(new LoggingFilter()) + hostMap += host -> client + client + } + } + + def newClient(host: String): Client = if (asyncHttpClient) { + import com.ning.http.client.Realm + import org.sonatype.spice.jersey.client.ahc.AhcHttpClient + import org.sonatype.spice.jersey.client.ahc.config.DefaultAhcConfig + + val config: DefaultAhcConfig = new DefaultAhcConfig() + if (!authScheme.isEmpty) { + val authSchemeEnum = Realm.AuthScheme.valueOf(authScheme) + config + .getAsyncHttpClientConfigBuilder + .setRealm(new Realm.RealmBuilder().setScheme(authSchemeEnum) + .setUsePreemptiveAuth(authPreemptive).build) + } + AhcHttpClient.create(config) + } else { + Client.create() + } +} + +object ApiInvoker extends ApiInvoker( + mapper = ScalaJsonUtil.getJsonMapper, + httpHeaders = mutable.HashMap(), + hostMap = mutable.HashMap(), + asyncHttpClient = false, + authScheme = "", + authPreemptive = false +) + +class ApiException(val code: Int, msg: String) extends RuntimeException(msg) diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/AsyncClient.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/AsyncClient.scala new file mode 100644 index 00000000000..60e423b51cb --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/AsyncClient.scala @@ -0,0 +1,20 @@ +package org.openapitools.example.invoker + +import org.openapitools.example.api._ + +import com.wordnik.swagger.client._ + +import java.io.Closeable + +class AsyncClient(config: SwaggerConfig) extends Closeable { + lazy val locator: ServiceLocator = config.locator + lazy val name: String = config.name + + private[this] val client = transportClient + + protected def transportClient: TransportClient = new RestClient(config) + + def close() { + client.close() + } +} diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject.scala new file mode 100644 index 00000000000..071b023e1a5 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject.scala @@ -0,0 +1,22 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + + +case class InlineObject ( + // Updated name of the pet + name: Option[String] = None, + // Updated status of the pet + status: Option[String] = None +) + diff --git a/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject1.scala b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject1.scala new file mode 100644 index 00000000000..520d5858eb9 --- /dev/null +++ b/samples/client/petstore/scala-httpclient-deprecated/src/main/scala/org/openapitools/client/model/InlineObject1.scala @@ -0,0 +1,23 @@ +/** + * OpenAPI Petstore + * This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +package org.openapitools.client.model + +import java.io.File + +case class InlineObject1 ( + // Additional data to pass to server + additionalMetadata: Option[String] = None, + // file to upload + file: Option[File] = None +) +