@@ -716,32 +716,9 @@ protected boolean isSelfReference(String name, Schema subSchema) {
716716 * @return Schema
717717 */
718718 public Schema normalizeSchema (Schema schema , Set <Schema > visitedSchemas ) {
719- if (schema == null ) {
720- return schema ;
721- }
722-
723- if (StringUtils .isNotEmpty (schema .get$ref ())) {
724- // no need to process $ref
719+ if (skipNormalization (schema , visitedSchemas )) {
725720 return schema ;
726721 }
727-
728- if (visitedSchemas .contains (schema )) {
729- return schema ; // skip due to circular reference
730- } else {
731- visitedSchemas .add (schema );
732- }
733-
734- return doNormalizeSchema (schema , visitedSchemas );
735- }
736-
737- /**
738- * Normalizes a schema that was not visited before
739- *
740- * @param schema Schema
741- * @param visitedSchemas a set of visited schemas
742- * @return Schema
743- */
744- protected Schema doNormalizeSchema (Schema schema , Set <Schema > visitedSchemas ) {
745722 if (ModelUtils .isArraySchema (schema )) { // array
746723 Schema result = normalizeArraySchema (schema );
747724 normalizeSchema (result .getItems (), visitedSchemas );
@@ -794,10 +771,36 @@ protected Schema doNormalizeSchema(Schema schema, Set<Schema> visitedSchemas) {
794771 } else {
795772 throw new RuntimeException ("Unknown schema type found in normalizer: " + schema );
796773 }
797-
798774 return schema ;
799775 }
800776
777+ /**
778+ * Check if normalization is needed.
779+ *
780+ * No normalization needed if the schema is null or is a $ref or already processed.
781+ *
782+ * @param schema Schema
783+ * @param visitedSchemas a set of visited schemas
784+ * @return false if normalization is needed
785+ */
786+ protected boolean skipNormalization (Schema schema , Set <Schema > visitedSchemas ) {
787+ if (schema == null ) {
788+ return true ;
789+ }
790+
791+ if (StringUtils .isNotEmpty (schema .get$ref ())) {
792+ // no need to process $ref
793+ return true ;
794+ }
795+
796+ if (visitedSchemas .contains (schema )) {
797+ return true ; // skip due to circular reference
798+ } else {
799+ visitedSchemas .add (schema );
800+ return false ;
801+ }
802+ }
803+
801804 protected Schema normalizeArraySchema (Schema schema ) {
802805 Schema result = processNormalize31Spec (schema , new HashSet <>());
803806 return processSetArraytoNullable (result );
0 commit comments