@@ -719,6 +719,8 @@ public Schema normalizeSchema(Schema schema, Set<Schema> visitedSchemas) {
719719 if (skipNormalization (schema , visitedSchemas )) {
720720 return schema ;
721721 }
722+ markSchemaAsVisited (schema , visitedSchemas );
723+
722724 if (ModelUtils .isArraySchema (schema )) { // array
723725 Schema result = normalizeArraySchema (schema );
724726 normalizeSchema (result .getItems (), visitedSchemas );
@@ -774,6 +776,7 @@ public Schema normalizeSchema(Schema schema, Set<Schema> visitedSchemas) {
774776 return schema ;
775777 }
776778
779+
777780 /**
778781 * Check if normalization is needed.
779782 *
@@ -796,11 +799,22 @@ protected boolean skipNormalization(Schema schema, Set<Schema> visitedSchemas) {
796799 if (visitedSchemas .contains (schema )) {
797800 return true ; // skip due to circular reference
798801 } else {
799- visitedSchemas .add (schema );
800802 return false ;
801803 }
802804 }
803805
806+ /**
807+ * Add the schema to the collection of visited schemas.
808+ *
809+ * @param schema schema to add
810+ * @param visitedSchemas current visited schemas
811+ */
812+ protected void markSchemaAsVisited (Schema schema , Set <Schema > visitedSchemas ) {
813+ if (schema != null ) {
814+ visitedSchemas .add (schema );
815+ }
816+ }
817+
804818 protected Schema normalizeArraySchema (Schema schema ) {
805819 Schema result = processNormalize31Spec (schema , new HashSet <>());
806820 return processSetArraytoNullable (result );
0 commit comments