forked from loafle/openapi-generator-original
fix(dart-dio): generate enum using built_value (#4235)
Signed-off-by: Minsu Lee <amond@amond.net>
This commit is contained in:
@@ -38,6 +38,7 @@ import java.util.Set;
|
||||
|
||||
import io.swagger.v3.oas.models.media.Schema;
|
||||
|
||||
import static org.openapitools.codegen.utils.StringUtils.camelize;
|
||||
import static org.openapitools.codegen.utils.StringUtils.underscore;
|
||||
|
||||
public class DartDioClientCodegen extends DartClientCodegen {
|
||||
@@ -61,7 +62,6 @@ public class DartDioClientCodegen extends DartClientCodegen {
|
||||
private static final String SERIALIZATION_JSON = "json";
|
||||
|
||||
private boolean nullableFields = true;
|
||||
private String serialization = SERIALIZATION_JSON;
|
||||
|
||||
public DartDioClientCodegen() {
|
||||
super();
|
||||
@@ -102,6 +102,32 @@ public class DartDioClientCodegen extends DartClientCodegen {
|
||||
return super.toDefaultValue(p);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String escapeReservedWord(String name) {
|
||||
if (this.reservedWordsMappings().containsKey(name)) {
|
||||
return this.reservedWordsMappings().get(name);
|
||||
}
|
||||
return "_" + name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toEnumVarName(String name, String datatype) {
|
||||
if (name.length() == 0) {
|
||||
return "empty";
|
||||
}
|
||||
if ("number".equalsIgnoreCase(datatype) ||
|
||||
"int".equalsIgnoreCase(datatype)) {
|
||||
name = "Number" + name;
|
||||
}
|
||||
name = camelize(name, true);
|
||||
|
||||
// for reserved word or word starting with number, append _
|
||||
if (isReservedWord(name) || name.matches("^\\d.*")) {
|
||||
name = escapeReservedWord(name);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void processOpts() {
|
||||
if (StringUtils.isEmpty(System.getenv("DART_POST_PROCESS_FILE"))) {
|
||||
|
||||
@@ -15,7 +15,7 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde
|
||||
@BuiltValueField(wireName: '{{baseName}}')
|
||||
{{{dataType}}} get {{name}};
|
||||
{{#allowableValues}}
|
||||
{{#min}} // range from {{min}} to {{max}}{{/min}}//{{^min}}enum {{name}}Enum { {{#values}} {{.}}, {{/values}} };{{/min}}{
|
||||
{{#min}} // range from {{min}} to {{max}}{{/min}}//{{^min}}enum {{name}}Enum { {{#values}} {{.}}, {{/values}} };{{/min}}
|
||||
{{/allowableValues}}
|
||||
{{/vars}}
|
||||
|
||||
@@ -25,4 +25,4 @@ abstract class {{classname}} implements Built<{{classname}}, {{classname}}Builde
|
||||
factory {{classname}}([updates({{classname}}Builder b)]) = _${{classname}};
|
||||
static Serializer<{{classname}}> get serializer => _${{classVarName}}Serializer;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,36 +1,34 @@
|
||||
@Entity()
|
||||
class {{classname}} {
|
||||
/// The underlying value of this enum member.
|
||||
final {{dataType}} value;
|
||||
import 'package:built_collection/built_collection.dart';
|
||||
import 'package:built_value/built_value.dart';
|
||||
import 'package:built_value/serializer.dart';
|
||||
|
||||
const {{classname}}._internal(this.value);
|
||||
part '{{classFilename}}.g.dart';
|
||||
|
||||
class {{classname}} extends EnumClass {
|
||||
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
{{#description}}
|
||||
/// {{description}}
|
||||
{{/description}}
|
||||
static const {{classname}} {{{name}}} = const {{classname}}._internal({{{value}}});
|
||||
@BuiltValueEnumConst(wireName: '{{name}}')
|
||||
static const {{classname}} {{name}} = _${{name}};
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
|
||||
|
||||
static Serializer<{{classname}}> get serializer => _${{classVarName}}Serializer;
|
||||
|
||||
const {{classname}}._(String name): super(name);
|
||||
|
||||
static BuiltSet<{{classname}}> get values => _$values;
|
||||
static {{classname}} valueOf(String name) => _$valueOf(name);
|
||||
}
|
||||
|
||||
class {{classname}}TypeTransformer extends TypeTransformer<{{classname}}> {
|
||||
|
||||
@override
|
||||
dynamic encode({{classname}} data) {
|
||||
return data.value;
|
||||
}
|
||||
|
||||
@override
|
||||
{{classname}} decode(dynamic data) {
|
||||
switch (data) {
|
||||
{{#allowableValues}}
|
||||
{{#enumVars}}
|
||||
case {{{value}}}: return {{classname}}.{{{name}}};
|
||||
{{/enumVars}}
|
||||
{{/allowableValues}}
|
||||
default: throw('Unknown enum value to decode: $data');
|
||||
}
|
||||
}
|
||||
}
|
||||
/// Optionally, enum_class can generate a mixin to go with your enum for use
|
||||
/// with Angular. It exposes your enum constants as getters. So, if you mix it
|
||||
/// in to your Dart component class, the values become available to the
|
||||
/// corresponding Angular template.
|
||||
///
|
||||
/// Trigger mixin generation by writing a line like this one next to your enum.
|
||||
abstract class {{classname}}Mixin = Object with _${{classname}}Mixin;
|
||||
|
||||
Reference in New Issue
Block a user