java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1742)
at io.redskap.swagger.brake.core.model.store.SchemaStore.getTransformer(SchemaStore.java:21)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaForRef(SchemaTransformer.java:141)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:80)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:52)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:42)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaAttributes(SchemaTransformer.java:120)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:98)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformComposedSchema(SchemaTransformer.java:72)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:50)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:42)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaAttributes(SchemaTransformer.java:120)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:98)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:52)
at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transform(SchemaTransformer.java:31)
at io.redskap.swagger.brake.core.model.transformer.MediaTypeTransformer.transform(MediaTypeTransformer.java:15)
at io.redskap.swagger.brake.core.model.transformer.RequestBodyTransformer.lambda$transform$1(RequestBodyTransformer.java:23)
at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180)
at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1921)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.redskap.swagger.brake.core.model.transformer.RequestBodyTransformer.transform(RequestBodyTransformer.java:23)
at io.redskap.swagger.brake.core.model.transformer.PathItemTransformer.getRequestBody(PathItemTransformer.java:78)
at io.redskap.swagger.brake.core.model.transformer.PathItemTransformer.transform(PathItemTransformer.java:53)
at io.redskap.swagger.brake.core.model.transformer.PathTransformer.transform(PathTransformer.java:31)
at io.redskap.swagger.brake.core.model.transformer.PathTransformer.lambda$transform$0(PathTransformer.java:27)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1921)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at io.redskap.swagger.brake.core.model.transformer.PathTransformer.transform(PathTransformer.java:27)
at io.redskap.swagger.brake.core.model.transformer.OpenApiTransformer.transform(OpenApiTransformer.java:33)
at io.redskap.swagger.brake.core.model.transformer.OpenApiTransformer.transform(OpenApiTransformer.java:12)
at io.redskap.swagger.brake.runner.Checker.check(Checker.java:30)
at io.redskap.swagger.brake.runner.Runner.run(Runner.java:55)
at io.redskap.swagger.brake.runner.Starter.start(Starter.java:15)
at io.redskap.swagger.brake.cli.Cli.start(Cli.java:34)
at io.redskap.swagger.brake.cli.SwaggerBrakeMain.main(SwaggerBrakeMain.java:16)
For help please use --help
(Unfortunately I am unable to share the swagger files that I was comparing)
I made some informal changes to the source and rebuilt the shadow jar, which worked around the problem above. Patched source file attached if that helps.
SchemaStore.zip
Using version 2.4.0 I get following exception:
java.lang.IllegalStateException: Recursive update at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1742) at io.redskap.swagger.brake.core.model.store.SchemaStore.getTransformer(SchemaStore.java:21) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaForRef(SchemaTransformer.java:141) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:80) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:52) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:42) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaAttributes(SchemaTransformer.java:120) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:98) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformComposedSchema(SchemaTransformer.java:72) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:50) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:42) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.getSchemaAttributes(SchemaTransformer.java:120) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transformSchema(SchemaTransformer.java:98) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.internalTransform(SchemaTransformer.java:52) at io.redskap.swagger.brake.core.model.transformer.SchemaTransformer.transform(SchemaTransformer.java:31) at io.redskap.swagger.brake.core.model.transformer.MediaTypeTransformer.transform(MediaTypeTransformer.java:15) at io.redskap.swagger.brake.core.model.transformer.RequestBodyTransformer.lambda$transform$1(RequestBodyTransformer.java:23) at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:180) at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1921) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.redskap.swagger.brake.core.model.transformer.RequestBodyTransformer.transform(RequestBodyTransformer.java:23) at io.redskap.swagger.brake.core.model.transformer.PathItemTransformer.getRequestBody(PathItemTransformer.java:78) at io.redskap.swagger.brake.core.model.transformer.PathItemTransformer.transform(PathItemTransformer.java:53) at io.redskap.swagger.brake.core.model.transformer.PathTransformer.transform(PathTransformer.java:31) at io.redskap.swagger.brake.core.model.transformer.PathTransformer.lambda$transform$0(PathTransformer.java:27) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1921) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at io.redskap.swagger.brake.core.model.transformer.PathTransformer.transform(PathTransformer.java:27) at io.redskap.swagger.brake.core.model.transformer.OpenApiTransformer.transform(OpenApiTransformer.java:33) at io.redskap.swagger.brake.core.model.transformer.OpenApiTransformer.transform(OpenApiTransformer.java:12) at io.redskap.swagger.brake.runner.Checker.check(Checker.java:30) at io.redskap.swagger.brake.runner.Runner.run(Runner.java:55) at io.redskap.swagger.brake.runner.Starter.start(Starter.java:15) at io.redskap.swagger.brake.cli.Cli.start(Cli.java:34) at io.redskap.swagger.brake.cli.SwaggerBrakeMain.main(SwaggerBrakeMain.java:16) For help please use --help
(Unfortunately I am unable to share the swagger files that I was comparing)