Skip to content

Releases: springwolf/springwolf-core

v1.2.0

27 Apr 18:43
Compare
Choose a tag to compare

Springwolf 1.2.0 is out! Thanks to all our contributors!

Besides a couple of bug fixes and small improvements, these are the noteworthy new features:

Kafka & Google PubSub Binding
The Kafka bindings have been updated to spec version 0.5.0 and support for Google PubSub has been updated to also support channel bindings. Take a look at the binding artifacts for details.

Kotlinx Serialization Add-on
The add-on has been extended to support polymorphism and received some smaller bugfixes.

Support for XML attributes
The support for XML examples has been extended to also support XML attributes.

What's Changed

  • (fix) Fixed bug with new SNS Binding by @ctasada in #670
  • (fix) Kotlin serializer for Collection by @ctasada in #671
  • chore(deps): Bump kotlinVersion from 1.9.22 to 1.9.23 by @dependabot in #675
  • (chore) Updated AsyncAPI Kafka binding to version 0.5.0 by @ctasada in #672
  • fix: Fixes to the Kotlinx Module by @ctasada in #680
  • fix: Sort Messages references by @ctasada in #681
  • chore(deps): Bump swaggerVersion from 2.2.20 to 2.2.21 by @dependabot in #676
  • chore(deps): Bump org.springframework.boot from 3.2.3 to 3.2.4 by @dependabot in #674
  • chore(deps): Bump ngx-markdown from 17.1.1 to 17.2.0 in /springwolf-ui by @dependabot in #683
  • fix(core): fix message of validation error for server configuration by @sam0r040 in #685
  • chore(deps): Bump com.google.protobuf:protoc from 3.25.3 to 4.26.1 by @dependabot in #682
  • chore(deps): Bump the npm_and_yarn group in /springwolf-ui with 2 updates by @dependabot in #678
  • chore: Upgrade to Gradle 8.7 by @ctasada in #686
  • Add support for Component classes for spring cloud stream plugin (#684) by @stavshamir in #688
  • (fix): added annotation for google pubsub message binding by @SheheryarAamir in #677
  • feat: Added support for arrays to the Generic Binding by @ctasada in #679
  • chore: Minor Gradle tweaks by @ctasada in #689
  • chore(deps): Bump org.owasp.dependencycheck from 9.0.9 to 9.1.0 by @dependabot in #696
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.11 to 3.0.12 in /springwolf-ui by @dependabot in #694
  • chore(deps): Bump marked from 9.1.6 to 12.0.1 in /springwolf-ui by @dependabot in #693
  • refactor/use asyncapi headers schema by @timonback in #658
  • chore(deps): Bump jakarta.annotation:jakarta.annotation-api from 2.1.1 to 3.0.0 by @dependabot in #697
  • chore(deps): Bump io.awspring.cloud:spring-cloud-aws-dependencies from 3.1.0 to 3.1.1 by @dependabot in #695
  • Test coverage for UI components by @aerfus in #692
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.12 to 3.0.13 in /springwolf-ui by @dependabot in #704
  • chore(deps): Bump org.slf4j:slf4j-api from 2.0.12 to 2.0.13 by @dependabot in #702
  • chore(deps): Bump org.projectlombok:lombok from 1.18.30 to 1.18.32 by @dependabot in #701
  • chore(build): fix output directory for OWASP dependency check plugin by @sam0r040 in #708
  • chore: use parameterized messages instead of string formatting for logging by @sam0r040 in #699
  • fix: Fixes description indenting by @ctasada in #691
  • chore(bindings)!: remove type field from protocol specific binding annotations by @sam0r040 in #709
  • Chore/development improvements by @timonback in #711
  • Support attributes for xml examples by @sam0r040 in #698
  • chore(deps): Bump org.slf4j:slf4j-simple from 2.0.12 to 2.0.13 by @dependabot in #720
  • chore(deps): Bump marked from 12.0.1 to 12.0.2 in /springwolf-ui by @dependabot in #718
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.13 to 3.0.14 in /springwolf-ui by @dependabot in #717
  • chore(deps): Bump ngx-markdown from 17.2.0 to 17.2.1 in /springwolf-ui by @dependabot in #715
  • (chore): Added Spotless support for Kotlin files by @ctasada in #714
  • (feat) Polymorphism support for kotlinx serialization by @ctasada in #713
  • chore(deps-dev): Bump @testing-library/angular from 15.2.0 to 16.0.0 in /springwolf-ui by @dependabot in #716
  • fix(core): format all Date, LocalDate and OffsetDateTimes in iso format by @sam0r040 in #722
  • Feat/handle no payload by @sam0r040 in #687

Full Changelog: v1.1.0...v1.2.0

v1.1.0

23 Mar 20:04
db03b0a
Compare
Choose a tag to compare

Springwolf 1.1.0 is out! Thank you to all contributors.

It contains a couple bug fixes after the big 1.0.0 release last month, next to the following noteworthy new features:

  • @victorlev01 contributed the option to always edit the headers in springwolf-ui, even when no headers have been documented.
  • @SheheryarAamir added support for Google PubSub bindings using annotations, which are included in the new springwolf-googlepubsub-binding artifact
  • @ctasada duplicated the sns and sqs bindings to artifact (springwolf-(sns|sqs)-binding). We consider extract all bindings to own artifacts, which would be included by default in the plugin artifacts. The intention is to offer a more light-weight springwolf experience for users that only want to use annotations without auto-detection of listeners - and thereby avoid the additional dependencies as well
  • @ctasada added another artifact - in beta state - to support the Kotlin @SerialName annotation. This is packaged in springwolf-kotlinx-serialization-model-converter

What's Changed

  • chore(deps): Bump org.springframework.boot from 3.2.2 to 3.2.3 by @dependabot in #638
  • chore(deps): Bump org.mockito:mockito-core from 5.9.0 to 5.11.0 by @dependabot in #637
  • feat(core): improve configuration validation by @timonback in #641
  • fix(core): create correct servers reference by @timonback in #640
  • fix(core): generate correct xml examples for array schemas GH-642 by @sam0r040 in #643
  • docs(core): add info about nexus staging repository to releasing guide by @sam0r040 in #644
  • fix(core): resolve xml nodes from cache by schema name instead of xmlelement name by @sam0r040 in #645
  • chore(deps): Bump jacksonVersion from 2.16.1 to 2.16.2 by @dependabot in #646
  • chore(deps): Bump testcontainersVersion from 1.19.6 to 1.19.7 by @dependabot in #648
  • fix(ui): Make edit header view available by default in ui by @victorlev01 in #649
  • chore(deps-dev): Bump follow-redirects from 1.15.4 to 1.15.6 in /springwolf-ui by @dependabot in #657
  • (feat): Decoupled Binding annotations by @ctasada in #655
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.7 to 3.0.10 in /springwolf-ui by @dependabot in #659
  • chore(deps-dev): Bump webpack-dev-middleware from 5.3.3 to 5.3.4 in /springwolf-ui by @dependabot in #666
  • chore(deps): Bump com.hubspot.jackson:jackson-datatype-protobuf from 0.9.14 to 0.9.15 by @dependabot in #661
  • chore(deps): Bump org.apache.kafka:kafka-streams from 3.6.1 to 3.7.0 by @dependabot in #662
  • chore(deps): Bump org.awaitility:awaitility from 4.2.0 to 4.2.1 by @dependabot in #663
  • docs: add info that examples have to be run with gradle by @timonback in #653
  • (fix): Google pubsub protocol schema setting - cloudsteam by @SheheryarAamir in #652
  • Feat/document headers method level protocol listeners by @timonback in #654
  • Feat/prepare publishing by @timonback in #667
  • [feat] Added Kotlinx Serialization support by @ctasada in #656
  • Add kotlinx-serialization-model-converter artifact by @timonback in #668

New Contributors

Full Changelog: v1.0.0...v1.1.0

v1.0.0

01 Mar 18:05
445af74
Compare
Choose a tag to compare

We are extremely happy to release Springwolf v1.0.0, a major milestone for us 🥳
It contains a lot of refactorings, some simplifications and the update to AsyncAPI spec 3.0 - contributed by @ctasada

AsyncAPI 3.0

The new AsyncAPI 3.0 specification was released at the end of 2023. It includes a new structure, more bindings and resolved the confusion around publish & subscribe.

@ctasada wrote the new springwolf-asyncapi artifact, which is a Java implementation of the spec targeted for Springwolf. With 14.320 additions, it is the largest contribution in the Springwolf history by far!

AsyncApiDocket deprecation

As announced in earlier releases, the AsyncApiDocket is not available for configuration anymore. We implemented your feedback and suggestions to ensure the new method using Spring application properties is as powerful (See discussion in issue: #445 )

Springwolf-ui

Springwolf-ui got a facelifting as well.

  • @aerfus contributed visualizations for number ranges of schemas.
  • @robert-henke contributed a better example highlighting library & the ability to render markdown in the description.
  • Dependencies were updated and testing was improved (including asyncapi/parser to validate the asyncapi.json files of the examples, replacing spectral)

Check out the demo at https://demo.springwolf.dev/springwolf-ui/asyncapi-ui.html

Better examples

The examples can be rendered as yaml and xml (besides json, which stays the default). This can be configured via the contentType attribute of the @AsyncMessage annotation.

Also, polymorphic types (@JsonTypeInfo) which are present as the field discriminator are rendered correctly now, resolving the long outstanding bug #160.

Breaking changes

  1. The package structure was updated, including a change of the package prefix from io.github.stavshamir.springwolf to io.github.springwolf. Most Springwolf annotations can be found in io.github.springwolf.core.asyncapi.annotations
    1. This includes the logging configuration, which is updated to logging.level.io.github.springwolf=DEBUG - in case you use this in your application.
  2. The AsyncApiDocket was removed. See our documentation or example projects on how to use Spring properties.
  3. The default of the configuration setting springwolf.use-fqn was changed to true. To go back to the old behaviour, specify springwolf.use-fqn=false.
  4. The SqsQueueBindings and SqsBindings contain new require values, which must be provided.

Migration guide

  1. Update the Springwolf imports
  2. If you have used the AsyncApiDocket, switch to spring application property configuration
    1. Document your listeners and publishers using the @AsyncListener & @AsyncPublisher annotation.
  3. Review the springwolf.docket.servers application.properties, as the fields are called host and protocol now.
  4. If you use the AsyncApiCustomizer, some fields might be moved due to the new AsyncAPI 3.0 spec and must be adjusted.

What's Changed

  • chore: build website preview when asyncapi.json changes by @timonback in #559
  • chore(deps): Bump org.mockito:mockito-core from 5.8.0 to 5.9.0 by @dependabot in #555
  • Update to AsyncApi 3.0 by @timonback in #507
  • chore(deps): Bump org.mockito:mockito-junit-jupiter from 5.8.0 to 5.10.0 by @dependabot in #564
  • chore(deps): Bump actions/cache from 3 to 4 by @dependabot in #561
  • Feat/adds markdown support by @robert-henke in #549
  • test: add jest based testing to springwolf-ui by @timonback in #565
  • docs: add ctasada as core contributor by @timonback in #568
  • chore(deps): Bump org.assertj:assertj-core from 3.25.1 to 3.25.2 by @dependabot in #576
  • chore(deps): Bump testcontainersVersion from 1.19.3 to 1.19.4 by @dependabot in #574
  • chore(deps): Bump org.springframework.boot from 3.2.1 to 3.2.2 by @dependabot in #573
  • chore(deps-dev): Bump @testing-library/angular from 15.1.0 to 15.2.0 in /springwolf-ui by @dependabot in #572
  • chore(deps): Bump io.confluent:kafka-avro-serializer from 7.5.1 to 7.5.3 by @dependabot in #575
  • chore(gh): replace gradle/gradle-build-action with superceding gradle/actions/setup-gradle action by @sam0r040 in #580
  • fix: handle AsyncApi v3 maximumValue field by @timonback in #569
  • Test coverage for schema range component by @aerfus in #578
  • Chore/skip UI tests for build by @timonback in #571
  • test: Validate asyncapi.json using asyncapi/parser by @timonback in #570
  • Chore/async api 3 clean up by @timonback in #567
  • chore(deps): Bump org.assertj:assertj-core from 3.25.2 to 3.25.3 by @dependabot in #583
  • chore(deps): Bump com.github.node-gradle.node from 7.0.1 to 7.0.2 by @dependabot in #584
  • chore(deps): Bump junitJupiterVersion from 5.10.1 to 5.10.2 by @dependabot in #585
  • chore(deps): Bump org.javamoney:moneta from 1.4.2 to 1.4.4 by @dependabot in #586
  • chore(deps-dev): Bump @types/jest from 29.5.11 to 29.5.12 in /springwolf-ui by @dependabot in #587
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.2 to 3.0.5 in /springwolf-ui by @dependabot in #588
  • (chore): Upgrade to Gradle 8.6 by @ctasada in #591
  • Fixing bugs related to avro model processing: by @raphaeldelio in #582
  • chore(deps): Bump net.javacrumbs.json-unit:json-unit-assertj from 3.2.2 to 3.2.4 by @dependabot in #598
  • chore(deps): Bump testcontainersVersion from 1.19.4 to 1.19.5 by @dependabot in #595
  • chore(deps-dev): Bump jest-preset-angular from 14.0.0 to 14.0.2 in /springwolf-ui by @dependabot in #594
  • chore(deps): Bump com.networknt:json-schema-validator from 1.1.0 to 1.3.2 by @dependabot in #597
  • chore(deps): Bump io.confluent:kafka-avro-serializer from 7.5.3 to 7.6.0 by @dependabot in #596
  • feat(core): build allOf example with all available fields by @timonback in #599
  • Add discriminator field support + better integration tests in core by @timonback in #600
  • chore(deps): Bump com.google.protobuf from 0.8.17 to 0.9.4 by @dependabot in #556
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.5 to 3.0.6 in /springwolf-ui by @dependabot in #608
  • chore(deps-dev): Bump jest-preset-angular from 14.0.2 to 14.0.3 in /springwolf-ui by @dependabot in #607
  • chore(deps): Bump com.google.protobuf:protoc from 3.25.2 to 3.25.3 by @dependabot in #604
  • chore(deps): Bump com.google.protobuf:protobuf-java from 3.25.2 to 3.25.3 by @dependabot in #601
  • chore(deps): Bump zone.js from 0.14.3 to 0.14.4 in /springwolf-ui by @dependabot in #602
  • chore(deps): Bump org.slf4j:slf4j-api from 2.0.11 to 2.0.12 by @dependabot in #603
  • chore(deps-dev): Bump ip from 2.0.0 to 2.0.1 in /springwolf-ui by @dependabot in #610
  • chore(deps): bump angular to 17.2.1 by @timonback in #612
  • chore: prepare 1.0.0 release by @timonback in #611
  • Refactor ExampleJsonGenerator and Support XML Examples by @sam0r040 in #581
  • feat(core)!: change setting use-fqn default to true by @timonback in #592
  • refactor(core): move everything in springwolf core to io.github.sprin… by @sam0r040 in #614
  • chore(deps): Bump io.confluent:kafka-protobuf-serializer from 7.5.3 to 7.6.0 by @dependabot in #620
  • chore(deps-dev): Bump @asyncapi/parser from 3.0.6 to 3.0.7 in /springwolf-ui by @dependabot in #621
  • chore(deps): Bump testcontainersVersion from 1.19.5 to 1.19.6 by @dependabot in https://gi...
Read more

v0.18.0

20 Jan 18:18
6bf0f5b
Compare
Choose a tag to compare

v0.18.0 has been released, including new features and fixes. Our focus has been on refactorings and we are working hard to upgrade to AsyncAPI 3.0 in the next release - which will include breaking changes.

Avro and Protobuf support

We improved support for Avro and Protobuf by removing extraneous fields related to the wire format.
At the same time, our kafka demo application show cases this, including the ability to consume and produce messages - all in one application. See CustomSpringwolfKafkaProducer for configuration.

Document also final classes (like String)

One issue from the beginning was the inability to enhance documentation on final classes as the @Schema annotation could not be attached. Now, by defining an envelope class and marking the property with @AsyncApiPayload, also final classes can be document. See the StringConsumer for more details.

Detect channels defined via bean configuration

Not everyone is using @Component or related annotations to mark classes for Spring. Now, Springwolf does also detect marked listener and publisher methods in classes, which are instantiated as Spring beans via configuration classes.

What's Changed

  • chore(deps): Bump com.bmuschko.docker-spring-boot-application from 9.3.7 to 9.4.0 by @dependabot in #488
  • chore(deps): Bump actions/setup-java from 3 to 4 by @dependabot in #487
  • chore(deps): Bump org.mockito:mockito-junit-jupiter from 5.7.0 to 5.8.0 by @dependabot in #491
  • chore(deps): Bump com.diffplug.spotless from 6.22.0 to 6.23.3 by @dependabot in #489
  • chore(deps): Bump org.mockito:mockito-core from 5.7.0 to 5.8.0 by @dependabot in #490
  • Refactor/annotation scanner to composition by @timonback in #483
  • Feat/detect channels defined via bean configuration by @timonback in #486
  • chore(deps): Bump org.owasp.dependencycheck from 8.4.3 to 9.0.2 by @dependabot in #492
  • chore(deps): Bump io.awspring.cloud:spring-cloud-aws-dependencies from 3.0.3 to 3.1.0 by @dependabot in #495
  • chore(deps): Bump org.owasp.dependencycheck from 9.0.2 to 9.0.4 by @dependabot in #496
  • chore(deps): Bump org.apache.kafka:kafka-clients from 3.6.0 to 3.6.1 by @dependabot in #499
  • chore(deps): Bump org.apache.kafka:kafka-streams from 3.6.0 to 3.6.1 by @dependabot in #497
  • chore(deps): Bump com.networknt:json-schema-validator from 1.0.87 to 1.0.88 by @dependabot in #498
  • chore: simplify schemas service by @timonback in #500
  • Refactor/change async annotations scanner to composition by @timonback in #502
  • feat: Added AsyncAPI v3 internal implementation by @ctasada in #501
  • chore(deps): Bump github/codeql-action from 2 to 3 by @dependabot in #504
  • chore(deps): Bump org.owasp.dependencycheck from 9.0.4 to 9.0.7 by @dependabot in #505
  • chore(deps): Bump com.networknt:json-schema-validator from 1.0.88 to 1.1.0 by @dependabot in #506
  • doc: Minor improvements to the AsyncAPI module README by @ctasada in #508
  • chore: Upgrade to Gradle 8.5 by @ctasada in #509
  • chore: update README.md by @timonback in #482
  • chore: Improved AsyncAPI interface by @ctasada in #511
  • chore(deps): Bump org.springframework.boot from 3.2.0 to 3.2.1 by @dependabot in #514
  • chore(deps): Bump jacksonVersion from 2.16.0 to 2.16.1 by @dependabot in #513
  • chore(deps): Bump swaggerVersion from 2.2.19 to 2.2.20 by @dependabot in #512
  • chore: Improved AsyncAPI interface by @ctasada in #515
  • chore(deps): Bump org.slf4j:slf4j-api from 2.0.9 to 2.0.10 by @dependabot in #522
  • chore(deps): Bump org.assertj:assertj-core from 3.24.2 to 3.25.0 by @dependabot in #521
  • fix(core): handle meta annotations using spring @AliasFor by @timonback in #519
  • feat(kafka): prepare to use different kafka templates per topic durin… by @timonback in #518
  • chore: remove deprecated asyncapidocket bean by @timonback in #524
  • feat: Remove avro fields from schema by @timonback in #503
  • feat(core): add Optional to extractable classes by @timonback in #525
  • Demonstrate protobuf in kafka example by @timonback in #526
  • Feat/allow to document primitive data types (GH-377) by @timonback in #520
  • chore: remove spectral linting in gh action by @timonback in #528
  • feat(ui): better handling when binding is missing by @timonback in #529
  • chore(deps): Bump org.assertj:assertj-core from 3.25.0 to 3.25.1 by @dependabot in #530
  • chore(deps): Bump org.slf4j:slf4j-api from 2.0.10 to 2.0.11 by @dependabot in #531
  • chore(deps-dev): Bump follow-redirects from 1.15.3 to 1.15.4 in /springwolf-ui by @dependabot in #535
  • chore: disable owasp nodejs checking by @timonback in #537
  • chore(deps): Bump zone.js from 0.14.2 to 0.14.3 in /springwolf-ui by @dependabot in #548
  • chore(deps): Bump io.confluent:kafka-protobuf-serializer from 7.5.1 to 7.5.3 by @dependabot in #547
  • chore(deps): Bump com.google.protobuf:protobuf-java from 3.25.1 to 3.25.2 by @dependabot in #545
  • chore(deps): Bump com.google.protobuf:protoc from 3.21.1 to 3.25.2 by @dependabot in #544
  • chore(deps): Bump com.diffplug.spotless from 6.23.3 to 6.24.0 by @dependabot in #546
  • Revert "chore: remove deprecated asyncapidocket bean (#524)" by @timonback in #536
  • chore(deps): Bump org.owasp.dependencycheck from 9.0.7 to 9.0.9 by @dependabot in #551
  • Refactor/improve example schema generator by @timonback in #552

Full Changelog: v0.17.0...v0.18.0

v0.17.0

24 Nov 19:57
Compare
Choose a tag to compare

v0.17.0 has been released with two new artifacts and many smaller improvements.

Thank you for your feedback on the AsyncApiDocket deprecation (#445). A couple improvements are included in this release while we try - with your help - to address the remaining ones.

Users of the kafka plugin will have to update to Spring Boot 3.2. due to a change in an underlying library.

JMS Plugin

Big Shout-out to @krzysztofxkwiecien for creating a new plugin to natively detect the @JmsListener along the AsyncAPI JMS binding.

json-schema Add-on

Next to the AsyncAPI schema, which is very similar to the OpenAPI schema, json-schema is also commonly used in applications.
The newly added add-on translates the detected AsyncAPI schema to json-schema schema.

Want to try it? Just add the add-on. Everything else is handled by the library. More details.

Support for multiple brokers / servers

In advanced use-cases, an application is connected to multiple message brokers. How to indicate which broker a listener belongs to?
Specify the servers property of the AsyncListener / AsyncPublisher annotation.

Payload extractor (beta)

Springwolf tries to extract the payload of listeners and publishers. Not all methods pass in the type directly, and instead it can be wrapped like List<Message<String>> where the actual payload is String.
In earlier version, the classes like List were hard-coded to be extracted. Now, the classes to extract can be specified per configuration - to also support custom generic classes. More details will follow on springwolf.dev.

Please note that we release this in beta (we may completely change how this is configured) and are happy to listen to your feedback.

What's Changed

  • chore(deps): Bump com.bmuschko.docker-spring-boot-application from 9.3.4 to 9.3.6 by @dependabot in #428
  • feat(kafka): demonstrate cloud event headers in example by @timonback in #426
  • Refactor: Remove publishing code duplication by @timonback in #425
  • chore(deps): Bump org.mockito:mockito-junit-jupiter from 5.6.0 to 5.7.0 by @dependabot in #437
  • chore(deps): Bump io.awspring.cloud:spring-cloud-aws-dependencies from 3.0.2 to 3.0.3 by @dependabot in #438
  • chore(deps): Bump junitJupiterVersion from 5.10.0 to 5.10.1 by @dependabot in #440
  • chore(deps): Bump org.mockito:mockito-core from 5.6.0 to 5.7.0 by @dependabot in #439
  • fix: Improved error message by @ctasada in #436
  • chore(amqp): Align example producer by @timonback in #429
  • Docs/update contributors by @timonback in #424
  • support channel server assignments by @tvahrst in #264
  • Defer fail-fast initialization to ApplicationReadyEvent by @tvahrst in #431
  • fix: Minor fix with SQS Message Binding by @ctasada in #435
  • chore: Upgrade to Gradle 8.4 by @ctasada in #442
  • chore(deps): Bump swaggerVersion from 2.2.18 to 2.2.19 by @dependabot in #452
  • chore(deps): Bump com.bmuschko.docker-spring-boot-application from 9.3.6 to 9.3.7 by @dependabot in #453
  • chore(deps): Bump io.spring.dependency-management from 1.1.3 to 1.1.4 by @dependabot in #454
  • add gh action timeout of 10m by @timonback in #461
  • chore: update to angular 17 by @timonback in #444
  • test(core): use wrapper class around generics (i.e. extends ArrayList) by @timonback in #451
  • feat(core): handle multiple payloads in methodLevelListener by @timonback in #450
  • chore(deps): Bump actions/github-script from 6 to 7 by @dependabot in #455
  • Create json-schema Springwolf add-on by @timonback in #447
  • feat: ignore listeners methods introduced by java generic type erasure by @timonback in #463
  • Chore/align cloudstream example by @timonback in #464
  • test: introduce systemTest target by @timonback in #465
  • chore(deps): Bump org.owasp.dependencycheck from 8.4.2 to 8.4.3 by @dependabot in #467
  • chore(deps): Bump jacksonVersion from 2.15.3 to 2.16.0 by @dependabot in #469
  • feat(jms): JMS support by @krzysztofxkwiecien in #432
  • chore: switch examples to application properties configuration by @timonback in #466
  • chore(deps): Bump testcontainersVersion from 1.19.1 to 1.19.3 by @dependabot in #477
  • chore(deps): Bump org.apache.commons:commons-lang3 from 3.13.0 to 3.14.0 by @dependabot in #479
  • chore(deps): Bump org.springframework.boot from 3.1.5 to 3.2.0 by @dependabot in #481
  • feat: Add users of Springwolf to README.md by @timonback in #476
  • feat: interceptor filter pattern for serialization/deserialization common cases such as Message and KStream by @SheheryarAamir in #441
  • Feat/process meta annotations by @timonback in #475
  • feat(core): add library name to info object extension field by @timonback in #430

New Contributors

Full Changelog: v0.16.0...v0.17.0

v0.16.0

27 Oct 17:35
Compare
Choose a tag to compare

We are happy to announce another release thanks to many changes made by our contributors.
This release marks a milestone for Springwolf, as we just achieved 200 stargazers on GitHub.

Deprecated AsyncApiDocket

A while ago we introduced configuration via Spring properties. We view this as a more powerful and natural way of configuring applications in the SpringBoot ecosystem. In last couple of releases we focused on this new way of configuring Springwolf and maintaining the old way of configuring the AsyncApiDocket has become cumbersome.

Check the Quickstart to see how you can migrate.

Fully qualified schema names

Using springwolf.use-fqn=true, schema names will be generated using the fully qualified class name. This is deactivated due to backward compatibility by default, but is required to continue to use the publishing functionality.

SNS Plugin

We added a new Plugin to support documentation for producers that are using the SNS protocol.

AsyncGenericBinding Annotation

Because Springwolf does not support all binding properties, the generic-binding add-on was created. It allows to add all properties without validation according to the AsyncApi specification.

Behind the scenes

Special thanks to @tvahrst for transforming Springwolf into a more modern Spring Boot library:

  • Instead of relying on classpath scanning, Springwolf is now using Spring Boot Auto-configuration
  • AsyncApi info-extensions are now supported by using Spring properties
  • Springwolf beans are now only created if no custom implementations are present in the spring context (@ConditonalOnMissingBean)
  • Springwolf is now caching the Spring properties AsyncApiDocket instead of re-creating it

What's Changed

  • Revert "chore(deps): Bump snakeyaml and kafka" by @timonback in #384
  • Replaced the StringBuilder for generating JSON by @Sakshi-75 in #385
  • chore(deps): Bump testcontainersVersion from 1.19.0 to 1.19.1 by @dependabot in #388
  • chore(deps): Bump com.diffplug.spotless from 6.21.0 to 6.22.0 by @dependabot in #389
  • chore(deps): Bump com.bmuschko.docker-spring-boot-application from 9.3.3 to 9.3.4 by @dependabot in #390
  • Chore/gh matrix builds by @timonback in #383
  • Feature/replace componentscan by @tvahrst in #386
  • Add AWS SNS Plugin by @ctasada in #392
  • feat(core): add AsyncGenericBinding by @timonback in #370
  • test(core): use autoconfiguration instead of manually defined context… by @sam0r040 in #404
  • chore(deps): Bump swaggerVersion from 2.2.16 to 2.2.17 by @dependabot in #396
  • chore(deps): Bump jacksonVersion from 2.15.2 to 2.15.3 by @dependabot in #397
  • chore(deps): Bump org.mockito:mockito-core from 5.5.0 to 5.6.0 by @dependabot in #398
  • chore(deps): Bump org.apache.kafka:kafka-streams from 3.5.1 to 3.6.0 by @dependabot in #399
  • chore(core): Add gradle unitTest target to fast test execution by @timonback in #402
  • chore: add havingValue to auto configurations by @timonback in #403
  • fix(generic-binding): fix autoconfiguration by @sam0r040 in #405
  • chore(deps): Bump org.apache.kafka:kafka-clients from 3.5.1 to 3.6.0 by @dependabot in #400
  • chore(deps): Bump org.mockito:mockito-junit-jupiter from 5.5.0 to 5.6.0 by @dependabot in #408
  • chore(deps): Bump org.springdoc.openapi-gradle-plugin from 1.7.0 to 1.8.0 by @dependabot in #407
  • chore(deps): Bump com.github.node-gradle.node from 7.0.0 to 7.0.1 by @dependabot in #406
  • chore(deps-dev): Bump @babel/traverse from 7.22.10 to 7.23.2 in /springwolf-ui by @dependabot in #414
  • Feature/rewrite example json generator by @dipeshsingh253 in #394
  • chore(deps): Bump org.owasp.dependencycheck from 8.4.0 to 8.4.2 by @dependabot in #417
  • chore(deps): Bump swaggerVersion from 2.2.17 to 2.2.18 by @dependabot in #419
  • chore(deps): Bump org.springframework.boot from 3.1.4 to 3.1.5 by @dependabot in #418
  • fix: updated CloudStreamFunctionChannelsScanner scan to merge channel by @SheheryarAamir in #416
  • add @ConditionalOnMissingBean by @tvahrst in #413
  • Feature/cache environment based docket by @timonback in #421
  • chore(core): deprecated AsyncApiDocket bean by @timonback in #422
  • Support info extensions via environment by @sam0r040 in #423
  • feat(core): add configuration option to use fully qualified names in schemas by @sam0r040 in #393
  • Refactor/avoid user controlled input by @timonback in #381

New Contributors

Full Changelog: v0.15.1...v0.16.0

v0.15.1

29 Sep 16:28
Compare
Choose a tag to compare

We are happy to announce another release thanks to many changes made by our contributors.

(releasing 0.15.0 failed. Re-releasing as 0.15.1)

Inflector

We finally removed swagger-inflector dependency after successfully replacing it in the last releases. This resolves multiple dependency issues with old javax imports and duplicate swagger-... libraries.

Actuator

Now, it is possible to expose the /springwolf/docs as part of Spring Actuators. This removes the endpoint from the normal application and instead moves it to the internals. It must be enabled, more details on the website.

ObjectMapper

Previously, we created new Objectmappers statically to publish messages from the ui. To resolve #357 , the spring managed ObjectMapper is injected. This requires an ObjectMapper bean, which is usually created by Spring automatically. When you encounter a NoSuchBeanException, you can create one manually with:

@Bean
public ObjectMapper objectMapperBean() {
  return new ObjectMapper();
}

What's Changed

  • chore(deps): Bump org.slf4j:slf4j-api from 2.0.7 to 2.0.9 by @dependabot in #345
  • chore(deps): Bump io.awspring.cloud:spring-cloud-aws-dependencies from 3.0.1 to 3.0.2 by @dependabot in #344
  • chore(deps): Bump com.diffplug.spotless from 6.20.0 to 6.21.0 by @dependabot in #346
  • chore(deps): Bump actions/checkout from 3 to 4 by @dependabot in #343
  • chore(deps-dev): Bump @types/node from 18.17.12 to 18.17.14 in /springwolf-ui by @dependabot in #347
  • chore(deps-dev): Bump @types/node from 18.17.14 to 18.17.15 in /springwolf-ui by @dependabot in #354
  • chore(deps): Bump zone.js from 0.13.1 to 0.13.2 in /springwolf-ui by @dependabot in #353
  • chore(deps-dev): Bump @types/node from 18.17.15 to 18.17.16 in /springwolf-ui by @dependabot in #358
  • Add support for RabbitListener.queuesToDeclare by @pdalfarr in #352
  • Unify spotless by @ctasada in #355
  • chore(deps): Bump zone.js from 0.13.1 to 0.13.3 in /springwolf-ui by @dependabot in #359
  • Update README.md by @timonback in #360
  • chore(deps): Bump swaggerVersion from 2.2.15 to 2.2.16 by @dependabot in #362
  • chore(deps-dev): Bump @types/node from 18.17.16 to 18.17.17 in /springwolf-ui by @dependabot in #363
  • feat(core): add logging for active controllers by @timonback in #349
  • chore(deps): remove swagger-inflector by @timonback in #350
  • chore(deps): Bump com.bmuschko.docker-spring-boot-application from 9.3.2 to 9.3.3 by @dependabot in #372
  • chore(deps): Bump org.projectlombok:lombok from 1.18.28 to 1.18.30 by @dependabot in #373
  • chore(deps): Bump org.springframework.boot from 3.1.3 to 3.1.4 by @dependabot in #374
  • feat(core): avoid task executor for initMode=background (GH-356) by @timonback in #380
  • feat(plugin): autowire objectmapper (GH-357) by @timonback in #379
  • chore(deps): Bump snakeyaml and kafka by @timonback in #367
  • feat(core): add option to expose docs as part of spring actuator endp… by @sam0r040 in #351
  • chore(deps-dev): Bump @types/node from 18.17.17 to 18.18.0 in /springwolf-ui by @dependabot in #375
  • Chore/license header in files by @timonback in #321
  • fix(sqs): add SqsMessageBindingProcessor by @timonback in #382

New Contributors

Full Changelog: v0.14.0...v0.15.0

v0.14.0

01 Sep 20:07
Compare
Choose a tag to compare

We are happy to announce another release thanks to many changes made by our contributors.

ExampleJsonGenerator fixed

The ExampleJsonGenerator introduced in the last release included some bugs, which we have addressed. Thank you for the feedback and test cases that we have added as well. If you find further issue, please continue to report them.
We decided to continue to stick with swagger-inflector as a fallback for this release, but plan to remove it in the next release.

@ConditionalOnProperty support

@jmwestbe added in #340 correct handling for @ConditionalOnProperty annotations. Springwolf does respect whether methods annotated with ...Listeners are actually activated now.

AWS SQS

We expanded our range of supported protocol to AWS SQS. Add the springwolf-sqs plugin to benefit from auto-detection of @SqsListener or use @AsyncPublisher with @SqsAsyncOperationBinding.

See the example for more details.

What's Changed

  • chore(deps-dev): bump @types/node from 18.17.1 to 18.17.3 in /springwolf-ui by @dependabot in #318
  • chore(deps): bump com.bmuschko.docker-spring-boot-application from 9.3.1 to 9.3.2 by @dependabot in #319
  • chore: Bump to angular 16.2 by @timonback in #320
  • GH-134: fix: Handle NPE in ExampleJsonGenerator by @timonback in #316
  • chore(deps): bump io.spring.dependency-management from 1.1.2 to 1.1.3 by @dependabot in #324
  • chore(deps-dev): bump @types/node from 18.17.3 to 18.17.5 in /springwolf-ui by @dependabot in #323
  • chore(deps-dev): bump @types/node from 18.17.5 to 18.17.6 in /springwolf-ui by @dependabot in #327
  • chore(deps): bump com.github.node-gradle.node from 5.0.0 to 7.0.0 by @dependabot in #328
  • chore(deps): bump testcontainersVersion from 1.18.3 to 1.19.0 by @dependabot in #329
  • chore(deps): bump org.springdoc.openapi-gradle-plugin from 1.6.0 to 1.7.0 by @dependabot in #330
  • chore(deps): bump org.owasp.dependencycheck from 8.3.1 to 8.4.0 by @dependabot in #331
  • chore(deps): bump org.mockito:mockito-core from 5.4.0 to 5.5.0 by @dependabot in #334
  • chore(deps-dev): bump @types/node from 18.17.6 to 18.17.12 in /springwolf-ui by @dependabot in #338
  • chore(deps): bump org.mockito:mockito-junit-jupiter from 5.4.0 to 5.5.0 by @dependabot in #336
  • chore: Generate examples for map by @timonback in #326
  • feat: Added an @AsyncOperationBinding annotation to simplify the creation of new operation bindings by @ctasada in #296
  • Support @conditional: Add environment to AbstractAnnotatedClassScanner by @jmwestbe in #340
  • chore(deps): bump org.springframework.boot from 3.1.2 to 3.1.3 by @dependabot in #335
  • Feat/amqp handle routing key by @timonback in #317
  • Add AWS SQS Plugin by @timonback in #333

New Contributors

Full Changelog: v0.13.0...v0.14.0

v0.13.0

28 Jul 14:25
Compare
Choose a tag to compare

We are happy announce another release thanks to many changes by our contributors.

One version for all artifacts

To avoid confusion for our users and to reduce complexity in their dependency management, we aligned all artifacts to be release together and have the same version.

Please be aware that some artifacts in this release might skip several minor versions.

Own implementation for generating example values

Until now, Springwolf was using an implementation from swagger-inflector to generate example values. Unfortunately swagger-inflector is rarely getting security updates. Therefore we decided to remove the dependency from Springwolf and replace its functionality with our own implementation.

We decided to deprecate the usage of swagger-inflector for generating example values for this release. Please create a new issue if you have any problems or unexpected output. In the meantime you can set Springwolf to continue to use the old behavior by setting springwolf.example-generator=swagger-inflector-json.

Please be aware that we plan to remove the old behavior with the next release.

Support for lazy generation

By default Springwolf loads during application startup, which can slow down the startup of large applications. It is now possible to defer the initialization of Springwolf until the application is ready. Check the documentation for the property springwolf.init-mode for further information.

Customizing of the AsyncAPI document

In case Springwolf does not produce the AsyncAPI document you need or expect, it is now possible to customize it yourself. Refer to the documentation for further details.

What's Changed

  • docs: Describe how to use snapshot builds with maven by @timonback in #245
  • chore(deps): Bump to node 18.16.1 by @timonback in #247
  • build: fixed compile warning by @ctasada in #260
  • GH-242: chore: Reduce jackson dependency to single one by @timonback in #243
  • chore(deps): bump org.owasp.dependencycheck from 8.2.1 to 8.3.1 by @dependabot in #251
  • chore(deps): bump ngx-highlightjs from 9.0.0 to 10.0.0 in /springwolf-ui by @dependabot in #252
  • chore(deps): bump jacksonCoreVersion from 2.15.0 to 2.15.2 by @dependabot in #262
  • chore(deps): bump swaggerCoreVersion from 2.2.13 to 2.2.14 by @dependabot in #261
  • chore: Remove code for old java version by @timonback in #239
  • feat: Welcome first time contributors by @timonback in #246
  • chore(deps): bump org.apache.kafka:kafka-clients from 3.4.0 to 3.5.0 by @dependabot in #275
  • chore(deps): bump org.apache.kafka:kafka-streams from 3.4.0 to 3.5.0 by @dependabot in #273
  • chore(deps): bump org.mockito:mockito-core from 4.8.1 to 5.4.0 by @dependabot in #276
  • chore(deps): bump org.springframework.boot from 3.1.0 to 3.1.1 by @dependabot in #274
  • chore: GH-258: Update version to 0.13.0 by @timonback in #267
  • feat: Allow to customize the AsyncApi object after generation by @timonback in #265
  • chore: Move configuration constants to new properties package by @timonback in #266
  • feat: Added @asyncmessage by @ctasada in #231
  • chore(deps-dev): bump typescript from 5.1.3 to 5.1.6 in /springwolf-ui by @dependabot in #281
  • chore(deps): bump swaggerCoreVersion from 2.2.14 to 2.2.15 by @dependabot in #283
  • GH-257: feat: Publish springwolf-add-ons/springwolf-common-model-conv… by @timonback in #277
  • chore: Reduce duplicities in configuration by @ctasada in #284
  • Feat/add amqp rabbitlistener classlevel scanner by @timonback in #287
  • chore: Run build, check and analyze dependencies as part of the pipel… by @sam0r040 in #298
  • GH-278: fix: Handle identical listeners with different kafka group ids by @timonback in #289
  • chore(deps): bump io.spring.dependency-management from 1.1.0 to 1.1.2 by @dependabot in #294
  • chore: Common naming of dependencies by @timonback in #290
  • Chore/formatting with spotless by @timonback in #263
  • Chore/handling of snapshot builds by @timonback in #299
  • Feat: Start own implementation of an example generator to replace inf… by @sam0r040 in #279
  • Fix/gh 176 keep default kafka message binding when null by @timonback in #300
  • chore(deps): bump org.springframework.boot from 3.1.1 to 3.1.2 by @dependabot in #302
  • chore(deps): bump junitJupiterVersion from 5.9.3 to 5.10.0 by @dependabot in #303
  • chore(deps): bump org.apache.kafka:kafka-streams from 3.5.0 to 3.5.1 by @dependabot in #304
  • chore(deps): bump com.diffplug.spotless from 6.19.0 to 6.20.0 by @dependabot in #305
  • chore(deps-dev): bump @types/node from 18.16.18 to 18.17.0 in /springwolf-ui by @dependabot in #306
  • feat: Add all-contributors by @timonback in #301
  • chore(deps): bump com.bmuschko.docker-spring-boot-application from 8.1.0 to 9.3.1 by @dependabot in #181
  • support lazy, fail-fast and background initialization of asyncapi by @tvahrst in #297
  • Release Preparation by @sam0r040 in #308
  • chore(deps): bump org.apache.kafka:kafka-clients from 3.5.0 to 3.5.1 by @dependabot in #309
  • chore(deps-dev): bump @types/node from 18.17.0 to 18.17.1 in /springwolf-ui by @dependabot in #310
  • chore(deps): bump org.apache.commons:commons-lang3 from 3.12.0 to 3.13.0 by @dependabot in #311

Full Changelog: springwolf-core-0.11.1...v0.13.0

springwolf-kafka-0.12.1

27 Jun 19:51
15cb911
Compare
Choose a tag to compare

Patch release particular for maven users (Bug report: #232)

What's Changed

  • OWASP Scanning by @timonback in #229
  • chore(deps): bump swaggerAnnotationsVersion from 2.2.11 to 2.2.12 by @dependabot in #233
  • chore: Upgrade to Gradle 7.6.1 by @ctasada in #230
  • chore: set and specify versions of all dependencies by @timonback in #238
  • chore(deps): bump org.mockito:mockito-junit-jupiter from 4.5.1 to 5.4.0 by @dependabot in #234
  • chore(deps): bump io.swagger.core.v3:swagger-models from 2.2.11 to 2.2.12 by @dependabot in #236
  • chore(deps): bump io.swagger.core.v3:swagger-core-jakarta from 2.2.11 to 2.2.13 by @dependabot in #240
  • build: Fixed Swagger-Core dependencies by @ctasada in #242
  • chore: Prepare bugfix release by @timonback in #244

Full Changelog: springwolf-kafka-0.12.0...springwolf-kafka-0.12.1