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

Lines changed: 2 additions & 3 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 4 additions & 6 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 3 additions & 3 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 4 additions & 6 deletions
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

Lines changed: 1 addition & 1 deletion
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

0 commit comments

Comments
 (0)