Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: smallrye/smallrye-open-api
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4.0.0-beta1
Choose a base ref
...
head repository: smallrye/smallrye-open-api
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
Loading
Showing with 6,129 additions and 1,536 deletions.
  1. +2 −2 .github/project.yml
  2. +9 −4 .github/workflows/build.yml
  3. +1 −1 .github/workflows/publish-tck.yml
  4. +8 −0 README.adoc
  5. +32 −1 core/pom.xml
  6. +24 −16 core/src/main/java/io/smallrye/openapi/api/OpenApiConfig.java
  7. +20 −0 core/src/main/java/io/smallrye/openapi/api/OpenApiConfigImpl.java
  8. +3 −0 core/src/main/java/io/smallrye/openapi/api/SmallRyeOASConfig.java
  9. +26 −23 core/src/main/java/io/smallrye/openapi/api/SmallRyeOpenAPI.java
  10. +3 −0 core/src/main/java/io/smallrye/openapi/api/constants/KotlinConstants.java
  11. +3 −2 core/src/main/java/io/smallrye/openapi/internal/models/info/package-info.java
  12. +7 −0 core/src/main/java/io/smallrye/openapi/internal/models/media/SchemaSupport.java
  13. +21 −20 core/src/main/java/io/smallrye/openapi/internal/models/media/package-info.java
  14. +3 −2 core/src/main/java/io/smallrye/openapi/internal/models/package-info.java
  15. +124 −0 core/src/main/java/io/smallrye/openapi/internal/support/SimpleTypeTarget.java
  16. +22 −19 core/src/main/java/io/smallrye/openapi/runtime/OpenApiProcessor.java
  17. +1 −16 core/src/main/java/io/smallrye/openapi/runtime/io/IOContext.java
  18. +4 −0 core/src/main/java/io/smallrye/openapi/runtime/io/IoLogging.java
  19. +9 −4 core/src/main/java/io/smallrye/openapi/runtime/io/JacksonJsonIO.java
  20. +5 −0 core/src/main/java/io/smallrye/openapi/runtime/io/JakartaJsonIO.java
  21. +14 −4 core/src/main/java/io/smallrye/openapi/runtime/io/JsonIO.java
  22. +4 −0 core/src/main/java/io/smallrye/openapi/runtime/io/MapModelIO.java
  23. +29 −40 core/src/main/java/io/smallrye/openapi/runtime/io/ModelIO.java
  24. +1 −1 core/src/main/java/io/smallrye/openapi/runtime/io/OpenAPIDefinitionIO.java
  25. +1 −1 core/src/main/java/io/smallrye/openapi/runtime/io/callbacks/CallbackIO.java
  26. +27 −1 core/src/main/java/io/smallrye/openapi/runtime/io/media/ContentIO.java
  27. +1 −1 core/src/main/java/io/smallrye/openapi/runtime/io/media/DiscriminatorIO.java
  28. +1 −25 core/src/main/java/io/smallrye/openapi/runtime/io/media/ExampleObjectIO.java
  29. +1 −1 core/src/main/java/io/smallrye/openapi/runtime/io/media/MediaTypeIO.java
  30. +22 −14 core/src/main/java/io/smallrye/openapi/runtime/io/media/SchemaIO.java
  31. +9 −1 core/src/main/java/io/smallrye/openapi/runtime/io/parameters/ParameterIO.java
  32. +1 −2 core/src/main/java/io/smallrye/openapi/runtime/io/parameters/RequestBodyIO.java
  33. +1 −2 core/src/main/java/io/smallrye/openapi/runtime/io/responses/APIResponseIO.java
  34. +42 −29 core/src/main/java/io/smallrye/openapi/runtime/io/schema/SchemaFactory.java
  35. +3 −0 core/src/main/java/io/smallrye/openapi/runtime/io/servers/ServerIO.java
  36. +60 −1 core/src/main/java/io/smallrye/openapi/runtime/scanner/OpenApiAnnotationScanner.java
  37. +12 −7 core/src/main/java/io/smallrye/openapi/runtime/scanner/OpenApiDataObjectScanner.java
  38. +18 −11 core/src/main/java/io/smallrye/openapi/runtime/scanner/ResourceParameters.java
  39. +36 −28 core/src/main/java/io/smallrye/openapi/runtime/scanner/SchemaRegistry.java
  40. +2 −1 core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/AnnotationTargetProcessor.java
  41. +46 −2 core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/BeanValidationScanner.java
  42. +106 −44 core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/IgnoreResolver.java
  43. +75 −37 core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/TypeProcessor.java
  44. +140 −53 core/src/main/java/io/smallrye/openapi/runtime/scanner/dataobject/TypeResolver.java
  45. +19 −8 core/src/main/java/io/smallrye/openapi/runtime/scanner/processor/JavaSecurityProcessor.java
  46. +8 −0 core/src/main/java/io/smallrye/openapi/runtime/scanner/spi/AbstractAnnotationScanner.java
  47. +344 −296 core/src/main/java/io/smallrye/openapi/runtime/scanner/spi/AbstractParameterProcessor.java
  48. +52 −15 core/src/main/java/io/smallrye/openapi/runtime/scanner/spi/AnnotationScanner.java
  49. +8 −4 core/src/main/java/io/smallrye/openapi/runtime/scanner/spi/AnnotationScannerContext.java
  50. +1 −4 core/src/main/java/io/smallrye/openapi/runtime/util/Annotations.java
  51. +15 −19 core/src/main/java/io/smallrye/openapi/runtime/util/TypeUtil.java
  52. +15 −0 core/src/test/java/io/smallrye/openapi/api/OpenApiConfigImplTest.java
  53. +27 −0 core/src/test/java/io/smallrye/openapi/api/SchemaTest.java
  54. +61 −0 core/src/test/java/io/smallrye/openapi/api/SmallRyeOpenAPIBuilderTest.java
  55. +19 −0 core/src/test/java/io/smallrye/openapi/runtime/io/JacksonJsonIOTest.java
  56. +18 −0 core/src/test/java/io/smallrye/openapi/runtime/io/JakartaJsonIOTest.java
  57. +37 −0 core/src/test/java/io/smallrye/openapi/runtime/io/JsonIOTest.java
  58. +21 −0 core/src/test/java/io/smallrye/openapi/runtime/io/OpenApiParserAndSerializerTest.java
  59. +2 −3 core/src/test/java/io/smallrye/openapi/runtime/io/schema/SchemaFactoryTest.java
  60. +0 −45 core/src/test/java/io/smallrye/openapi/runtime/scanner/IndexScannerTestBase.java
  61. +19 −0 core/src/test/java/io/smallrye/openapi/runtime/scanner/LogCapture.java
  62. +25 −0 core/src/test/java/io/smallrye/openapi/runtime/scanner/SchemaPropertyTest.java
  63. +178 −30 core/src/test/java/io/smallrye/openapi/runtime/scanner/StandaloneSchemaScanTest.java
  64. +53 −5 core/src/test/java/io/smallrye/openapi/runtime/scanner/dataobject/TypeResolverTests.java
  65. +7 −0 core/src/test/java/io/smallrye/openapi/runtime/scanner/spi/AbstractAnnotationScannerTest.java
  66. +0 −1 core/src/test/java/test/io/smallrye/openapi/runtime/scanner/dataobject/AbstractAnimal.java
  67. +9 −0 core/src/test/resources/classloaderjson/META-INF/openapi.json
  68. +10 −0 core/src/test/resources/io/smallrye/openapi/api/config.yaml
  69. +14 −0 core/src/test/resources/io/smallrye/openapi/api/openapi-invalid-types.yaml
  70. +13 −1 core/src/test/resources/io/smallrye/openapi/runtime/io/_everything.json
  71. +7 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/_everything.yaml
  72. +18 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/info30.json
  73. +20 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/info31.json
  74. +11 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-extra-properties.json
  75. +10 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-extra-properties30.json
  76. +11 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-invalid-types.json
  77. +10 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-invalid-types30.json
  78. +12 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-nullable-reference.json
  79. +10 −0 core/src/test/resources/io/smallrye/openapi/runtime/io/schemas-with-nullable-reference30.json
  80. +54 −12 .../test/resources/io/smallrye/openapi/runtime/scanner/components.schemas-jackson-jsonunwrapped.json
  81. +30 −0 ...test/resources/io/smallrye/openapi/runtime/scanner/components.schemas.annotated-parent-field.json
  82. +2 −2 ...rc/test/resources/io/smallrye/openapi/runtime/scanner/components.schemas.array-type-override.json
  83. +34 −0 ...src/test/resources/io/smallrye/openapi/runtime/scanner/components.schemas.example-not-merged.json
  84. +47 −0 ...rc/test/resources/io/smallrye/openapi/runtime/scanner/components.schemas.multi-array-generic.json
  85. +31 −0 ...sources/io/smallrye/openapi/runtime/scanner/components.schemas.non-nested-custom-collections.json
  86. +36 −0 .../src/test/resources/io/smallrye/openapi/runtime/scanner/components.schemas.primitive-formats.json
  87. +31 −0 ...est/resources/io/smallrye/openapi/runtime/scanner/components.schemas.schemaproperty-nullable.json
  88. +3 −3 extension-jaxrs/pom.xml
  89. +39 −31 extension-jaxrs/src/main/java/io/smallrye/openapi/jaxrs/JaxRsAnnotationScanner.java
  90. +16 −15 extension-jaxrs/src/main/java/io/smallrye/openapi/jaxrs/JaxRsParameterProcessor.java
  91. +3 −0 extension-jaxrs/src/main/java/io/smallrye/openapi/jaxrs/RestEasyConstants.java
  92. +28 −0 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/CallbackScanTests.java
  93. +86 −0 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/ExampleParseTests.java
  94. +0 −2 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/ExceptionMapperScanTests.java
  95. +2 −2 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/ExpectationWithRefsTests.java
  96. +91 −0 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/IgnoreTests.java
  97. +95 −1 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/JaxRsAnnotationScannerTest.java
  98. +151 −1 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/JsonViewTests.java
  99. +1 −1 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/KitchenSinkTest.java
  100. +1 −1 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/NestedSchemaReferenceTests.java
  101. +5 −0 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/OperationIdTest.java
  102. +119 −3 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/ParameterScanTests.java
  103. +7 −7 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/SchemaRegistryTests.java
  104. +38 −0 extension-jaxrs/src/test/java/io/smallrye/openapi/runtime/scanner/SubresourceScanTests.java
  105. +51 −0 ...axrs/src/test/java/io/smallrye/openapi/runtime/scanner/dataobject/BeanValidationResourceTest.java
  106. +13 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/ExampleResource1.java
  107. +9 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/ExampleResource2.java
  108. +9 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/GenericResource.java
  109. +4 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/Sub1TestResource.java
  110. +16 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/Sub3TestResource.java
  111. +9 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/jakarta/TestResource.java
  112. +13 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/ExampleResource1.java
  113. +9 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/ExampleResource2.java
  114. +10 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/GenericResource.java
  115. +4 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/Sub1TestResource.java
  116. +16 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/Sub3TestResource.java
  117. +9 −0 extension-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/javax/TestResource.java
  118. +3 −1 ...on-jaxrs/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/jakarta/Salutation.java
  119. +5 −0 ...s/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/jakarta/SalutationEnglish.java
  120. +5 −0 ...s/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/jakarta/SalutationSpanish.java
  121. +53 −0 ...src/test/resources/io/smallrye/openapi/runtime/scanner/callback.reference-component-pathitem.json
  122. +136 −0 ...test/resources/io/smallrye/openapi/runtime/scanner/dataobject/schema.type-target-constraints.json
  123. +72 −0 extension-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/examples.parameters.json
  124. +53 −0 extension-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/examples.responses.json
  125. +99 −0 .../src/test/resources/io/smallrye/openapi/runtime/scanner/ignore.bidirectionalIgnoreProperties.json
  126. +31 −0 ...n-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/params.constraint-composition.json
  127. +39 −0 ...n-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/params.nullable-ref-param-3.0.json
  128. +40 −0 ...n-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/params.nullable-ref-param-3.1.json
  129. +82 −0 .../test/resources/io/smallrye/openapi/runtime/scanner/params.unbound-param-ref-resource-method.json
  130. +26 −0 ...ion-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/resource.inheritance.params.json
  131. +29 −0 ...est/resources/io/smallrye/openapi/runtime/scanner/resource.subresource-generic-type-variable.json
  132. +87 −0 ...xrs/src/test/resources/io/smallrye/openapi/runtime/scanner/resource.subresources-with-params.json
  133. +3 −0 .../io/smallrye/openapi/runtime/scanner/responses.exception-mapper-multiple-response-generation.json
  134. +8 −8 ...-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/special.jsonview-schemas-basic.json
  135. +239 −0 ...n-jaxrs/src/test/resources/io/smallrye/openapi/runtime/scanner/special.jsonview-with-ignored.json
  136. +21 −2 extension-spring/pom.xml
  137. +81 −75 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringAnnotationScanner.java
  138. +4 −0 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringConstants.java
  139. +3 −1 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringLogging.java
  140. +3 −1 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringParameter.java
  141. +84 −61 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringParameterProcessor.java
  142. +53 −0 extension-spring/src/main/java/io/smallrye/openapi/spring/SpringSupport.java
  143. +6 −17 extension-spring/src/test/java/io/smallrye/openapi/runtime/scanner/DeprecatedAnnotationTest.java
  144. +41 −82 extension-spring/src/test/java/io/smallrye/openapi/runtime/scanner/SpringAnnotationScannerTest.java
  145. +0 −26 ...ion-spring/src/test/java/io/smallrye/openapi/runtime/scanner/SpringDataObjectScannerTestBase.java
  146. +13 −0 extension-spring/src/test/java/test/io/smallrye/openapi/runtime/scanner/entities/GreetingParam.java
  147. +13 −2 ...ng/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingDeleteController.java
  148. +14 −2 ...src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingDeleteControllerAlt.java
  149. +19 −0 ...pring/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingGetController.java
  150. +21 −0 ...ng/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingGetControllerAlt.java
  151. +20 −0 ...g/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingGetControllerAlt2.java
  152. +21 −0 ...st/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingParameterobjectController.java
  153. +1 −1 ...ring/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPostController.java
  154. +1 −1 ...g/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPostControllerAlt.java
  155. +42 −0 .../java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPostControllerMultiplePaths.java
  156. +1 −1 ...pring/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPutController.java
  157. +1 −1 ...ng/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPutControllerAlt.java
  158. +44 −0 ...t/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPutControllerMultiplePaths.java
  159. +1 −0 .../smallrye/openapi/runtime/scanner/resources/jakarta/GreetingPostControllerWithServletContext.java
  160. +1 −0 ...o/smallrye/openapi/runtime/scanner/resources/jakarta/GreetingPutControllerWithServletContext.java
  161. +1 −0 ...io/smallrye/openapi/runtime/scanner/resources/javax/GreetingPostControllerWithServletContext.java
  162. +1 −0 .../io/smallrye/openapi/runtime/scanner/resources/javax/GreetingPutControllerWithServletContext.java
  163. +60 −4 ...sources/io/smallrye/openapi/runtime/scanner/resource.testBasicSpringDeleteDefinitionScanning.json
  164. +98 −19 .../resources/io/smallrye/openapi/runtime/scanner/resource.testBasicSpringGetDefinitionScanning.json
  165. +225 −0 ...s/io/smallrye/openapi/runtime/scanner/resource.testMultiplePathsSpringPostDefinitionScanning.json
  166. +289 −0 ...es/io/smallrye/openapi/runtime/scanner/resource.testMultiplePathsSpringPutDefinitionScanning.json
  167. +1 −1 extension-vertx/pom.xml
  168. +11 −12 extension-vertx/src/main/java/io/smallrye/openapi/vertx/VertxAnnotationScanner.java
  169. +3 −1 extension-vertx/src/main/java/io/smallrye/openapi/vertx/VertxLogging.java
  170. +79 −119 extension-vertx/src/main/java/io/smallrye/openapi/vertx/VertxParameterProcessor.java
  171. +6 −17 extension-vertx/src/test/java/io/smallrye/openapi/runtime/scanner/DeprecatedAnnotationTest.java
  172. +11 −30 extension-vertx/src/test/java/io/smallrye/openapi/runtime/scanner/VertxAnnotationScannerTest.java
  173. +0 −26 ...nsion-vertx/src/test/java/io/smallrye/openapi/runtime/scanner/VertxDataObjectScannerTestBase.java
  174. +1 −1 ...n-vertx/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingDeleteRoute.java
  175. +5 −3 ...sion-vertx/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingGetRoute.java
  176. +7 −1 ...ion-vertx/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPostRoute.java
  177. +4 −3 ...sion-vertx/src/test/java/test/io/smallrye/openapi/runtime/scanner/resources/GreetingPutRoute.java
  178. +2 −1 ...t/resources/io/smallrye/openapi/runtime/scanner/resource.testBasicRouteGetDefinitionScanning.json
  179. +33 −0 .../resources/io/smallrye/openapi/runtime/scanner/resource.testBasicRoutePostDefinitionScanning.json
  180. +1 −1 implementation/pom.xml
  181. +1 −1 model/pom.xml
  182. +2 −0 model/src/main/java/io/smallrye/openapi/model/BaseModel.java
  183. +13 −0 model/src/main/java/io/smallrye/openapi/model/DataType.java
  184. +1 −0 model/src/main/java/io/smallrye/openapi/model/OASModelProperty.java
  185. +17 −0 model/src/main/java/io/smallrye/openapi/model/OpenApiVersion.java
  186. +8 −0 model/src/main/java/io/smallrye/openapi/model/PropertyMetadata.java
  187. +17 −7 model/src/main/java/io/smallrye/openapi/model/ReferenceType.java
  188. +5 −0 model/src/test/java/io/smallrye/openapi/model/BaseModelTest.java
  189. +23 −9 pom.xml
  190. +1 −1 release/pom.xml
  191. +8 −1 testsuite/coverage/pom.xml
  192. +42 −10 testsuite/data/pom.xml
  193. +25 −0 testsuite/data/src/main/kotlin/io/smallrye/openapi/testdata/kotlin/KotlinResource.kt
  194. +60 −0 testsuite/data/src/test/java/io/smallrye/openapi/testdata/QuarkusAnnotationScanIT.java
  195. +100 −0 testsuite/data/src/test/java/io/smallrye/openapi/testdata/RecordSchemaTest.java
  196. +21 −0 ...ata/src/test/resources/io/smallrye/openapi/testdata/components.schemas.kotlin-flow-unwrapped.json
  197. +19 −0 testsuite/data/src/test/resources/io/smallrye/openapi/testdata/components.schemas.record.json
  198. +8 −1 testsuite/extra/pom.xml
  199. +10 −3 testsuite/pom.xml
  200. +8 −1 testsuite/tck/pom.xml
  201. +2 −2 tools/gradle-plugin/build.gradle
  202. +14 −4 tools/gradle-plugin/pom.xml
  203. +2 −1 tools/maven-plugin/README.adoc
  204. +3 −3 tools/maven-plugin/pom.xml
  205. +10 −6 tools/maven-plugin/src/main/java/io/smallrye/openapi/mavenplugin/GenerateSchemaMojo.java
  206. +10 −0 tools/maven-plugin/src/test/java/io/smallrye/openapi/mavenplugin/BasicIT.java
  207. +34 −0 ...ugin/src/test/resources-its/io/smallrye/openapi/mavenplugin/BasicIT/versionFromProperties/pom.xml
  208. +3 −0 ...allrye/openapi/mavenplugin/BasicIT/versionFromProperties/src/main/resources/META-INF/openapi.yaml
  209. +1 −0 ...llrye/openapi/mavenplugin/BasicIT/versionFromProperties/src/main/resources/application.properties
  210. +1 −1 tools/model-apt/pom.xml
  211. +51 −18 tools/model-apt/src/main/java/io/smallrye/openapi/model/apt/SmallRyeModelProcessor.java
  212. +1 −1 tools/pom.xml
  213. +12 −6 ui/open-api-ui-forms/package-lock.json
  214. +7 −1 ui/open-api-ui-forms/pom.xml
  215. +4 −4 ui/open-api-ui-forms/src/App.js
  216. +3 −3 ui/open-api-ui/pom.xml
  217. +20 −2 ui/open-api-ui/src/main/java/io/smallrye/openapi/ui/IndexHtmlCreator.java
  218. +2 −0 ui/open-api-ui/src/main/java/io/smallrye/openapi/ui/Option.java
  219. +1 −0 ui/open-api-ui/src/main/resources/template/index.html
  220. +16 −0 ui/open-api-ui/src/test/java/io/smallrye/openapi/ui/IndexCreatorTest.java
  221. +1 −1 ui/pom.xml
