From 0365751583d05a540630ee7e2300fa4a2cfc2eca Mon Sep 17 00:00:00 2001 From: xiaofeicao Date: Thu, 14 Mar 2024 14:26:30 +0800 Subject: [PATCH 1/4] test --- Generate.ps1 | 1 + fluent-tests/Initialize-Tests.ps1 | 3 +++ .../src/test/java/com/azure/mgmttest/CompilationTests.java | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/Generate.ps1 b/Generate.ps1 index 724773f381..c11ea08dc1 100644 --- a/Generate.ps1 +++ b/Generate.ps1 @@ -146,6 +146,7 @@ $job = @( "$VANILLA_ARGUMENTS --input-file=vanilla-tests/swagger/special-header.json --namespace=fixtures.specialheader", "$VANILLA_ARGUMENTS --input-file=vanilla-tests/swagger/required-fields-as-ctor-args-transformation.json --namespace=fixtures.requiredfieldsascotrargstransformation --required-fields-as-ctor-args=true --output-model-immutable --null-byte-array-maps-to-empty-array", "$VANILLA_ARGUMENTS --input-file=vanilla-tests/swagger/discriminator-enum.json --namespace=fixtures.discriminatorenum" + "$VANILLA_ARGUMENTS --input-file=vanilla-tests/swagger/discriminator-enum.json --namespace=fixtures.discriminatorsetter --models-subpackage=implementation.models --custom-types-subpackage=models --custom-types=Golden" ) | ForEach-Object -Parallel $generateScript -ThrottleLimit $Parallelization -AsJob $job | Wait-Job -Timeout 120 diff --git a/fluent-tests/Initialize-Tests.ps1 b/fluent-tests/Initialize-Tests.ps1 index 5d4df731b2..eeb01f0cab 100644 --- a/fluent-tests/Initialize-Tests.ps1 +++ b/fluent-tests/Initialize-Tests.ps1 @@ -129,6 +129,9 @@ $job = @( # model inherit ErrorResponse "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=https://raw.githubusercontent.com/Azure/azure-rest-api-specs/196886564583ff59186bd0ef44d923120aaf3f78/specification/managednetworkfabric/resource-manager/Microsoft.ManagedNetworkFabric/stable/2023-06-15/NetworkFabrics.json --java.namespace=com.azure.mgmtlitetest.managednetworkfabric", + # polymorphic models in different packages + "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=https://github.com/Azure/azure-rest-api-specs/blob/64337ca106a20055b389f9652ea8cf942aa94252/specification/consumption/resource-manager/Microsoft.Consumption/stable/2023-11-01/consumption.json --java.namespace=com.azure.mgmtlitetest.consumption" + # schema clean-up "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=./swagger/schema-cleanup.json --java.namespace=com.azure.mgmtlitetest.schemacleanup" diff --git a/fluent-tests/src/test/java/com/azure/mgmttest/CompilationTests.java b/fluent-tests/src/test/java/com/azure/mgmttest/CompilationTests.java index afaba82290..34921729e2 100644 --- a/fluent-tests/src/test/java/com/azure/mgmttest/CompilationTests.java +++ b/fluent-tests/src/test/java/com/azure/mgmttest/CompilationTests.java @@ -7,6 +7,7 @@ import com.azure.core.management.SystemData; import com.azure.core.management.exception.ManagementError; import com.azure.core.management.exception.ManagementException; +import com.azure.mgmtlitetest.consumption.models.LegacyReservationRecommendation; import com.azure.mgmttest.appservice.fluent.WebSiteManagementClient; import com.azure.mgmttest.appservice.models.DefaultErrorResponseErrorException; import com.azure.mgmttest.authorization.models.GraphError; @@ -160,4 +161,8 @@ public void testSharedError() { ErrorDetails errorDetails = mock(ErrorDetails.class); errorDetails.getHttpStatusCode(); } + + public void testPolymophicSubClass() { + LegacyReservationRecommendation legacyReservationRecommendation = new LegacyReservationRecommendation(); + } } From 3849ab0b37df534a5a9fb834e0664644651b90db Mon Sep 17 00:00:00 2001 From: xiaofeicao Date: Thu, 14 Mar 2024 15:23:44 +0800 Subject: [PATCH 2/4] polymorphic setter protected --- .../main/java/com/azure/autorest/template/ModelTemplate.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/javagen/src/main/java/com/azure/autorest/template/ModelTemplate.java b/javagen/src/main/java/com/azure/autorest/template/ModelTemplate.java index e73640eba6..0c271fcadd 100644 --- a/javagen/src/main/java/com/azure/autorest/template/ModelTemplate.java +++ b/javagen/src/main/java/com/azure/autorest/template/ModelTemplate.java @@ -215,9 +215,12 @@ public final void write(ClientModel model, JavaFile javaFile) { boolean definedByModel = modelDefinesProperty(model, property); if (hasDerivedTypes && notIncludedInConstructor && definedByModel && (settings.isStreamStyleSerialization() || property.isPolymorphicDiscriminator())) { + // Super class and child classes may be in different packages. + // Since we call polymorphic setter in child classes' constructor, we need the setter to be visibility of protected. + methodVisibility = property.isPolymorphicDiscriminator() ? JavaVisibility.Protected : JavaVisibility.PackagePrivate; generateSetterJavadoc(classBlock, model, property); addGeneratedAnnotation(classBlock); - classBlock.method(JavaVisibility.PackagePrivate, null, + classBlock.method(methodVisibility, null, model.getName() + " " + property.getSetterName() + "(" + propertyWireType + " " + property.getName() + ")", methodBlock -> addSetterMethod(propertyWireType, propertyWireType, property, treatAsXml, From b5864e1307d17010877f5e5ff74a7e1ef22cf0f6 Mon Sep 17 00:00:00 2001 From: actions-user Date: Thu, 14 Mar 2024 07:49:29 +0000 Subject: [PATCH 3/4] re-generate test code --- .../models/OperationDetails.java | 2 +- .../implementation/models/DotFish.java | 2 +- .../implementation/models/Fish.java | 2 +- .../implementation/models/MyBaseType.java | 2 +- .../implementation/models/AbstractModel.java | 2 +- .../java/com/cadl/naming/models/Data.java | 2 +- .../main/java/com/cadl/patch/models/Fish.java | 2 +- .../enumdiscriminator/models/Dog.java | 2 +- .../enumdiscriminator/models/Snake.java | 2 +- .../nesteddiscriminator/models/Fish.java | 2 +- .../singlediscriminator/models/Bird.java | 2 +- .../singlediscriminator/models/Dinosaur.java | 2 +- ...nownAdditionalPropertiesDiscriminated.java | 2 +- ...nownAdditionalPropertiesDiscriminated.java | 2 +- .../fixtures/bodycomplex/models/DotFish.java | 2 +- .../fixtures/bodycomplex/models/Fish.java | 2 +- .../bodycomplex/models/MyBaseType.java | 2 +- .../discriminatorenum/models/Dog.java | 2 +- .../models/MetricAlertCriteria.java | 2 +- .../models/MetricAlertCriteria.java | 2 +- .../noflatten/models/MetricAlertCriteria.java | 2 +- .../models/MetricAlertCriteria.java | 2 +- .../EnumDiscriminator.java | 213 ++++++++++++++ .../EnumDiscriminatorBuilder.java | 278 ++++++++++++++++++ .../implementation/models/Dog.java | 148 ++++++++++ .../implementation/models/DogKind.java | 46 +++ .../implementation/models/package-info.java | 9 + .../discriminatorsetter/models/Golden.java | 84 ++++++ .../models/package-info.java | 9 + .../discriminatorsetter/package-info.java | 9 + .../models/MetricAlertCriteria.java | 2 +- .../models/DotFish.java | 2 +- .../streamstyleserialization/models/Fish.java | 2 +- .../models/MyBaseType.java | 2 +- .../models/DotFish.java | 2 +- .../models/Fish.java | 2 +- .../models/MyBaseType.java | 2 +- .../models/DotFish.java | 2 +- .../models/Fish.java | 2 +- .../models/MyBaseType.java | 2 +- 40 files changed, 828 insertions(+), 32 deletions(-) create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminator.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminatorBuilder.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/Dog.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/DogKind.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/package-info.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/Golden.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/package-info.java create mode 100644 vanilla-tests/src/main/java/fixtures/discriminatorsetter/package-info.java diff --git a/azure-dataplane-tests/src/main/java/com/azure/ai/formrecognizer/documentanalysis/implementation/models/OperationDetails.java b/azure-dataplane-tests/src/main/java/com/azure/ai/formrecognizer/documentanalysis/implementation/models/OperationDetails.java index 69c8114434..451b9c2fef 100644 --- a/azure-dataplane-tests/src/main/java/com/azure/ai/formrecognizer/documentanalysis/implementation/models/OperationDetails.java +++ b/azure-dataplane-tests/src/main/java/com/azure/ai/formrecognizer/documentanalysis/implementation/models/OperationDetails.java @@ -91,7 +91,7 @@ public String getKind() { * @param kind the kind value to set. * @return the OperationDetails object itself. */ - OperationDetails setKind(String kind) { + protected OperationDetails setKind(String kind) { this.kind = kind; return this; } diff --git a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/DotFish.java b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/DotFish.java index 52595e8db7..2ca1041f1e 100644 --- a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/DotFish.java +++ b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/DotFish.java @@ -48,7 +48,7 @@ public String getFishType() { * @param fishType the fishType value to set. * @return the DotFish object itself. */ - DotFish setFishType(String fishType) { + protected DotFish setFishType(String fishType) { this.fishType = fishType; return this; } diff --git a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/Fish.java b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/Fish.java index 1f2b354e18..f9d67565d2 100644 --- a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/Fish.java +++ b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/Fish.java @@ -59,7 +59,7 @@ public String getFishtype() { * @param fishtype the fishtype value to set. * @return the Fish object itself. */ - Fish setFishtype(String fishtype) { + protected Fish setFishtype(String fishtype) { this.fishtype = fishtype; return this; } diff --git a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/MyBaseType.java b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/MyBaseType.java index f4c5d9f559..f8834cc227 100644 --- a/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/MyBaseType.java +++ b/customization-tests/src/main/java/fixtures/bodycomplex/implementation/models/MyBaseType.java @@ -53,7 +53,7 @@ public MyKind getKind() { * @param kind the kind value to set. * @return the MyBaseType object itself. */ - MyBaseType setKind(MyKind kind) { + protected MyBaseType setKind(MyKind kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/_specs_/azure/clientgenerator/core/access/implementation/models/AbstractModel.java b/typespec-tests/src/main/java/com/_specs_/azure/clientgenerator/core/access/implementation/models/AbstractModel.java index 7d5ecbfe36..06c53c8b31 100644 --- a/typespec-tests/src/main/java/com/_specs_/azure/clientgenerator/core/access/implementation/models/AbstractModel.java +++ b/typespec-tests/src/main/java/com/_specs_/azure/clientgenerator/core/access/implementation/models/AbstractModel.java @@ -57,7 +57,7 @@ public String getKind() { * @return the AbstractModel object itself. */ @Generated - AbstractModel setKind(String kind) { + protected AbstractModel setKind(String kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/cadl/naming/models/Data.java b/typespec-tests/src/main/java/com/cadl/naming/models/Data.java index 30b1c3d840..4fe50bc5e0 100644 --- a/typespec-tests/src/main/java/com/cadl/naming/models/Data.java +++ b/typespec-tests/src/main/java/com/cadl/naming/models/Data.java @@ -48,7 +48,7 @@ public String getType() { * @return the Data object itself. */ @Generated - Data setType(String type) { + protected Data setType(String type) { this.type = type; return this; } diff --git a/typespec-tests/src/main/java/com/cadl/patch/models/Fish.java b/typespec-tests/src/main/java/com/cadl/patch/models/Fish.java index a0fb57558a..16944065a5 100644 --- a/typespec-tests/src/main/java/com/cadl/patch/models/Fish.java +++ b/typespec-tests/src/main/java/com/cadl/patch/models/Fish.java @@ -96,7 +96,7 @@ public String getKind() { * @return the Fish object itself. */ @Generated - Fish setKind(String kind) { + protected Fish setKind(String kind) { this.kind = kind; this.updatedProperties.add("kind"); return this; diff --git a/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Dog.java b/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Dog.java index 64253e8d6f..189e8d1121 100644 --- a/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Dog.java +++ b/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Dog.java @@ -57,7 +57,7 @@ public DogKind getKind() { * @return the Dog object itself. */ @Generated - Dog setKind(DogKind kind) { + protected Dog setKind(DogKind kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Snake.java b/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Snake.java index 161e0005dd..ef443141d6 100644 --- a/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Snake.java +++ b/typespec-tests/src/main/java/com/type/model/inheritance/enumdiscriminator/models/Snake.java @@ -57,7 +57,7 @@ public SnakeKind getKind() { * @return the Snake object itself. */ @Generated - Snake setKind(SnakeKind kind) { + protected Snake setKind(SnakeKind kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/model/inheritance/nesteddiscriminator/models/Fish.java b/typespec-tests/src/main/java/com/type/model/inheritance/nesteddiscriminator/models/Fish.java index 3bebe23f5d..56cccbda9a 100644 --- a/typespec-tests/src/main/java/com/type/model/inheritance/nesteddiscriminator/models/Fish.java +++ b/typespec-tests/src/main/java/com/type/model/inheritance/nesteddiscriminator/models/Fish.java @@ -57,7 +57,7 @@ public String getKind() { * @return the Fish object itself. */ @Generated - Fish setKind(String kind) { + protected Fish setKind(String kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Bird.java b/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Bird.java index 189f6de937..3e70d5522c 100644 --- a/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Bird.java +++ b/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Bird.java @@ -57,7 +57,7 @@ public String getKind() { * @return the Bird object itself. */ @Generated - Bird setKind(String kind) { + protected Bird setKind(String kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Dinosaur.java b/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Dinosaur.java index fe66b671c6..2c90378761 100644 --- a/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Dinosaur.java +++ b/typespec-tests/src/main/java/com/type/model/inheritance/singlediscriminator/models/Dinosaur.java @@ -57,7 +57,7 @@ public String getKind() { * @return the Dinosaur object itself. */ @Generated - Dinosaur setKind(String kind) { + protected Dinosaur setKind(String kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/property/additionalproperties/models/ExtendsUnknownAdditionalPropertiesDiscriminated.java b/typespec-tests/src/main/java/com/type/property/additionalproperties/models/ExtendsUnknownAdditionalPropertiesDiscriminated.java index 6f9827beaa..1f2420e765 100644 --- a/typespec-tests/src/main/java/com/type/property/additionalproperties/models/ExtendsUnknownAdditionalPropertiesDiscriminated.java +++ b/typespec-tests/src/main/java/com/type/property/additionalproperties/models/ExtendsUnknownAdditionalPropertiesDiscriminated.java @@ -66,7 +66,7 @@ public String getKind() { * @return the ExtendsUnknownAdditionalPropertiesDiscriminated object itself. */ @Generated - ExtendsUnknownAdditionalPropertiesDiscriminated setKind(String kind) { + protected ExtendsUnknownAdditionalPropertiesDiscriminated setKind(String kind) { this.kind = kind; return this; } diff --git a/typespec-tests/src/main/java/com/type/property/additionalproperties/models/IsUnknownAdditionalPropertiesDiscriminated.java b/typespec-tests/src/main/java/com/type/property/additionalproperties/models/IsUnknownAdditionalPropertiesDiscriminated.java index 62857b99c8..8c4c968c3d 100644 --- a/typespec-tests/src/main/java/com/type/property/additionalproperties/models/IsUnknownAdditionalPropertiesDiscriminated.java +++ b/typespec-tests/src/main/java/com/type/property/additionalproperties/models/IsUnknownAdditionalPropertiesDiscriminated.java @@ -66,7 +66,7 @@ public String getKind() { * @return the IsUnknownAdditionalPropertiesDiscriminated object itself. */ @Generated - IsUnknownAdditionalPropertiesDiscriminated setKind(String kind) { + protected IsUnknownAdditionalPropertiesDiscriminated setKind(String kind) { this.kind = kind; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/DotFish.java b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/DotFish.java index db977d5117..5a262fa305 100644 --- a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/DotFish.java +++ b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/DotFish.java @@ -48,7 +48,7 @@ public String getFishType() { * @param fishType the fishType value to set. * @return the DotFish object itself. */ - DotFish setFishType(String fishType) { + protected DotFish setFishType(String fishType) { this.fishType = fishType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/Fish.java b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/Fish.java index 966c84f678..ada268addf 100644 --- a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/Fish.java +++ b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/Fish.java @@ -62,7 +62,7 @@ public String getFishtype() { * @param fishtype the fishtype value to set. * @return the Fish object itself. */ - Fish setFishtype(String fishtype) { + protected Fish setFishtype(String fishtype) { this.fishtype = fishtype; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/MyBaseType.java b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/MyBaseType.java index 9f0594f171..a69f765f59 100644 --- a/vanilla-tests/src/main/java/fixtures/bodycomplex/models/MyBaseType.java +++ b/vanilla-tests/src/main/java/fixtures/bodycomplex/models/MyBaseType.java @@ -53,7 +53,7 @@ public MyKind getKind() { * @param kind the kind value to set. * @return the MyBaseType object itself. */ - MyBaseType setKind(MyKind kind) { + protected MyBaseType setKind(MyKind kind) { this.kind = kind; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorenum/models/Dog.java b/vanilla-tests/src/main/java/fixtures/discriminatorenum/models/Dog.java index 5970cd03f7..654ab68921 100644 --- a/vanilla-tests/src/main/java/fixtures/discriminatorenum/models/Dog.java +++ b/vanilla-tests/src/main/java/fixtures/discriminatorenum/models/Dog.java @@ -48,7 +48,7 @@ public DogKind getKind() { * @param kind the kind value to set. * @return the Dog object itself. */ - Dog setKind(DogKind kind) { + protected Dog setKind(DogKind kind) { this.kind = kind; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/clientflatten/models/MetricAlertCriteria.java b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/clientflatten/models/MetricAlertCriteria.java index bda8ea7cbd..8c2cf40902 100644 --- a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/clientflatten/models/MetricAlertCriteria.java +++ b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/clientflatten/models/MetricAlertCriteria.java @@ -50,7 +50,7 @@ public Odatatype getOdataType() { * @param odataType the odataType value to set. * @return the MetricAlertCriteria object itself. */ - MetricAlertCriteria setOdataType(Odatatype odataType) { + protected MetricAlertCriteria setOdataType(Odatatype odataType) { this.odataType = odataType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/models/MetricAlertCriteria.java b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/models/MetricAlertCriteria.java index c9e71cf27a..08a4eb3fc6 100644 --- a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/models/MetricAlertCriteria.java +++ b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/models/MetricAlertCriteria.java @@ -50,7 +50,7 @@ public Odatatype getOdataType() { * @param odataType the odataType value to set. * @return the MetricAlertCriteria object itself. */ - MetricAlertCriteria setOdataType(Odatatype odataType) { + protected MetricAlertCriteria setOdataType(Odatatype odataType) { this.odataType = odataType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/noflatten/models/MetricAlertCriteria.java b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/noflatten/models/MetricAlertCriteria.java index 157e72aaaf..44dd8493ce 100644 --- a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/noflatten/models/MetricAlertCriteria.java +++ b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/noflatten/models/MetricAlertCriteria.java @@ -50,7 +50,7 @@ public Odatatype getOdataType() { * @param odataType the odataType value to set. * @return the MetricAlertCriteria object itself. */ - MetricAlertCriteria setOdataType(Odatatype odataType) { + protected MetricAlertCriteria setOdataType(Odatatype odataType) { this.odataType = odataType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/requirexmsflattened/models/MetricAlertCriteria.java b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/requirexmsflattened/models/MetricAlertCriteria.java index 615916016c..3931d507bb 100644 --- a/vanilla-tests/src/main/java/fixtures/discriminatorflattening/requirexmsflattened/models/MetricAlertCriteria.java +++ b/vanilla-tests/src/main/java/fixtures/discriminatorflattening/requirexmsflattened/models/MetricAlertCriteria.java @@ -50,7 +50,7 @@ public Odatatype getOdataType() { * @param odataType the odataType value to set. * @return the MetricAlertCriteria object itself. */ - MetricAlertCriteria setOdataType(Odatatype odataType) { + protected MetricAlertCriteria setOdataType(Odatatype odataType) { this.odataType = odataType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminator.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminator.java new file mode 100644 index 0000000000..77416e9d1b --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminator.java @@ -0,0 +1,213 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package fixtures.discriminatorsetter; + +import com.azure.core.annotation.ExpectedResponses; +import com.azure.core.annotation.Get; +import com.azure.core.annotation.HeaderParam; +import com.azure.core.annotation.Host; +import com.azure.core.annotation.HostParam; +import com.azure.core.annotation.ReturnType; +import com.azure.core.annotation.ServiceInterface; +import com.azure.core.annotation.ServiceMethod; +import com.azure.core.annotation.UnexpectedResponseExceptionType; +import com.azure.core.exception.HttpResponseException; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.policy.RetryPolicy; +import com.azure.core.http.policy.UserAgentPolicy; +import com.azure.core.http.rest.Response; +import com.azure.core.http.rest.RestProxy; +import com.azure.core.util.Context; +import com.azure.core.util.FluxUtil; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerAdapter; +import fixtures.discriminatorsetter.implementation.models.Dog; +import reactor.core.publisher.Mono; + +/** + * Initializes a new instance of the EnumDiscriminator type. + */ +public final class EnumDiscriminator { + /** + * The proxy service used to perform REST calls. + */ + private final EnumDiscriminatorService service; + + /** + * server parameter. + */ + private final String host; + + /** + * Gets server parameter. + * + * @return the host value. + */ + public String getHost() { + return this.host; + } + + /** + * The HTTP pipeline to send requests through. + */ + private final HttpPipeline httpPipeline; + + /** + * Gets The HTTP pipeline to send requests through. + * + * @return the httpPipeline value. + */ + public HttpPipeline getHttpPipeline() { + return this.httpPipeline; + } + + /** + * The serializer to serialize an object into a string. + */ + private final SerializerAdapter serializerAdapter; + + /** + * Gets The serializer to serialize an object into a string. + * + * @return the serializerAdapter value. + */ + public SerializerAdapter getSerializerAdapter() { + return this.serializerAdapter; + } + + /** + * Initializes an instance of EnumDiscriminator client. + * + * @param host server parameter. + */ + EnumDiscriminator(String host) { + this(new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(), + JacksonAdapter.createDefaultSerializerAdapter(), host); + } + + /** + * Initializes an instance of EnumDiscriminator client. + * + * @param httpPipeline The HTTP pipeline to send requests through. + * @param host server parameter. + */ + EnumDiscriminator(HttpPipeline httpPipeline, String host) { + this(httpPipeline, JacksonAdapter.createDefaultSerializerAdapter(), host); + } + + /** + * Initializes an instance of EnumDiscriminator client. + * + * @param httpPipeline The HTTP pipeline to send requests through. + * @param serializerAdapter The serializer to serialize an object into a string. + * @param host server parameter. + */ + EnumDiscriminator(HttpPipeline httpPipeline, SerializerAdapter serializerAdapter, String host) { + this.httpPipeline = httpPipeline; + this.serializerAdapter = serializerAdapter; + this.host = host; + this.service = RestProxy.create(EnumDiscriminatorService.class, this.httpPipeline, this.getSerializerAdapter()); + } + + /** + * The interface defining all the services for EnumDiscriminator to be used by the proxy service to perform REST calls. + */ + @Host("{$host}") + @ServiceInterface(name = "EnumDiscriminator") + public interface EnumDiscriminatorService { + @Get("/extensible-enum") + @ExpectedResponses({ 200 }) + @UnexpectedResponseExceptionType(HttpResponseException.class) + Mono> getExtensibleModel(@HostParam("$host") String host, @HeaderParam("Accept") String accept, + Context context); + } + + /** + * The getExtensibleModel operation. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getExtensibleModelWithResponseAsync() { + if (this.getHost() == null) { + return Mono.error(new IllegalArgumentException("Parameter this.getHost() is required and cannot be null.")); + } + final String accept = "application/json"; + return FluxUtil.withContext(context -> service.getExtensibleModel(this.getHost(), accept, context)); + } + + /** + * The getExtensibleModel operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator along with {@link Response} on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> getExtensibleModelWithResponseAsync(Context context) { + if (this.getHost() == null) { + return Mono.error(new IllegalArgumentException("Parameter this.getHost() is required and cannot be null.")); + } + final String accept = "application/json"; + return service.getExtensibleModel(this.getHost(), accept, context); + } + + /** + * The getExtensibleModel operation. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getExtensibleModelAsync() { + return getExtensibleModelWithResponseAsync().flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * The getExtensibleModel operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator on successful completion of {@link Mono}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono getExtensibleModelAsync(Context context) { + return getExtensibleModelWithResponseAsync(context).flatMap(res -> Mono.justOrEmpty(res.getValue())); + } + + /** + * The getExtensibleModel operation. + * + * @param context The context to associate with this operation. + * @throws IllegalArgumentException thrown if parameters fail the validation. + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator along with {@link Response}. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response getExtensibleModelWithResponse(Context context) { + return getExtensibleModelWithResponseAsync(context).block(); + } + + /** + * The getExtensibleModel operation. + * + * @throws HttpResponseException thrown if the request is rejected by server. + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. + * @return test extensible enum type for discriminator. + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Dog getExtensibleModel() { + return getExtensibleModelWithResponse(Context.NONE).getValue(); + } +} diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminatorBuilder.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminatorBuilder.java new file mode 100644 index 0000000000..79ee4441b8 --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/EnumDiscriminatorBuilder.java @@ -0,0 +1,278 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package fixtures.discriminatorsetter; + +import com.azure.core.annotation.Generated; +import com.azure.core.annotation.ServiceClientBuilder; +import com.azure.core.client.traits.ConfigurationTrait; +import com.azure.core.client.traits.HttpTrait; +import com.azure.core.http.HttpClient; +import com.azure.core.http.HttpHeaderName; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpPipeline; +import com.azure.core.http.HttpPipelineBuilder; +import com.azure.core.http.HttpPipelinePosition; +import com.azure.core.http.policy.AddDatePolicy; +import com.azure.core.http.policy.AddHeadersFromContextPolicy; +import com.azure.core.http.policy.AddHeadersPolicy; +import com.azure.core.http.policy.HttpLoggingPolicy; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.policy.HttpPipelinePolicy; +import com.azure.core.http.policy.HttpPolicyProviders; +import com.azure.core.http.policy.RequestIdPolicy; +import com.azure.core.http.policy.RetryOptions; +import com.azure.core.http.policy.RetryPolicy; +import com.azure.core.http.policy.UserAgentPolicy; +import com.azure.core.util.ClientOptions; +import com.azure.core.util.Configuration; +import com.azure.core.util.CoreUtils; +import com.azure.core.util.builder.ClientBuilderUtil; +import com.azure.core.util.serializer.JacksonAdapter; +import com.azure.core.util.serializer.SerializerAdapter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * A builder for creating a new instance of the EnumDiscriminator type. + */ +@ServiceClientBuilder(serviceClients = { EnumDiscriminator.class }) +public final class EnumDiscriminatorBuilder + implements HttpTrait, ConfigurationTrait { + @Generated + private static final String SDK_NAME = "name"; + + @Generated + private static final String SDK_VERSION = "version"; + + @Generated + private static final Map PROPERTIES = new HashMap<>(); + + @Generated + private final List pipelinePolicies; + + /** + * Create an instance of the EnumDiscriminatorBuilder. + */ + @Generated + public EnumDiscriminatorBuilder() { + this.pipelinePolicies = new ArrayList<>(); + } + + /* + * The HTTP pipeline to send requests through. + */ + @Generated + private HttpPipeline pipeline; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder pipeline(HttpPipeline pipeline) { + this.pipeline = pipeline; + return this; + } + + /* + * The HTTP client used to send the request. + */ + @Generated + private HttpClient httpClient; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder httpClient(HttpClient httpClient) { + this.httpClient = httpClient; + return this; + } + + /* + * The logging configuration for HTTP requests and responses. + */ + @Generated + private HttpLogOptions httpLogOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder httpLogOptions(HttpLogOptions httpLogOptions) { + this.httpLogOptions = httpLogOptions; + return this; + } + + /* + * The client options such as application ID and custom headers to set on a request. + */ + @Generated + private ClientOptions clientOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder clientOptions(ClientOptions clientOptions) { + this.clientOptions = clientOptions; + return this; + } + + /* + * The retry options to configure retry policy for failed requests. + */ + @Generated + private RetryOptions retryOptions; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder retryOptions(RetryOptions retryOptions) { + this.retryOptions = retryOptions; + return this; + } + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder addPolicy(HttpPipelinePolicy customPolicy) { + Objects.requireNonNull(customPolicy, "'customPolicy' cannot be null."); + pipelinePolicies.add(customPolicy); + return this; + } + + /* + * The configuration store that is used during construction of the service client. + */ + @Generated + private Configuration configuration; + + /** + * {@inheritDoc}. + */ + @Generated + @Override + public EnumDiscriminatorBuilder configuration(Configuration configuration) { + this.configuration = configuration; + return this; + } + + /* + * server parameter + */ + @Generated + private String host; + + /** + * Sets server parameter. + * + * @param host the host value. + * @return the EnumDiscriminatorBuilder. + */ + @Generated + public EnumDiscriminatorBuilder host(String host) { + this.host = host; + return this; + } + + /* + * The serializer to serialize an object into a string + */ + @Generated + private SerializerAdapter serializerAdapter; + + /** + * Sets The serializer to serialize an object into a string. + * + * @param serializerAdapter the serializerAdapter value. + * @return the EnumDiscriminatorBuilder. + */ + @Generated + public EnumDiscriminatorBuilder serializerAdapter(SerializerAdapter serializerAdapter) { + this.serializerAdapter = serializerAdapter; + return this; + } + + /* + * The retry policy that will attempt to retry failed requests, if applicable. + */ + @Generated + private RetryPolicy retryPolicy; + + /** + * Sets The retry policy that will attempt to retry failed requests, if applicable. + * + * @param retryPolicy the retryPolicy value. + * @return the EnumDiscriminatorBuilder. + */ + @Generated + public EnumDiscriminatorBuilder retryPolicy(RetryPolicy retryPolicy) { + this.retryPolicy = retryPolicy; + return this; + } + + /** + * Builds an instance of EnumDiscriminator with the provided parameters. + * + * @return an instance of EnumDiscriminator. + */ + @Generated + public EnumDiscriminator buildClient() { + HttpPipeline localPipeline = (pipeline != null) ? pipeline : createHttpPipeline(); + String localHost = (host != null) ? host : ""; + SerializerAdapter localSerializerAdapter + = (serializerAdapter != null) ? serializerAdapter : JacksonAdapter.createDefaultSerializerAdapter(); + EnumDiscriminator client = new EnumDiscriminator(localPipeline, localSerializerAdapter, localHost); + return client; + } + + @Generated + private HttpPipeline createHttpPipeline() { + Configuration buildConfiguration + = (configuration == null) ? Configuration.getGlobalConfiguration() : configuration; + HttpLogOptions localHttpLogOptions = this.httpLogOptions == null ? new HttpLogOptions() : this.httpLogOptions; + ClientOptions localClientOptions = this.clientOptions == null ? new ClientOptions() : this.clientOptions; + List policies = new ArrayList<>(); + String clientName = PROPERTIES.getOrDefault(SDK_NAME, "UnknownName"); + String clientVersion = PROPERTIES.getOrDefault(SDK_VERSION, "UnknownVersion"); + String applicationId = CoreUtils.getApplicationId(localClientOptions, localHttpLogOptions); + policies.add(new UserAgentPolicy(applicationId, clientName, clientVersion, buildConfiguration)); + policies.add(new RequestIdPolicy()); + policies.add(new AddHeadersFromContextPolicy()); + HttpHeaders headers = new HttpHeaders(); + localClientOptions.getHeaders() + .forEach(header -> headers.set(HttpHeaderName.fromString(header.getName()), header.getValue())); + if (headers.getSize() > 0) { + policies.add(new AddHeadersPolicy(headers)); + } + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_CALL) + .forEach(p -> policies.add(p)); + HttpPolicyProviders.addBeforeRetryPolicies(policies); + policies.add(ClientBuilderUtil.validateAndGetRetryPolicy(retryPolicy, retryOptions, new RetryPolicy())); + policies.add(new AddDatePolicy()); + this.pipelinePolicies.stream() + .filter(p -> p.getPipelinePosition() == HttpPipelinePosition.PER_RETRY) + .forEach(p -> policies.add(p)); + HttpPolicyProviders.addAfterRetryPolicies(policies); + policies.add(new HttpLoggingPolicy(localHttpLogOptions)); + HttpPipeline httpPipeline = new HttpPipelineBuilder().policies(policies.toArray(new HttpPipelinePolicy[0])) + .httpClient(httpClient) + .clientOptions(localClientOptions) + .build(); + return httpPipeline; + } +} diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/Dog.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/Dog.java new file mode 100644 index 0000000000..394c0eaa58 --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/Dog.java @@ -0,0 +1,148 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package fixtures.discriminatorsetter.implementation.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonSerializable; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import fixtures.discriminatorsetter.models.Golden; +import java.io.IOException; + +/** + * Test extensible enum type for discriminator. + */ +@Fluent +public class Dog implements JsonSerializable { + /* + * discriminator property + */ + private DogKind kind; + + /* + * Weight of the dog + */ + private int weight; + + /** + * Creates an instance of Dog class. + */ + public Dog() { + this.kind = DogKind.fromString("Dog"); + } + + /** + * Get the kind property: discriminator property. + * + * @return the kind value. + */ + public DogKind getKind() { + return this.kind; + } + + /** + * Set the kind property: discriminator property. + * + * @param kind the kind value to set. + * @return the Dog object itself. + */ + protected Dog setKind(DogKind kind) { + this.kind = kind; + return this; + } + + /** + * Get the weight property: Weight of the dog. + * + * @return the weight value. + */ + public int getWeight() { + return this.weight; + } + + /** + * Set the weight property: Weight of the dog. + * + * @param weight the weight value to set. + * @return the Dog object itself. + */ + public Dog setWeight(int weight) { + this.weight = weight; + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + public void validate() { + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("weight", this.weight); + jsonWriter.writeStringField("kind", this.kind == null ? null : this.kind.toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of Dog from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Dog if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the Dog. + */ + public static Dog fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + String discriminatorValue = null; + try (JsonReader readerToUse = reader.bufferObject()) { + readerToUse.nextToken(); // Prepare for reading + while (readerToUse.nextToken() != JsonToken.END_OBJECT) { + String fieldName = readerToUse.getFieldName(); + readerToUse.nextToken(); + if ("kind".equals(fieldName)) { + discriminatorValue = readerToUse.getString(); + break; + } else { + readerToUse.skipChildren(); + } + } + // Use the discriminator value to determine which subtype should be deserialized. + if ("golden".equals(discriminatorValue)) { + return Golden.fromJson(readerToUse.reset()); + } else { + return fromJsonKnownDiscriminator(readerToUse.reset()); + } + } + }); + } + + static Dog fromJsonKnownDiscriminator(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + Dog deserializedDog = new Dog(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("weight".equals(fieldName)) { + deserializedDog.weight = reader.getInt(); + } else if ("kind".equals(fieldName)) { + deserializedDog.kind = DogKind.fromString(reader.getString()); + } else { + reader.skipChildren(); + } + } + + return deserializedDog; + }); + } +} diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/DogKind.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/DogKind.java new file mode 100644 index 0000000000..ee1d5bc401 --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/DogKind.java @@ -0,0 +1,46 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package fixtures.discriminatorsetter.implementation.models; + +import com.azure.core.util.ExpandableStringEnum; +import java.util.Collection; + +/** + * extensible enum type for discriminator. + */ +public final class DogKind extends ExpandableStringEnum { + /** + * Species golden. + */ + public static final DogKind GOLDEN = fromString("golden"); + + /** + * Creates a new instance of DogKind value. + * + * @deprecated Use the {@link #fromString(String)} factory method. + */ + @Deprecated + public DogKind() { + } + + /** + * Creates or finds a DogKind from its string representation. + * + * @param name a name to look for. + * @return the corresponding DogKind. + */ + public static DogKind fromString(String name) { + return fromString(name, DogKind.class); + } + + /** + * Gets known DogKind values. + * + * @return known DogKind values. + */ + public static Collection values() { + return values(DogKind.class); + } +} diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/package-info.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/package-info.java new file mode 100644 index 0000000000..ef95287a6d --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/implementation/models/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +/** + * Package containing the data models for EnumDiscriminator. + * null. + */ +package fixtures.discriminatorsetter.implementation.models; diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/Golden.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/Golden.java new file mode 100644 index 0000000000..e2baf0cc23 --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/Golden.java @@ -0,0 +1,84 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package fixtures.discriminatorsetter.models; + +import com.azure.core.annotation.Fluent; +import com.azure.json.JsonReader; +import com.azure.json.JsonToken; +import com.azure.json.JsonWriter; +import fixtures.discriminatorsetter.implementation.models.Dog; +import fixtures.discriminatorsetter.implementation.models.DogKind; +import java.io.IOException; + +/** + * Golden dog model. + */ +@Fluent +public final class Golden extends Dog { + /** + * Creates an instance of Golden class. + */ + public Golden() { + setKind(DogKind.GOLDEN); + } + + /** + * {@inheritDoc} + */ + @Override + public Golden setWeight(int weight) { + super.setWeight(weight); + return this; + } + + /** + * Validates the instance. + * + * @throws IllegalArgumentException thrown if the instance is not valid. + */ + @Override + public void validate() { + super.validate(); + } + + /** + * {@inheritDoc} + */ + @Override + public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { + jsonWriter.writeStartObject(); + jsonWriter.writeIntField("weight", getWeight()); + jsonWriter.writeStringField("kind", getKind() == null ? null : getKind().toString()); + return jsonWriter.writeEndObject(); + } + + /** + * Reads an instance of Golden from the JsonReader. + * + * @param jsonReader The JsonReader being read. + * @return An instance of Golden if the JsonReader was pointing to an instance of it, or null if it was pointing to JSON null. + * @throws IllegalStateException If the deserialized JSON object was missing any required properties. + * @throws IOException If an error occurs while reading the Golden. + */ + public static Golden fromJson(JsonReader jsonReader) throws IOException { + return jsonReader.readObject(reader -> { + Golden deserializedGolden = new Golden(); + while (reader.nextToken() != JsonToken.END_OBJECT) { + String fieldName = reader.getFieldName(); + reader.nextToken(); + + if ("weight".equals(fieldName)) { + deserializedGolden.setWeight(reader.getInt()); + } else if ("kind".equals(fieldName)) { + deserializedGolden.setKind(DogKind.fromString(reader.getString())); + } else { + reader.skipChildren(); + } + } + + return deserializedGolden; + }); + } +} diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/package-info.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/package-info.java new file mode 100644 index 0000000000..36208c97aa --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/models/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +/** + * Package containing the data models for EnumDiscriminator. + * null. + */ +package fixtures.discriminatorsetter.models; diff --git a/vanilla-tests/src/main/java/fixtures/discriminatorsetter/package-info.java b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/package-info.java new file mode 100644 index 0000000000..4fe8df24a6 --- /dev/null +++ b/vanilla-tests/src/main/java/fixtures/discriminatorsetter/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +/** + * Package containing the classes for EnumDiscriminator. + * null. + */ +package fixtures.discriminatorsetter; diff --git a/vanilla-tests/src/main/java/fixtures/inheritance/passdiscriminator/models/MetricAlertCriteria.java b/vanilla-tests/src/main/java/fixtures/inheritance/passdiscriminator/models/MetricAlertCriteria.java index fc3ce4f1d0..4556b7463f 100644 --- a/vanilla-tests/src/main/java/fixtures/inheritance/passdiscriminator/models/MetricAlertCriteria.java +++ b/vanilla-tests/src/main/java/fixtures/inheritance/passdiscriminator/models/MetricAlertCriteria.java @@ -66,7 +66,7 @@ public Odatatype getOdataType() { * @param odataType the odataType value to set. * @return the MetricAlertCriteria object itself. */ - MetricAlertCriteria setOdataType(Odatatype odataType) { + protected MetricAlertCriteria setOdataType(Odatatype odataType) { this.odataType = odataType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/DotFish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/DotFish.java index c4aa5aee07..77a038724d 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/DotFish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/DotFish.java @@ -48,7 +48,7 @@ public String getFishType() { * @param fishType the fishType value to set. * @return the DotFish object itself. */ - DotFish setFishType(String fishType) { + protected DotFish setFishType(String fishType) { this.fishType = fishType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/Fish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/Fish.java index fb262222e5..3457d3f2b0 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/Fish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/Fish.java @@ -59,7 +59,7 @@ public String getFishtype() { * @param fishtype the fishtype value to set. * @return the Fish object itself. */ - Fish setFishtype(String fishtype) { + protected Fish setFishtype(String fishtype) { this.fishtype = fishtype; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/MyBaseType.java b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/MyBaseType.java index e7c28b1cac..8eab1a8d3c 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/MyBaseType.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserialization/models/MyBaseType.java @@ -53,7 +53,7 @@ public MyKind getKind() { * @param kind the kind value to set. * @return the MyBaseType object itself. */ - MyBaseType setKind(MyKind kind) { + protected MyBaseType setKind(MyKind kind) { this.kind = kind; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/DotFish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/DotFish.java index 9cdab1aa9b..82a8845838 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/DotFish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/DotFish.java @@ -48,7 +48,7 @@ public String getFishType() { * @param fishType the fishType value to set. * @return the DotFish object itself. */ - DotFish setFishType(String fishType) { + protected DotFish setFishType(String fishType) { this.fishType = fishType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/Fish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/Fish.java index 61f47edea6..db243dbe8f 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/Fish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/Fish.java @@ -62,7 +62,7 @@ public String getFishtype() { * @param fishtype the fishtype value to set. * @return the Fish object itself. */ - Fish setFishtype(String fishtype) { + protected Fish setFishtype(String fishtype) { this.fishtype = fishtype; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/MyBaseType.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/MyBaseType.java index a9b632dab5..13a2d8251a 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/MyBaseType.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationctorargs/models/MyBaseType.java @@ -53,7 +53,7 @@ public MyKind getKind() { * @param kind the kind value to set. * @return the MyBaseType object itself. */ - MyBaseType setKind(MyKind kind) { + protected MyBaseType setKind(MyKind kind) { this.kind = kind; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/DotFish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/DotFish.java index 746c896aaf..e04554c25f 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/DotFish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/DotFish.java @@ -48,7 +48,7 @@ public String getFishType() { * @param fishType the fishType value to set. * @return the DotFish object itself. */ - DotFish setFishType(String fishType) { + protected DotFish setFishType(String fishType) { this.fishType = fishType; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/Fish.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/Fish.java index f99dcc930e..f7f95b0960 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/Fish.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/Fish.java @@ -59,7 +59,7 @@ public String getFishtype() { * @param fishtype the fishtype value to set. * @return the Fish object itself. */ - Fish setFishtype(String fishtype) { + protected Fish setFishtype(String fishtype) { this.fishtype = fishtype; return this; } diff --git a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/MyBaseType.java b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/MyBaseType.java index 5e8de5b877..54073f3cbe 100644 --- a/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/MyBaseType.java +++ b/vanilla-tests/src/main/java/fixtures/streamstyleserializationimmutableoutput/models/MyBaseType.java @@ -53,7 +53,7 @@ public MyKind getKind() { * @param kind the kind value to set. * @return the MyBaseType object itself. */ - MyBaseType setKind(MyKind kind) { + protected MyBaseType setKind(MyKind kind) { this.kind = kind; return this; } From 8e868073ee6134ebfc77b3f568cd1ff25e442511 Mon Sep 17 00:00:00 2001 From: xiaofeicao Date: Thu, 14 Mar 2024 16:25:54 +0800 Subject: [PATCH 4/4] disable mock test --- fluent-tests/Initialize-Tests.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fluent-tests/Initialize-Tests.ps1 b/fluent-tests/Initialize-Tests.ps1 index eeb01f0cab..1d2c563ae4 100644 --- a/fluent-tests/Initialize-Tests.ps1 +++ b/fluent-tests/Initialize-Tests.ps1 @@ -130,7 +130,7 @@ $job = @( "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=https://raw.githubusercontent.com/Azure/azure-rest-api-specs/196886564583ff59186bd0ef44d923120aaf3f78/specification/managednetworkfabric/resource-manager/Microsoft.ManagedNetworkFabric/stable/2023-06-15/NetworkFabrics.json --java.namespace=com.azure.mgmtlitetest.managednetworkfabric", # polymorphic models in different packages - "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=https://github.com/Azure/azure-rest-api-specs/blob/64337ca106a20055b389f9652ea8cf942aa94252/specification/consumption/resource-manager/Microsoft.Consumption/stable/2023-11-01/consumption.json --java.namespace=com.azure.mgmtlitetest.consumption" + "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=https://github.com/Azure/azure-rest-api-specs/blob/64337ca106a20055b389f9652ea8cf942aa94252/specification/consumption/resource-manager/Microsoft.Consumption/stable/2023-11-01/consumption.json --java.namespace=com.azure.mgmtlitetest.consumption --generate-tests=false" # schema clean-up "--version=$AUTOREST_CORE_VERSION $FLUENTLITE_ARGUMENTS --regenerate-pom=false --input-file=./swagger/schema-cleanup.json --java.namespace=com.azure.mgmtlitetest.schemacleanup"