Skip to content

Commit c134a8a

Browse files
authored
Add skipCopyWith option for dart-dio (#21816)
* add skipCopyWith option for dart-dio * update dart tests
1 parent 9c11fcf commit c134a8a

File tree

5 files changed

+24
-0
lines changed

5 files changed

+24
-0
lines changed

docs/generators/dart-dio.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
3737
|pubRepository|Repository in generated pubspec| |null|
3838
|pubVersion|Version in generated pubspec| |1.0.0|
3939
|serializationLibrary|Specify serialization library|<dl><dt>**built_value**</dt><dd>[DEFAULT] built_value</dd><dt>**json_serializable**</dt><dd>[BETA] json_serializable</dd></dl>|built_value|
40+
|skipCopyWith|Skip CopyWith when using Json Serializable for serialization| |false|
4041
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
4142
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
4243
|sourceFolder|source folder for generated code| |src|

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ public class DartDioClientCodegen extends AbstractDartCodegen {
6969

7070
private static final String DIO_IMPORT = "package:dio/dio.dart";
7171
public static final String FINAL_PROPERTIES = "finalProperties";
72+
public static final String SKIP_COPY_WITH = "skipCopyWith";
7273
public static final String FINAL_PROPERTIES_DEFAULT_VALUE = "true";
74+
public static final String SKIP_COPY_WITH_DEFAULT_VALUE = "false";
7375

7476
private static final String CLIENT_NAME = "clientName";
7577

@@ -138,6 +140,11 @@ public DartDioClientCodegen() {
138140
final CliOption finalProperties = CliOption.newBoolean(FINAL_PROPERTIES, "Whether properties are marked as final when using Json Serializable for serialization");
139141
finalProperties.setDefault("true");
140142
cliOptions.add(finalProperties);
143+
144+
// skip CopyWith option
145+
final CliOption skipCopyWith = CliOption.newBoolean(SKIP_COPY_WITH, "Skip CopyWith when using Json Serializable for serialization");
146+
skipCopyWith.setDefault("false");
147+
cliOptions.add(skipCopyWith);
141148
}
142149

143150
@Override
@@ -182,6 +189,13 @@ public void processOpts() {
182189
additionalProperties.put(FINAL_PROPERTIES, Boolean.parseBoolean(additionalProperties.get(FINAL_PROPERTIES).toString()));
183190
}
184191

192+
if (!additionalProperties.containsKey(SKIP_COPY_WITH)) {
193+
additionalProperties.put(SKIP_COPY_WITH, Boolean.parseBoolean(SKIP_COPY_WITH_DEFAULT_VALUE));
194+
LOGGER.debug("skipCopyWith not set, using default {}", SKIP_COPY_WITH_DEFAULT_VALUE);
195+
} else {
196+
additionalProperties.put(SKIP_COPY_WITH, Boolean.parseBoolean(additionalProperties.get(SKIP_COPY_WITH).toString()));
197+
}
198+
185199
if (!additionalProperties.containsKey(CLIENT_NAME)) {
186200
final String name = org.openapitools.codegen.utils.StringUtils.camelize(pubName);
187201
additionalProperties.put(CLIENT_NAME, name);

modules/openapi-generator/src/main/resources/dart/libraries/dio/pubspec.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ dependencies:
2525
equatable: '^2.0.7'
2626
{{/useEquatable}}
2727
{{#useJsonSerializable}}
28+
{{^skipCopyWith}}
2829
copy_with_extension: '^7.1.0'
30+
{{/skipCopyWith}}
2931
json_annotation: '^4.9.0'
3032
{{/useJsonSerializable}}
3133
{{#useDateLibTimeMachine}}
@@ -39,7 +41,9 @@ dev_dependencies:
3941
{{/useBuiltValue}}
4042
{{#useJsonSerializable}}
4143
build_runner: any
44+
{{^skipCopyWith}}
4245
copy_with_extension_gen: ^7.1.0
46+
{{/skipCopyWith}}
4347
json_serializable: '^6.9.3'
4448
{{/useJsonSerializable}}
4549
test: '^1.16.0'

modules/openapi-generator/src/main/resources/dart/libraries/dio/serialization/json_serializable/class.mustache

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
{{^skipCopyWith}}
12
import 'package:copy_with_extension/copy_with_extension.dart';
3+
{{/skipCopyWith}}
24
import 'package:json_annotation/json_annotation.dart';
35
{{#useEquatable}}
46
import 'package:equatable/src/equatable_utils.dart';
@@ -18,7 +20,9 @@ part '{{classFilename}}.g.dart';
1820
{{#isDeprecated}}
1921
@Deprecated('{{{classname}}} has been deprecated')
2022
{{/isDeprecated}}
23+
{{^skipCopyWith}}
2124
@CopyWith()
25+
{{/skipCopyWith}}
2226
@JsonSerializable(
2327
checked: true,
2428
createToJson: true,

modules/openapi-generator/src/test/java/org/openapitools/codegen/options/DartDioClientOptionsProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public Map<String, String> createOptions() {
7272
.put(CodegenConstants.LEGACY_DISCRIMINATOR_BEHAVIOR, "true")
7373
.put(CodegenConstants.DISALLOW_ADDITIONAL_PROPERTIES_IF_NOT_PRESENT, "true")
7474
.put(CodegenConstants.ENUM_UNKNOWN_DEFAULT_CASE, ENUM_UNKNOWN_DEFAULT_CASE_VALUE)
75+
.put(DartDioClientCodegen.SKIP_COPY_WITH, DartDioClientCodegen.SKIP_COPY_WITH_DEFAULT_VALUE)
7576
.build();
7677
}
7778

0 commit comments

Comments
 (0)