4 changes: 2 additions & 2 deletions .github/project.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: SmallRye OpenAPI
release:
current-version: 4.0.0-beta1
next-version: 4.0.0-SNAPSHOT
current-version: 4.0.7
next-version: 4.1.0-SNAPSHOT
13 changes: 9 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -29,11 +29,16 @@ on:

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 17, 21 ]
name: build with jdk ${{matrix.java}}
os:
- ubuntu-latest
- windows-latest
java:
- 17
- 21
runs-on: ${{ matrix.os }}
name: build with jdk ${{matrix.java}} (${{ matrix.os }})

steps:
- uses: actions/checkout@v4
@@ -68,7 +73,7 @@ jobs:

## Attach target directories for safe Sonar scan in separate job
- name: Attach Build Output
if: matrix.java == '17'
if: ${{ matrix.java == '17' && matrix.os == 'ubuntu-latest' }}
uses: actions/upload-artifact@v4
with:
name: target
2 changes: 1 addition & 1 deletion .github/workflows/publish-tck.yml
Original file line number Diff line number Diff line change
@@ -19,7 +19,7 @@ jobs:
#- tck-version: "2.0.1"
#- tck-version: "3.0"
#- tck-version: "3.1.1"
- tck-version: "4.0.1"
- tck-version: "4.0.2"

