Skip to content

Commit dcd9463

Browse files
authored
[feat][elixir] use elixir 1.18 built-in json module (#21039)
* feat: replace jason by built-in json encoder/decoder * chore: update samples
1 parent 7a3ea28 commit dcd9463

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+71
-77
lines changed

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ElixirClientCodegen.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,10 @@ public class ElixirClientCodegen extends DefaultCodegen {
5757
// This is the name of elixir project name;
5858
protected static final String defaultPackageName = "openapi_client";
5959

60-
String supportedElixirVersion = "1.10";
60+
String supportedElixirVersion = "1.18";
6161
List<String> extraApplications = Arrays.asList(":logger");
6262
List<String> deps = Arrays.asList(
6363
"{:tesla, \"~> 1.7\"}",
64-
"{:jason, \"~> 1.4\"}",
6564
"{:ex_doc, \"~> 0.30\", only: :dev, runtime: false}",
6665
"{:dialyxir, \"~> 1.3\", only: [:dev, :test], runtime: false}");
6766

@@ -694,7 +693,7 @@ public String codeMappingKey() {
694693
}
695694

696695
public String decodedStruct() {
697-
// Let Jason decode the entire response into a generic blob
696+
// Decode the entire response into a generic blob
698697
if (isMap) {
699698
return "%{}";
700699
}

modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ defmodule {{moduleName}}.Connection do
216216

217217
tesla_options = Application.get_env(:tesla, __MODULE__, [])
218218
middleware = Keyword.get(tesla_options, :middleware, [])
219-
json_engine = Keyword.get(tesla_options, :json, Jason)
219+
json_engine = Keyword.get(tesla_options, :json, JSON)
220220

221221
user_agent =
222222
Keyword.get(

modules/openapi-generator/src/main/resources/elixir/deserializer.ex.mustache

+4-6
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ defmodule {{moduleName}}.Deserializer do
44
Helper functions for deserializing responses into models
55
"""
66

7-
@jason_decode_opts [keys: :strings]
8-
9-
def jason_decode(json) do
10-
Jason.decode(json, @jason_decode_opts)
7+
def json_decode(json) do
8+
JSON.decode(json)
119
end
1210

13-
def jason_decode(json, module) do
11+
def json_decode(json, module) do
1412
json
15-
|> jason_decode()
13+
|> json_decode()
1614
|> case do
1715
{:ok, decoded} -> {:ok, to_struct(decoded, module)}
1816
{:error, _} = error -> error

modules/openapi-generator/src/main/resources/elixir/model.mustache

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{{&description}}
55
"""
66

7-
@derive Jason.Encoder
7+
@derive JSON.Encoder
88
defstruct [
99
{{#vars}}{{#atom}}{{&baseName}}{{/atom}}{{^-last}},
1010
{{/-last}}{{/vars}}

modules/openapi-generator/src/main/resources/elixir/request_builder.ex.mustache

+3-3
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ defmodule {{moduleName}}.RequestBuilder do
9494
Tesla.Multipart.add_field(
9595
multipart,
9696
key,
97-
Jason.encode!(value),
97+
JSON.encode!(value),
9898
headers: [{:"Content-Type", "application/json"}]
9999
)
100100
end)
@@ -187,10 +187,10 @@ defmodule {{moduleName}}.RequestBuilder do
187187
defp decode(%Tesla.Env{} = env, false), do: {:ok, env}
188188

189189
defp decode(%Tesla.Env{body: body}, %{}) do
190-
{{moduleName}}.Deserializer.jason_decode(body)
190+
{{moduleName}}.Deserializer.json_decode(body)
191191
end
192192

193193
defp decode(%Tesla.Env{body: body}, module) do
194-
{{moduleName}}.Deserializer.jason_decode(body, module)
194+
{{moduleName}}.Deserializer.json_decode(body, module)
195195
end
196196
end

samples/client/petstore/elixir/lib/openapi_petstore/connection.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ defmodule OpenapiPetstore.Connection do
153153

154154
tesla_options = Application.get_env(:tesla, __MODULE__, [])
155155
middleware = Keyword.get(tesla_options, :middleware, [])
156-
json_engine = Keyword.get(tesla_options, :json, Jason)
156+
json_engine = Keyword.get(tesla_options, :json, JSON)
157157

158158
user_agent =
159159
Keyword.get(

samples/client/petstore/elixir/lib/openapi_petstore/deserializer.ex

+4-6
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,13 @@ defmodule OpenapiPetstore.Deserializer do
66
Helper functions for deserializing responses into models
77
"""
88

9-
@jason_decode_opts [keys: :strings]
10-
11-
def jason_decode(json) do
12-
Jason.decode(json, @jason_decode_opts)
9+
def json_decode(json) do
10+
JSON.decode(json)
1311
end
1412

15-
def jason_decode(json, module) do
13+
def json_decode(json, module) do
1614
json
17-
|> jason_decode()
15+
|> json_decode()
1816
|> case do
1917
{:ok, decoded} -> {:ok, to_struct(decoded, module)}
2018
{:error, _} = error -> error

samples/client/petstore/elixir/lib/openapi_petstore/model/_foo_get_default_response.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.FooGetDefaultResponse do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:string
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/_special_model_name_.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.SpecialModelName do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:"$special[property.name]"
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/additional_properties_class.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.AdditionalPropertiesClass do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:map_property,
1212
:map_of_map_property

samples/client/petstore/elixir/lib/openapi_petstore/model/all_of_with_single_ref.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.AllOfWithSingleRef do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:username,
1212
:SingleRefType

samples/client/petstore/elixir/lib/openapi_petstore/model/animal.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Animal do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:className,
1212
:color

samples/client/petstore/elixir/lib/openapi_petstore/model/any.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Any do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:"@type"
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/api_response.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ApiResponse do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:code,
1212
:type,

samples/client/petstore/elixir/lib/openapi_petstore/model/array_of_array_of_number_only.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ArrayOfArrayOfNumberOnly do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:ArrayArrayNumber
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/array_of_number_only.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ArrayOfNumberOnly do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:ArrayNumber
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/array_test.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ArrayTest do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:array_of_string,
1212
:array_array_of_integer,

samples/client/petstore/elixir/lib/openapi_petstore/model/capitalization.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Capitalization do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:smallCamel,
1212
:CapitalCamel,

samples/client/petstore/elixir/lib/openapi_petstore/model/cat.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Cat do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:className,
1212
:color,

samples/client/petstore/elixir/lib/openapi_petstore/model/category.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Category do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:id,
1212
:name

samples/client/petstore/elixir/lib/openapi_petstore/model/child_with_nullable.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ChildWithNullable do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:type,
1212
:nullableProperty,

samples/client/petstore/elixir/lib/openapi_petstore/model/class_model.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.ClassModel do
66
Model for testing model with \"_class\" property
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:_class
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/client.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Client do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:client
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/deprecated_model.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.DeprecatedModel do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:name
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/dog.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Dog do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:className,
1212
:color,

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_arrays.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.EnumArrays do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:just_symbol,
1212
:array_enum

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_class.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.EnumClass do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111

1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/enum_test.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.EnumTest do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:enum_string,
1212
:enum_string_required,

samples/client/petstore/elixir/lib/openapi_petstore/model/fake_big_decimal_map_200_response.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.FakeBigDecimalMap200Response do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:someId,
1212
:someMap

samples/client/petstore/elixir/lib/openapi_petstore/model/file.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.File do
66
Must be named `File` for test.
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:sourceURI
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/file_schema_test_class.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.FileSchemaTestClass do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:file,
1212
:files

samples/client/petstore/elixir/lib/openapi_petstore/model/foo.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Foo do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:bar
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/format_test.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.FormatTest do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:integer,
1212
:int32,

samples/client/petstore/elixir/lib/openapi_petstore/model/has_only_read_only.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.HasOnlyReadOnly do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:bar,
1212
:foo

samples/client/petstore/elixir/lib/openapi_petstore/model/health_check_result.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.HealthCheckResult do
66
Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model.
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:NullableMessage
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/list.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.List do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:"123-list"
1212
]

samples/client/petstore/elixir/lib/openapi_petstore/model/map_test.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.MapTest do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:map_map_of_string,
1212
:map_of_enum_string,

samples/client/petstore/elixir/lib/openapi_petstore/model/mixed_properties_and_additional_properties_class.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.MixedPropertiesAndAdditionalPropertiesClass do
66
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:uuid,
1212
:dateTime,

samples/client/petstore/elixir/lib/openapi_petstore/model/model_200_response.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ defmodule OpenapiPetstore.Model.Model200Response do
66
Model for testing model name starting with number
77
"""
88

9-
@derive Jason.Encoder
9+
@derive JSON.Encoder
1010
defstruct [
1111
:name,
1212
:class

0 commit comments

Comments
 (0)