forked from loafle/openapi-generator-original
fix elixir model naming
This commit is contained in:
parent
bd5b586028
commit
2c7dcbe3e5
@ -24,6 +24,11 @@ then
|
|||||||
mvn clean package
|
mvn clean package
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# remove existing lib and model file
|
||||||
|
echo "removing existing lib, model files"
|
||||||
|
rm -Rf "samples/client/petstore/elixir/lib/swagger_petstore/model/"
|
||||||
|
rm -Rf "samples/client/petstore/elixir/lib/swagger_petstore/lib/"
|
||||||
|
|
||||||
# if you've executed sbt assembly previously it will use that instead.
|
# if you've executed sbt assembly previously it will use that instead.
|
||||||
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
|
||||||
args="$@ generate -t modules/swagger-codegen/src/main/resources/elixir -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l elixir -o samples/client/petstore/elixir"
|
args="$@ generate -t modules/swagger-codegen/src/main/resources/elixir -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l elixir -o samples/client/petstore/elixir"
|
||||||
|
@ -66,6 +66,7 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reserved words. Override this with reserved words specific to your language
|
* Reserved words. Override this with reserved words specific to your language
|
||||||
|
* Ref: https://github.com/itsgreggreg/elixir_quick_reference#reserved-words
|
||||||
*/
|
*/
|
||||||
reservedWords = new HashSet<String>(
|
reservedWords = new HashSet<String>(
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
@ -355,16 +356,49 @@ public class ElixirClientCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
if (name.length() == 0) {
|
if (name.length() == 0) {
|
||||||
return "Default";
|
return "Default";
|
||||||
}
|
}
|
||||||
return initialCaps(name);
|
return camelize(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toApiFilename(String name) {
|
public String toApiFilename(String name) {
|
||||||
|
// replace - with _ e.g. created-at => created_at
|
||||||
|
name = name.replaceAll("-", "_");
|
||||||
|
|
||||||
|
// e.g. PetApi.go => pet_api.go
|
||||||
return underscore(name);
|
return underscore(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toModelName(String name) {
|
||||||
|
// camelize the model name
|
||||||
|
// phone_number => PhoneNumber
|
||||||
|
return camelize(toModelFilename(name));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toModelFilename(String name) {
|
public String toModelFilename(String name) {
|
||||||
|
if (!StringUtils.isEmpty(modelNamePrefix)) {
|
||||||
|
name = modelNamePrefix + "_" + name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!StringUtils.isEmpty(modelNameSuffix)) {
|
||||||
|
name = name + "_" + modelNameSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
name = sanitizeName(name);
|
||||||
|
|
||||||
|
// model name cannot use reserved keyword, e.g. return
|
||||||
|
if (isReservedWord(name)) {
|
||||||
|
LOGGER.warn(name + " (reserved word) cannot be used as model name. Renamed to " + ("model_" + name));
|
||||||
|
name = "model_" + name; // e.g. return => ModelReturn (after camelize)
|
||||||
|
}
|
||||||
|
|
||||||
|
// model name starts with number
|
||||||
|
if (name.matches("^\\d.*")) {
|
||||||
|
LOGGER.warn(name + " (model name starts with number) cannot be used as model name. Renamed to " + ("model_" + name));
|
||||||
|
name = "model_" + name; // e.g. 200Response => Model200Response (after camelize)
|
||||||
|
}
|
||||||
|
|
||||||
return underscore(name);
|
return underscore(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
defmodule SwaggerPetstore.Api.AnotherFake do
|
|
||||||
@moduledoc """
|
|
||||||
Documentation for SwaggerPetstore.Api.AnotherFake.
|
|
||||||
"""
|
|
||||||
|
|
||||||
use Tesla
|
|
||||||
|
|
||||||
plug Tesla.Middleware.BaseUrl, "http://petstore.swagger.io:80/v2"
|
|
||||||
plug Tesla.Middleware.JSON
|
|
||||||
|
|
||||||
@doc """
|
|
||||||
To test special tags
|
|
||||||
|
|
||||||
To test special tags
|
|
||||||
"""
|
|
||||||
def test_special_tags(body) do
|
|
||||||
method = [method: :patch]
|
|
||||||
url = [url: "/another-fake/dummy"]
|
|
||||||
query_params = []
|
|
||||||
header_params = []
|
|
||||||
body_params = [body: body]
|
|
||||||
form_params = []
|
|
||||||
params = query_params ++ header_params ++ body_params ++ form_params
|
|
||||||
opts = []
|
|
||||||
options = method ++ url ++ params ++ opts
|
|
||||||
|
|
||||||
request(options)
|
|
||||||
end
|
|
||||||
end
|
|
@ -274,21 +274,4 @@ defmodule SwaggerPetstore.Api.Fake do
|
|||||||
|> (&Connection.request(connection, &1)).()
|
|> (&Connection.request(connection, &1)).()
|
||||||
|> decode(false)
|
|> decode(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
@doc """
|
|
||||||
test json serialization of form data
|
|
||||||
"""
|
|
||||||
def test_json_form_data(param, param2) do
|
|
||||||
method = [method: :get]
|
|
||||||
url = [url: "/fake/jsonFormData"]
|
|
||||||
query_params = []
|
|
||||||
header_params = []
|
|
||||||
body_params = []
|
|
||||||
form_params = [body: Enum.map_join([{:"param", param}, {:"param2", param2}], "&", &("#{elem(&1, 0)}=#{elem(&1, 1)}"))]
|
|
||||||
params = query_params ++ header_params ++ body_params ++ form_params
|
|
||||||
opts = []
|
|
||||||
options = method ++ url ++ params ++ opts
|
|
||||||
|
|
||||||
request(options)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
defmodule SwaggerPetstore.Api.FakeClassnameTags123 do
|
|
||||||
@moduledoc """
|
|
||||||
Documentation for SwaggerPetstore.Api.FakeClassnameTags123.
|
|
||||||
"""
|
|
||||||
|
|
||||||
use Tesla
|
|
||||||
|
|
||||||
plug Tesla.Middleware.BaseUrl, "http://petstore.swagger.io:80/v2"
|
|
||||||
plug Tesla.Middleware.JSON
|
|
||||||
|
|
||||||
@doc """
|
|
||||||
To test class name in snake case
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
|
||||||
def test_classname(body) do
|
|
||||||
method = [method: :patch]
|
|
||||||
url = [url: "/fake_classname_test"]
|
|
||||||
query_params = []
|
|
||||||
header_params = []
|
|
||||||
body_params = [body: body]
|
|
||||||
form_params = []
|
|
||||||
params = query_params ++ header_params ++ body_params ++ form_params
|
|
||||||
opts = []
|
|
||||||
options = method ++ url ++ params ++ opts
|
|
||||||
|
|
||||||
request(options)
|
|
||||||
end
|
|
||||||
end
|
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/swagger-api/swagger-codegen.git
|
# https://github.com/swagger-api/swagger-codegen.git
|
||||||
# Do not edit the class manually.
|
# Do not edit the class manually.
|
||||||
|
|
||||||
defmodule SwaggerPetstore.Model.Enum_Test do
|
defmodule SwaggerPetstore.Model.EnumTest do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -16,7 +16,7 @@ defmodule SwaggerPetstore.Model.Enum_Test do
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Enum_Test do
|
defimpl Poison.Decoder, for: SwaggerPetstore.Model.EnumTest do
|
||||||
import SwaggerPetstore.Deserializer
|
import SwaggerPetstore.Deserializer
|
||||||
def decode(value, options) do
|
def decode(value, options) do
|
||||||
value
|
value
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/swagger-api/swagger-codegen.git
|
# https://github.com/swagger-api/swagger-codegen.git
|
||||||
# Do not edit the class manually.
|
# Do not edit the class manually.
|
||||||
|
|
||||||
defmodule SwaggerPetstore.Model.Format_test do
|
defmodule SwaggerPetstore.Model.FormatTest do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -25,7 +25,7 @@ defmodule SwaggerPetstore.Model.Format_test do
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Format_test do
|
defimpl Poison.Decoder, for: SwaggerPetstore.Model.FormatTest do
|
||||||
import SwaggerPetstore.Deserializer
|
import SwaggerPetstore.Deserializer
|
||||||
def decode(value, options) do
|
def decode(value, options) do
|
||||||
value
|
value
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/swagger-api/swagger-codegen.git
|
# https://github.com/swagger-api/swagger-codegen.git
|
||||||
# Do not edit the class manually.
|
# Do not edit the class manually.
|
||||||
|
|
||||||
defmodule SwaggerPetstore.Model.200_response do
|
defmodule SwaggerPetstore.Model.Model200Response do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
Model for testing model name starting with number
|
Model for testing model name starting with number
|
||||||
"""
|
"""
|
||||||
@ -14,7 +14,7 @@ defmodule SwaggerPetstore.Model.200_response do
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.200_response do
|
defimpl Poison.Decoder, for: SwaggerPetstore.Model.Model200Response do
|
||||||
def decode(value, _options) do
|
def decode(value, _options) do
|
||||||
value
|
value
|
||||||
end
|
end
|
@ -2,7 +2,7 @@
|
|||||||
# https://github.com/swagger-api/swagger-codegen.git
|
# https://github.com/swagger-api/swagger-codegen.git
|
||||||
# Do not edit the class manually.
|
# Do not edit the class manually.
|
||||||
|
|
||||||
defmodule SwaggerPetstore.Model.$special[model.name] do
|
defmodule SwaggerPetstore.Model.SpecialModelName do
|
||||||
@moduledoc """
|
@moduledoc """
|
||||||
|
|
||||||
"""
|
"""
|
||||||
@ -13,7 +13,7 @@ defmodule SwaggerPetstore.Model.$special[model.name] do
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
defimpl Poison.Decoder, for: SwaggerPetstore.Model.$special[model.name] do
|
defimpl Poison.Decoder, for: SwaggerPetstore.Model.SpecialModelName do
|
||||||
def decode(value, _options) do
|
def decode(value, _options) do
|
||||||
value
|
value
|
||||||
end
|
end
|
Loading…
x
Reference in New Issue
Block a user