name: MicroProfile OpenAPI TCK ${{ matrix.tck-version }}
steps:
8 changes: 8 additions & 0 deletions README.adoc
Original file line number Diff line number Diff line change
@@ -87,3 +87,11 @@ Set to `FAIL` to abort in case of duplicate operationIds, set to `WARN` to log w
mp.openapi.extensions.smallrye.maximumStaticFileSize
----
Set this value in order to change the maximum threshold for processed static files, when generating model from them. If not set, it will default to 3 MB.

* Merge Schema Examples
+
[source%nowrap]
----
mp.openapi.extensions.smallrye.merge-schema-examples
----
Set this boolean value to disable the merging of the deprecated `@Schema` `example` property into the `examples` array introduced in OAS 3.1.0. If not set, it will default to `true` the deprecated `example` will be mapped to the `examples` array in the OpenAPI model.
33 changes: 32 additions & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
<parent>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-open-api-parent</artifactId>
<version>4.0.0-beta1</version>
<version>4.1.0-SNAPSHOT</version>
</parent>

<artifactId>smallrye-open-api-core</artifactId>
@@ -58,6 +58,10 @@
<groupId>io.smallrye</groupId>
<artifactId>jandex</artifactId>
</dependency>
<dependency>
<groupId>io.smallrye.common</groupId>
<artifactId>smallrye-common-classloader</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
@@ -93,6 +97,11 @@
<artifactId>smallrye-config</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.smallrye.config</groupId>
<artifactId>smallrye-config-source-yaml</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
@@ -108,6 +117,28 @@

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<annotationProcessorPaths combine.children="append">
<path>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-open-api-model-apt</artifactId>
<version>${project.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
40 changes: 24 additions & 16 deletions core/src/main/java/io/smallrye/openapi/api/OpenApiConfig.java
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
@@ -85,6 +86,9 @@ public static OpenApiConfig fromConfig(Config config) {

<R, T> T getConfigValue(String propertyName, Class<R> type, Function<R, T> converter, Supplier<T> defaultValue);

<R, T extends Collection<R>> T getConfigValues(String propertyName, Class<R> elementType, Function<List<R>, T> converter,
Supplier<T> defaultValue);

<R, T> Map<String, T> getConfigValueMap(String propertyNamePrefix, Class<R> type, Function<R, T> converter);

default <T> T getConfigValue(String propertyName, Class<T> type, Supplier<T> defaultValue) {
@@ -104,23 +108,23 @@ default boolean scanDisable() {
}

default Set<String> scanPackages() {
return getConfigValue(OASConfig.SCAN_PACKAGES, String[].class, this::toSet, Collections::emptySet);
return getConfigValues(OASConfig.SCAN_PACKAGES, String.class, this::toSet, Collections::emptySet);
}

default Set<String> scanClasses() {
return getConfigValue(OASConfig.SCAN_CLASSES, String[].class, this::toSet, Collections::emptySet);
return getConfigValues(OASConfig.SCAN_CLASSES, String.class, this::toSet, Collections::emptySet);
}

default Set<String> scanExcludePackages() {
return getConfigValue(OASConfig.SCAN_EXCLUDE_PACKAGES, String[].class, values -> {
return getConfigValues(OASConfig.SCAN_EXCLUDE_PACKAGES, String.class, values -> {
Set<String> valueSet = toSet(values);
valueSet.addAll(NEVER_SCAN_PACKAGES);
return Collections.unmodifiableSet(valueSet);
}, () -> NEVER_SCAN_PACKAGES);
}

default Set<String> scanExcludeClasses() {
return getConfigValue(OASConfig.SCAN_EXCLUDE_CLASSES, String[].class, values -> {
return getConfigValues(OASConfig.SCAN_EXCLUDE_CLASSES, String.class, values -> {
Set<String> valueSet = toSet(values);
valueSet.addAll(NEVER_SCAN_CLASSES);
return Collections.unmodifiableSet(valueSet);
@@ -132,15 +136,15 @@ default boolean scanBeanValidation() {
}

default List<String> servers() {
return getConfigValue(OASConfig.SERVERS, String[].class, this::toList, Collections::emptyList);
return getConfigValues(OASConfig.SERVERS, String.class, this::toList, Collections::emptyList);
}

default List<String> pathServers(String path) {
return getConfigValue(OASConfig.SERVERS_PATH_PREFIX + path, String[].class, this::toList, Collections::emptyList);
return getConfigValues(OASConfig.SERVERS_PATH_PREFIX + path, String.class, this::toList, Collections::emptyList);
}

default List<String> operationServers(String operationId) {
return getConfigValue(OASConfig.SERVERS_OPERATION_PREFIX + operationId, String[].class, this::toList,
return getConfigValues(OASConfig.SERVERS_OPERATION_PREFIX + operationId, String.class, this::toList,
Collections::emptyList);
}

@@ -151,8 +155,8 @@ default boolean scanDependenciesDisable() {
}

default Set<String> scanDependenciesJars() {
return getConfigValue(SmallRyeOASConfig.SMALLRYE_SCAN_DEPENDENCIES_JARS, String[].class, this::toSet,
() -> getConfigValue(SmallRyeOASConfig.SCAN_DEPENDENCIES_JARS, String[].class, this::toSet,
return getConfigValues(SmallRyeOASConfig.SMALLRYE_SCAN_DEPENDENCIES_JARS, String.class, this::toSet,
() -> getConfigValues(SmallRyeOASConfig.SCAN_DEPENDENCIES_JARS, String.class, this::toSet,
Collections::emptySet));
}

@@ -283,11 +287,11 @@ default void doAllowNakedPathParameter() {
}

default Set<String> getScanProfiles() {
return getConfigValue(SmallRyeOASConfig.SCAN_PROFILES, String[].class, this::toSet, Collections::emptySet);
return getConfigValues(SmallRyeOASConfig.SCAN_PROFILES, String.class, this::toSet, Collections::emptySet);
}

default Set<String> getScanExcludeProfiles() {
return getConfigValue(SmallRyeOASConfig.SCAN_EXCLUDE_PROFILES, String[].class, this::toSet, Collections::emptySet);
return getConfigValues(SmallRyeOASConfig.SCAN_EXCLUDE_PROFILES, String.class, this::toSet, Collections::emptySet);
}

default Map<String, String> getScanResourceClasses() {
@@ -298,6 +302,10 @@ default boolean removeUnusedSchemas() {
return getConfigValue(SmallRyeOASConfig.SMALLRYE_REMOVE_UNUSED_SCHEMAS, Boolean.class, () -> Boolean.FALSE);
}

default boolean mergeSchemaExamples() {
return getConfigValue(SmallRyeOASConfig.SMALLRYE_MERGE_SCHEMA_EXAMPLES, Boolean.class, () -> Boolean.TRUE);
}

default Integer getMaximumStaticFileSize() {
return getConfigValue(SmallRyeOASConfig.MAXIMUM_STATIC_FILE_SIZE, Integer.class,
() -> MAXIMUM_STATIC_FILE_SIZE_DEFAULT);
@@ -309,18 +317,18 @@ default AutoInheritance getAutoInheritance() {
}

default Set<String> getScanCompositionExcludePackages() {
return getConfigValue(SmallRyeOASConfig.SCAN_COMPOSITION_EXCLUDE_PACKAGES, String[].class, this::toSet,
return getConfigValues(SmallRyeOASConfig.SCAN_COMPOSITION_EXCLUDE_PACKAGES, String.class, this::toSet,
() -> DEFAULT_COMPOSITION_EXCLUDE_PACKAGES);
}

default Set<String> toSet(String[] items) {
return Arrays.stream(items)
default Set<String> toSet(List<String> items) {
return items.stream()
.map(String::trim)
.collect(Collectors.toCollection(LinkedHashSet::new));
}

default List<String> toList(String[] items) {
return Arrays.stream(items)
default List<String> toList(List<String> items) {
return items.stream()
.map(String::trim)
.collect(Collectors.toCollection(ArrayList::new));
}
20 changes: 20 additions & 0 deletions core/src/main/java/io/smallrye/openapi/api/OpenApiConfigImpl.java
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
@@ -111,6 +112,25 @@ public <R, T> T getConfigValue(String propertyName, Class<R> type, Function<R, T
return value;
}

@SuppressWarnings("unchecked")
@Override
public <R, T extends Collection<R>> T getConfigValues(String propertyName,
Class<R> elementType,
Function<List<R>, T> converter,
Supplier<T> defaultValue) {
if (cache.containsKey(propertyName)) {
return (T) cache.get(propertyName);
}

T value = getConfig().getOptionalValues(propertyName, elementType)
.map(converter)
.orElseGet(defaultValue);

cache.put(propertyName, value);

return value;
}

@SuppressWarnings("unchecked")
@Override
public <R, T> Map<String, T> getConfigValueMap(String propertyNamePrefix, Class<R> type, Function<R, T> converter) {
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ private SmallRyeOASConfig() {
private static final String SUFFIX_PROPERTY_NAMING_STRATEGY = "property-naming-strategy";
private static final String SUFFIX_SORTED_PROPERTIES_ENABLE = "sorted-properties.enable";
private static final String SUFFIX_REMOVE_UNUSED_SCHEMAS_ENABLE = "remove-unused-schemas.enable";
private static final String SUFFIX_MERGE_SCHEMA_EXAMPLES = "merge-schema-examples";
private static final String SMALLRYE_PREFIX = OASConfig.EXTENSIONS_PREFIX + VENDOR_NAME;

public static final String SMALLRYE_SCAN_DEPENDENCIES_DISABLE = SMALLRYE_PREFIX + SUFFIX_SCAN_DEPENDENCIES_DISABLE;
@@ -49,6 +50,8 @@ private SmallRyeOASConfig() {

public static final String SMALLRYE_REMOVE_UNUSED_SCHEMAS = SMALLRYE_PREFIX + SUFFIX_REMOVE_UNUSED_SCHEMAS_ENABLE;

public static final String SMALLRYE_MERGE_SCHEMA_EXAMPLES = SMALLRYE_PREFIX + SUFFIX_MERGE_SCHEMA_EXAMPLES;

public static final String SCAN_PROFILES = SMALLRYE_PREFIX + "scan.profiles";

public static final String SCAN_EXCLUDE_PROFILES = SMALLRYE_PREFIX + "scan.exclude.profiles";
49 changes: 26 additions & 23 deletions core/src/main/java/io/smallrye/openapi/api/SmallRyeOpenAPI.java
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -31,6 +32,7 @@
import org.jboss.jandex.Indexer;
import org.jboss.jandex.Type;

import io.smallrye.common.classloader.ClassPathUtils;
import io.smallrye.openapi.api.util.MergeUtil;
import io.smallrye.openapi.runtime.OpenApiProcessor;
import io.smallrye.openapi.runtime.OpenApiRuntimeException;
@@ -563,34 +565,35 @@ protected <V, A extends V, O extends V, AB, OB> void buildStaticModel(BuildConte
return ctx.appClassLoader.getResource(loadPath.toString());
});

ctx.staticModel = OpenApiProcessor.loadOpenApiStaticFiles(loadFn)
.stream()
.map(file -> {
try (Reader reader = new InputStreamReader(file.getContent())) {
V dom = ctx.modelIO.jsonIO().fromReader(reader, file.getFormat());
OpenAPI fileModel = ctx.modelIO.readValue(dom);
debugModel("static file", fileModel);
return fileModel;
} catch (IOException e) {
throw new OpenApiRuntimeException("IOException reading " + file.getFormat() + " static file",
e);
}
})
.reduce(MergeUtil::merge)
.orElse(null);
for (URL staticFile : OpenApiProcessor.locateStaticFiles(loadFn)) {
String source = "static file " + staticFile;
try {
Format format = staticFile.toString().endsWith(".json") ? Format.JSON : Format.YAML;
ClassPathUtils.consumeStream(staticFile, stream -> addStaticModel(ctx, stream, source, format));
} catch (IOException e) {
String msg = "IOException reading " + source;
throw new OpenApiRuntimeException(msg, e);
}
}
}

InputStream customFile = customStaticFile.get();

if (customFile != null) {
try (Reader reader = new InputStreamReader(customFile)) {
V dom = ctx.modelIO.jsonIO().fromReader(reader);
OpenAPI customStaticModel = ctx.modelIO.readValue(dom);
debugModel("static file", customStaticModel);
ctx.staticModel = MergeUtil.merge(customStaticModel, ctx.staticModel);
} catch (IOException e) {
throw new OpenApiRuntimeException("IOException reading custom static file", e);
}
addStaticModel(ctx, customFile, "custom static file", Format.YAML);
}
}

private <V, A extends V, O extends V, AB, OB> void addStaticModel(BuildContext<V, A, O, AB, OB> ctx, InputStream stream,
String source, Format fileFormat) {
try (Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8)) {
V dom = ctx.modelIO.jsonIO().fromReader(reader, fileFormat);
OpenAPI fileModel = ctx.modelIO.readValue(dom);
debugModel(source, fileModel);
ctx.staticModel = MergeUtil.merge(fileModel, ctx.staticModel);
} catch (IOException e) {
String msg = "IOException reading " + source;
throw new OpenApiRuntimeException(msg, e);
}
}

Original file line number Diff line number Diff line change
@@ -21,6 +21,9 @@ public class KotlinConstants {
public static final DotName JETBRAINS_NOT_NULL = DotName
.createSimple("org.jetbrains.annotations.NotNull");

public static final DotName FLOW = DotName
.createSimple("kotlinx.coroutines.flow.Flow");

private KotlinConstants() {
}
}
Original file line number Diff line number Diff line change
@@ -10,14 +10,15 @@
@OASModelProperty(name = "contact", type = org.eclipse.microprofile.openapi.models.info.Contact.class),
@OASModelProperty(name = "license", type = org.eclipse.microprofile.openapi.models.info.License.class),
@OASModelProperty(name = "version", type = String.class),
@OASModelProperty(name = "summary", type = String.class),
@OASModelProperty(name = "summary", type = String.class, minVersion = OpenApiVersion.V3_1),
})
@OASModelType(name = "License", constructible = org.eclipse.microprofile.openapi.models.info.License.class, properties = {
@OASModelProperty(name = "name", type = String.class),
@OASModelProperty(name = "url", type = String.class),
@OASModelProperty(name = "identifier", type = String.class),
@OASModelProperty(name = "identifier", type = String.class, minVersion = OpenApiVersion.V3_1),
})
package io.smallrye.openapi.internal.models.info;

import io.smallrye.openapi.model.OASModelProperty;
import io.smallrye.openapi.model.OASModelType;
import io.smallrye.openapi.model.OpenApiVersion;
Loading