@@ -648,7 +648,7 @@ public CodegenOperation fromOperation(String path, String httpMethod, Operation
648648 }
649649
650650 private void postProcessPolymorphism (final List <ModelMap > allModels ) {
651- final HashMap <String , List <String >> discriminatorsForModel = new HashMap <>();
651+ final HashMap <String , List <CodegenDiscriminator >> discriminatorsForModel = new HashMap <>();
652652
653653 for (final ModelMap mo : allModels ) {
654654 final CodegenModel cm = mo .getModel ();
@@ -672,14 +672,14 @@ private void postProcessPolymorphism(final List<ModelMap> allModels) {
672672
673673 if (cm .discriminator != null ) {
674674 for (final String model : cm .oneOf ) {
675- final List <String > discriminators = discriminatorsForModel .getOrDefault (model , new ArrayList <>());
676- discriminators .add (cm .discriminator . getPropertyName () );
675+ final List <CodegenDiscriminator > discriminators = discriminatorsForModel .getOrDefault (model , new ArrayList <>());
676+ discriminators .add (cm .discriminator );
677677 discriminatorsForModel .put (model , discriminators );
678678 }
679679
680680 for (final String model : cm .anyOf ) {
681- final List <String > discriminators = discriminatorsForModel .getOrDefault (model , new ArrayList <>());
682- discriminators .add (cm .discriminator . getPropertyName () );
681+ final List <CodegenDiscriminator > discriminators = discriminatorsForModel .getOrDefault (model , new ArrayList <>());
682+ discriminators .add (cm .discriminator );
683683 discriminatorsForModel .put (model , discriminators );
684684 }
685685 }
@@ -689,11 +689,11 @@ private void postProcessPolymorphism(final List<ModelMap> allModels) {
689689 for (ModelMap mo : allModels ) {
690690 final CodegenModel cm = mo .getModel ();
691691
692- final List <String > discriminators = discriminatorsForModel .get (cm .getSchemaName ());
692+ final List <CodegenDiscriminator > discriminators = discriminatorsForModel .get (cm .getSchemaName ());
693693 if (discriminators != null ) {
694694 // If the discriminator field is not a defined attribute in the variant structure, create it.
695695 if (!discriminating (discriminators , cm )) {
696- final String discriminator = discriminators .get (0 );
696+ final CodegenDiscriminator discriminator = discriminators .get (0 );
697697
698698 CodegenProperty property = new CodegenProperty ();
699699
@@ -710,11 +710,11 @@ private void postProcessPolymorphism(final List<ModelMap> allModels) {
710710 property .isDiscriminator = true ;
711711
712712 // Attributes based on the discriminator value
713- property .baseName = discriminator ;
714- property .name = discriminator ;
715- property .nameInCamelCase = camelize (discriminator );
713+ property .baseName = discriminator . getPropertyBaseName () ;
714+ property .name = discriminator . getPropertyName () ;
715+ property .nameInCamelCase = camelize (discriminator . getPropertyName () );
716716 property .nameInPascalCase = property .nameInCamelCase .substring (0 , 1 ).toUpperCase (Locale .ROOT ) + property .nameInCamelCase .substring (1 );
717- property .nameInSnakeCase = underscore (discriminator ).toUpperCase (Locale .ROOT );
717+ property .nameInSnakeCase = underscore (discriminator . getPropertyName () ).toUpperCase (Locale .ROOT );
718718 property .getter = String .format (Locale .ROOT , "get%s" , property .nameInPascalCase );
719719 property .setter = String .format (Locale .ROOT , "set%s" , property .nameInPascalCase );
720720 property .defaultValueWithParam = String .format (Locale .ROOT , " = data.%s;" , property .name );
@@ -743,14 +743,14 @@ private void postProcessPolymorphism(final List<ModelMap> allModels) {
743743 }
744744 }
745745
746- private static boolean discriminating (final List <String > discriminatorsForModel , final CodegenModel cm ) {
746+ private static boolean discriminating (final List <CodegenDiscriminator > discriminatorsForModel , final CodegenModel cm ) {
747747 resetDiscriminatorProperty (cm );
748748
749749 // Discriminator will be presented as enum tag -> One and only one tag is allowed
750750 int countString = 0 ;
751751 int countNonString = 0 ;
752752 for (final CodegenProperty var : cm .vars ) {
753- if (discriminatorsForModel .stream ().anyMatch (discriminator -> var .baseName .equals (discriminator ) || var .name .equals (discriminator ))) {
753+ if (discriminatorsForModel .stream ().anyMatch (discriminator -> var .baseName .equals (discriminator . getPropertyBaseName ()) || var .name .equals (discriminator . getPropertyName () ))) {
754754 if (var .isString ) {
755755 var .isDiscriminator = true ;
756756 ++countString ;
0 commit comments