diff --git a/.changeset/legal-parents-scream.md b/.changeset/legal-parents-scream.md new file mode 100644 index 0000000..2586df4 --- /dev/null +++ b/.changeset/legal-parents-scream.md @@ -0,0 +1,7 @@ +--- +"changesets": minor +--- + +Add support for handling dependency updates separately from other changesets, so that they can be presented in a more organised way. + +This is utilized by setting the update type to `dependency` in place of major/minor/patch. diff --git a/README.md b/README.md index e4ec985..35218fe 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,22 @@ users recognize the ways of working and feel at home. This is it, at the moment. Stay tuned for more docs later on, thanks! +## Dependency updates +Due to the way automated dependency update bots like Dependabot and Renovate work, there is often a large influx of automated changesets that are not easy to merge into the normal changelog. They can also be the source of an unwanted amount of noise in the changelog. + +To help with this, we have added a feature to mark changesets as dependency update using the update type "dependency". This will make the changeset appear in a separate section in the changelog, and will be added as a single list of updates in the end of the released version. + +Dependencies that have been updated to new versions multiple times between releases will have each of the updates listed in the changelog. + +``` +--- +"changesets-java": dependency +--- + +- ch.qos.logback:logback-core: 1.5.12 +- com.google.errorprone:error_prone_annotations: 2.34.0 +``` + ## Release Maven Plugin Integration To delegate versioning to the Release Maven Plugin, you can use the `ChangesetsVersionPolicy` together with the `useReleasePluginIntegration` flag: diff --git a/changesets-java/src/main/java/se/fortnox/changesets/ChangelogAggregator.java b/changesets-java/src/main/java/se/fortnox/changesets/ChangelogAggregator.java index 6f29b1e..f7706ea 100644 --- a/changesets-java/src/main/java/se/fortnox/changesets/ChangelogAggregator.java +++ b/changesets-java/src/main/java/se/fortnox/changesets/ChangelogAggregator.java @@ -19,6 +19,7 @@ import static java.util.stream.Collectors.toList; import static org.slf4j.LoggerFactory.getLogger; import static se.fortnox.changesets.ChangesetWriter.CHANGESET_DIR; +import static se.fortnox.changesets.Level.DEPENDENCY; import static se.fortnox.changesets.Level.MAJOR; import static se.fortnox.changesets.Level.MINOR; import static se.fortnox.changesets.Level.PATCH; @@ -27,9 +28,15 @@ public class ChangelogAggregator { private static final Logger LOG = getLogger(ChangelogAggregator.class); public static final String CHANGELOG_FILE = "CHANGELOG.md"; private final Path baseDir; + private final DependencyUpdatesParser dependencyUpdatesParser; public ChangelogAggregator(Path baseDir) { + this(baseDir, new DependencyUpdatesParser()); + } + + public ChangelogAggregator(Path baseDir, DependencyUpdatesParser dependencyUpdatesParser) { this.baseDir = baseDir; + this.dependencyUpdatesParser = dependencyUpdatesParser; } /** @@ -38,23 +45,26 @@ public ChangelogAggregator(Path baseDir) { * * @param packageName The package name to get changesets for * @param version The version number of the merged changes + * @return */ - public void mergeChangesetsToChangelog(String packageName, String version) { + public Path mergeChangesetsToChangelog(String packageName, String version) { Path changesetsDir = this.baseDir.resolve(CHANGESET_DIR); ChangesetLocator changesetLocator = new ChangesetLocator(this.baseDir); List changesets = changesetLocator.getChangesets(packageName); if (changesets.isEmpty()) { LOG.info("No changesets found in {}", this.baseDir); - return; + return changesetsDir; } String changelog = generateChangelog(packageName, version, changesets); + Path changelogFile; try { - writeChangelog(changelog); + changelogFile = writeChangelog(changelog); } catch (ChangelogException exception) { LOG.error("Failed to update changelog at {}", changesetsDir, exception); + return changesetsDir; } changesets.forEach(changeset -> { @@ -65,9 +75,10 @@ public void mergeChangesetsToChangelog(String packageName, String version) { LOG.error("Failed to delete {}", file, e); } }); + return changelogFile; } - private static String generateChangelog(String packageName, String version, List changesets) { + private String generateChangelog(String packageName, String version, List changesets) { String changes = changesets .stream() .collect(groupingBy(Changeset::level, mapping(Changeset::message, toList()))) @@ -75,16 +86,14 @@ private static String generateChangelog(String packageName, String version, List .stream() .sorted(sortChangesets()) .map(entry -> { - String level = entry.getKey().getPresentationString(); - String levelChanges = entry.getValue().stream() - .map(ChangelogAggregator::formatChangeAsBulletPoint) - .sorted() - .collect(Collectors.joining("\n")); + Level level = entry.getKey(); + String levelString = level.getPresentationString(); + String levelChanges = formatChangeset(level, entry.getValue()); return """ - ### %s Changes + ### %s - %s""".formatted(level, levelChanges); + %s""".formatted(levelString, levelChanges); }) .collect(Collectors.joining("\n\n")); @@ -99,6 +108,23 @@ private static String generateChangelog(String packageName, String version, List return MarkdownFormatter.format(markdown); } + private String formatChangeset(Level level, List changes) { + if (level == DEPENDENCY) { + // Extract all dependencies from each dependency change and put them into a single list + return changes.stream() + .flatMap(change -> dependencyUpdatesParser.parseDependencyChangeset(change).stream()) + .map(ChangelogAggregator::formatChangeAsBulletPoint) + .distinct() + .sorted() + .collect(Collectors.joining("\n")); + } + + return changes.stream() + .map(ChangelogAggregator::formatChangeAsBulletPoint) + .sorted() + .collect(Collectors.joining("\n")); + } + private static String formatChangeAsBulletPoint(String change) { // Add the change as a bullet point, with leading dash and each subsequent line indented with two spaces String firstLinePrefix = "- "; @@ -118,7 +144,7 @@ private static String formatChangeAsBulletPoint(String change) { } private static Comparator>> sortChangesets() { - List levelOrder = List.of(MAJOR, MINOR, PATCH); + List levelOrder = List.of(MAJOR, MINOR, PATCH, DEPENDENCY); return (o1, o2) -> { // Sort levels in the order specified in levelOrder @@ -135,9 +161,10 @@ private static Comparator>> sortChangesets() { * If the file already exists, trim the first header before prepending it with the new changelog entries. * * @param changelog The new changelog content + * @return * @throws ChangelogException Thrown if file operations on the existing or new file are unsuccessful */ - private void writeChangelog(String changelog) throws ChangelogException { + private Path writeChangelog(String changelog) throws ChangelogException { Path changelogFile = this.baseDir.resolve(CHANGELOG_FILE); if (Files.exists(changelogFile)) { @@ -146,6 +173,7 @@ private void writeChangelog(String changelog) throws ChangelogException { try { Files.writeString(changelogFile, changelog, TRUNCATE_EXISTING, CREATE); + return changelogFile; } catch (IOException e) { throw new ChangelogException("Failed to write " + changelogFile, e); diff --git a/changesets-java/src/main/java/se/fortnox/changesets/ChangesetParser.java b/changesets-java/src/main/java/se/fortnox/changesets/ChangesetParser.java index 40b09c5..3d87a66 100644 --- a/changesets-java/src/main/java/se/fortnox/changesets/ChangesetParser.java +++ b/changesets-java/src/main/java/se/fortnox/changesets/ChangesetParser.java @@ -36,6 +36,7 @@ public static List parseFile(File file) { // Translate to enum Level level = switch (levelString) { + case "dependency" -> Level.DEPENDENCY; case "patch" -> Level.PATCH; case "minor" -> Level.MINOR; case "major" -> Level.MAJOR; diff --git a/changesets-java/src/main/java/se/fortnox/changesets/DependencyUpdatesParser.java b/changesets-java/src/main/java/se/fortnox/changesets/DependencyUpdatesParser.java new file mode 100644 index 0000000..486388c --- /dev/null +++ b/changesets-java/src/main/java/se/fortnox/changesets/DependencyUpdatesParser.java @@ -0,0 +1,42 @@ +package se.fortnox.changesets; + +import com.vladsch.flexmark.ast.Paragraph; +import com.vladsch.flexmark.parser.Parser; +import com.vladsch.flexmark.util.ast.Document; +import com.vladsch.flexmark.util.ast.Node; +import com.vladsch.flexmark.util.collection.iteration.ReversiblePeekingIterable; +import org.slf4j.Logger; + +import java.util.List; +import java.util.stream.StreamSupport; + +import static org.slf4j.LoggerFactory.getLogger; + +public class DependencyUpdatesParser { + private static final Logger LOG = getLogger(DependencyUpdatesParser.class); + + public List parseDependencyChangeset(String change) { + Parser parser = Parser.builder().build(); + Document parsed = parser.parse(change); + + if (!parsed.hasChildren()) { + return List.of(); + } + + String nodeName = parsed.getFirstChild().getNodeName(); + if (!nodeName.equals("BulletList")) { + LOG.warn("Unexpected node type {}", nodeName); + return List.of(); + } + + ReversiblePeekingIterable dependencyNodes = parsed.getFirstChild().getChildren(); + + return StreamSupport.stream(dependencyNodes.spliterator(), false) + .map(node -> { + Paragraph paragraph = (Paragraph)node.getChildOfType(Paragraph.class); + return paragraph.getChars().toString().trim(); + }) + .distinct() + .toList(); + } +} diff --git a/changesets-java/src/main/java/se/fortnox/changesets/Level.java b/changesets-java/src/main/java/se/fortnox/changesets/Level.java index e162438..1e92df1 100644 --- a/changesets-java/src/main/java/se/fortnox/changesets/Level.java +++ b/changesets-java/src/main/java/se/fortnox/changesets/Level.java @@ -1,9 +1,10 @@ package se.fortnox.changesets; public enum Level { - MAJOR("major", "Major"), - MINOR("minor", "Minor"), - PATCH("patch", "Patch"); + MAJOR("major", "Major Changes"), + MINOR("minor", "Minor Changes"), + PATCH("patch", "Patch Changes"), + DEPENDENCY("dependency", "Dependency Updates"); private final String textValue; private final String presentationString; diff --git a/changesets-java/src/main/java/se/fortnox/changesets/MarkdownFormatter.java b/changesets-java/src/main/java/se/fortnox/changesets/MarkdownFormatter.java index 988b4fd..8b1026b 100644 --- a/changesets-java/src/main/java/se/fortnox/changesets/MarkdownFormatter.java +++ b/changesets-java/src/main/java/se/fortnox/changesets/MarkdownFormatter.java @@ -20,7 +20,14 @@ public class MarkdownFormatter { public static String format(String markdown) { MutableDataSet formatOptions = new MutableDataSet(); // Clean up whitespaces in different ways - formatOptions.set(FORMAT_FLAGS, LineAppendable.F_FORMAT_ALL); + // Do not use F_TRIM_TRAILING_WHITESPACE as it is required for line breaks in bullet lists + int format = LineAppendable.F_CONVERT_TABS | + // LineAppendable.F_COLLAPSE_WHITESPACE; + // LineAppendable.F_TRIM_TRAILING_WHITESPACE | + LineAppendable.F_TRIM_LEADING_WHITESPACE | + LineAppendable.F_TRIM_LEADING_EOL + ; + formatOptions.set(FORMAT_FLAGS, format); // Limit line lengths formatOptions.set(RIGHT_MARGIN, 120); diff --git a/changesets-java/src/test/java/se/fortnox/changesets/ChangelogAggregatorTest.java b/changesets-java/src/test/java/se/fortnox/changesets/ChangelogAggregatorTest.java index 32ee5f4..6f6c6d9 100644 --- a/changesets-java/src/test/java/se/fortnox/changesets/ChangelogAggregatorTest.java +++ b/changesets-java/src/test/java/se/fortnox/changesets/ChangelogAggregatorTest.java @@ -256,4 +256,48 @@ void shouldFormatMarkdown(@TempDir Path tempDir) throws FileAlreadyExistsExcepti """); } + + @Test + void shouldAggregateDependencyUpdates(@TempDir Path tempDir) throws FileAlreadyExistsException { + ChangelogAggregator changelog = new ChangelogAggregator(tempDir); + + ChangesetWriter changesetWriter = new ChangesetWriter(tempDir); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, "- Some dependency\n- Another dependency"); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, "- Third dependency"); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, " - Differently indented"); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, "- Fourth dependency\n - Fifth dependency"); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, "- Multiline dependency \n that should be kept as a single item"); + changesetWriter.writeChangeset(PACKAGE_NAME, Level.DEPENDENCY, "- Multi \nline"); + + assertThat(tempDir.resolve(ChangesetWriter.CHANGESET_DIR)) + .exists() + .isDirectory() + .isDirectoryContaining(path -> path.toFile().getName().endsWith(".md")); + + changelog.mergeChangesetsToChangelog(PACKAGE_NAME, "1.0.0"); + + assertThat(tempDir.resolve(CHANGELOG_FILE)) + .exists() + .isRegularFile() + .content() + .isEqualTo(""" + # my-package + + ## 1.0.0 + + ### Dependency Updates + + - Another dependency + - Differently indented + - Fifth dependency + - Fourth dependency + - Multi\s\s + line + - Multiline dependency\s\s + that should be kept as a single item + - Some dependency + - Third dependency + + """); + } } \ No newline at end of file diff --git a/changesets-java/src/test/java/se/fortnox/changesets/CompareTest.java b/changesets-java/src/test/java/se/fortnox/changesets/CompareTest.java new file mode 100644 index 0000000..8aecdbd --- /dev/null +++ b/changesets-java/src/test/java/se/fortnox/changesets/CompareTest.java @@ -0,0 +1,65 @@ +package se.fortnox.changesets; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + +import static org.assertj.core.api.Assertions.assertThat; + +class CompareTest { + @Test + void shouldGenerateChangelogForReactiveWizard(@TempDir Path tempDir) throws IOException { + Path changesetsPath = Path.of("src/test/resources/changesets/reactive-wizard/.changeset"); + + Path changesetsTarget = tempDir.resolve(".changeset"); + changesetsTarget.toFile().mkdir(); + + String[] files = changesetsPath.toFile().list(); + for (String file : files) { + Files.copy(changesetsPath.resolve(file), changesetsTarget.resolve(file)); + } + + assertThat(changesetsTarget.toFile().list()) + .isNotEmpty() + .containsExactly(changesetsPath.toFile().list()); + + ChangelogAggregator changelog = new ChangelogAggregator(tempDir); + Path changelogFile = changelog.mergeChangesetsToChangelog("reactivewizard-parent", "26.0.0"); + + String actualChangelogText = Files.readString(changelogFile); + String expectedChangelogText = Files.readString(changesetsPath.resolve("../CHANGELOG-expected.md")); + + assertThat(actualChangelogText) + .isEqualTo(expectedChangelogText); + + } + @Test + void shouldGenerateChangelogForReactiveWizardWithDependencyTypes(@TempDir Path tempDir) throws IOException { + Path changesetsPath = Path.of("src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset"); + + Path changesetsTarget = tempDir.resolve(".changeset"); + changesetsTarget.toFile().mkdir(); + + String[] files = changesetsPath.toFile().list(); + for (String file : files) { + Files.copy(changesetsPath.resolve(file), changesetsTarget.resolve(file)); + } + + assertThat(changesetsTarget.toFile().list()) + .isNotEmpty() + .containsExactly(changesetsPath.toFile().list()); + + ChangelogAggregator changelog = new ChangelogAggregator(tempDir); + Path changelogFile = changelog.mergeChangesetsToChangelog("reactivewizard-parent", "26.0.0"); + + String actualChangelogText = Files.readString(changelogFile); + String expectedChangelogText = Files.readString(changesetsPath.resolve("../CHANGELOG-expected.md")); + + assertThat(actualChangelogText) + .isEqualTo(expectedChangelogText); + + } +} diff --git a/changesets-java/src/test/java/se/fortnox/changesets/DependencyUpdatesParserTest.java b/changesets-java/src/test/java/se/fortnox/changesets/DependencyUpdatesParserTest.java new file mode 100644 index 0000000..fd773f0 --- /dev/null +++ b/changesets-java/src/test/java/se/fortnox/changesets/DependencyUpdatesParserTest.java @@ -0,0 +1,42 @@ +package se.fortnox.changesets; + +import org.junit.jupiter.api.Test; + +import java.util.List; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +class DependencyUpdatesParserTest { + + @Test + void shouldParseDependencyUpdates() { + DependencyUpdatesParser parser = new DependencyUpdatesParser(); + List dependencies = parser.parseDependencyChangeset("- maven:3.9"); + + assertThat(dependencies) + .containsExactly("maven:3.9"); + } + + @Test + void shouldReturnUniqueDependencies() { + DependencyUpdatesParser parser = new DependencyUpdatesParser(); + List dependencies = parser.parseDependencyChangeset(""" + - org.apache.logging.log4j:log4j-core: 2.24.1 + - org.apache.logging.log4j:log4j-core: 2.24.2 + - org.apache.logging.log4j:log4j-core: 2.24.3 + - org.apache.logging.log4j:log4j-core: 2.24.3 + + """); + + Set expected = Set.of( + "org.apache.logging.log4j:log4j-core: 2.24.1", + "org.apache.logging.log4j:log4j-core: 2.24.2", + "org.apache.logging.log4j:log4j-core: 2.24.3" + ); + + assertThat(dependencies) + .containsExactlyInAnyOrderElementsOf(expected); + } + +} \ No newline at end of file diff --git a/changesets-java/src/test/java/se/fortnox/changesets/MarkdownFormatterTest.java b/changesets-java/src/test/java/se/fortnox/changesets/MarkdownFormatterTest.java index e932052..45b604e 100644 --- a/changesets-java/src/test/java/se/fortnox/changesets/MarkdownFormatterTest.java +++ b/changesets-java/src/test/java/se/fortnox/changesets/MarkdownFormatterTest.java @@ -16,7 +16,23 @@ class MarkdownFormatterTest { @Test void shouldFormatDocumentAsExpected() { - assertThat(MarkdownFormatter.format(original)).isEqualTo(expected); + String actual = MarkdownFormatter.format(original); + assertThat(actual).isEqualTo(expected); } + /** + * The double spaces at the end indicate that the following line should be indented as the current one and must be kept + */ + @Test + void shouldKeepMultilineBulletItems() { + String unformatted = """ + - First line\s\s + Second line\s\s + Third line + + """; + + String actual = MarkdownFormatter.format(unformatted); + assertThat(actual).isEqualTo(unformatted); + } } \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/beige-suits-train.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/beige-suits-train.md new file mode 100644 index 0000000..181c064 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/beige-suits-train.md @@ -0,0 +1,20 @@ +--- +"reactivewizard-parent": dependency +--- +- com.github.jnr:jnr-posix: 3.1.20 +- io.swagger.core.v3:swagger-annotations: 2.2.27 +- net.bytebuddy:byte-buddy: 1.15.11 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-jul: 2.24.3 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-api: 2.24.3 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.3 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.3 +- org.hibernate.validator:hibernate-validator: 8.0.2.Final +- org.junit:junit-bom: 5.11.4 +- com.google.guava:guava: 33.4.0-jre +- io.projectreactor:reactor-bom: 2024.0.1 +- io.zipkin.reporter2:zipkin-reporter: 3.4.3 +- io.micrometer:micrometer-observation: 1.14.2 +- io.opentelemetry:opentelemetry-bom: 1.45.0 +- org.apache.commons:commons-text: 1.13.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/better-buses-warn.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/better-buses-warn.md new file mode 100644 index 0000000..74f4f93 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/better-buses-warn.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": patch +--- + +* Info-logging when trying to create a consumer and the Kafka client is disabled, +to let the developer know that a consumer wont be created. + +* Confusing 'Listener with suffix ... subscribed to topics ...' Info-log is no longer logging when Kafka client +is disabled because there is no actual subscription when the Kafka client is disabled. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/brave-dolls-mate.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/brave-dolls-mate.md new file mode 100644 index 0000000..ea5bcaa --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/brave-dolls-mate.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Configure blockhound to ignore getLogger as a blocking call. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/calm-flies-wink.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/calm-flies-wink.md new file mode 100644 index 0000000..3f2d211 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/calm-flies-wink.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": patch +--- + +Refactored EventListenerImpl in preparation of having listeners accept messages as a Flux/Mono. An interim MessageToEvent class was created to abstract the +conversion of messages to events. The change is internal to Reactive Wizard and should not affect any existing code. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/chatty-rockets-smash.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/chatty-rockets-smash.md new file mode 100644 index 0000000..a43ea7b --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/chatty-rockets-smash.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +Downgraded micrometer-observation as reactor-kafka doesn't align versions with reactor-core-micrometer. Until +https://github.com/reactor/reactor-kafka/issues/395 we will also have micrometer-observation disabled in our +renovate configuration. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/clear-bikes-hide.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/clear-bikes-hide.md new file mode 100644 index 0000000..9c7ec23 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/clear-bikes-hide.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": patch +--- + +Tests have been updated to use our standard, configured, ObjectMapper instead of using partially (or not at all) configured ObjectMapper instances. This +applies in particular use of constructors annotated with @Inject. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/cuddly-ends-read.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/cuddly-ends-read.md new file mode 100644 index 0000000..344e4cd --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/cuddly-ends-read.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": minor +--- + +Kafka messages transporting events have now been extended with an additional header of key `fnxtype`. The value is a copy of the `type` property from +the event. In the case where a `type` property is not found the header will have a null value. The prefix `fnx` is used to avoid potential future conflicts with +other headers. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/eager-apes-arrive.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/eager-apes-arrive.md new file mode 100644 index 0000000..80f5e07 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/eager-apes-arrive.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": minor +--- + +PlaywrightStoryReporter has been modified to work with JBehaves (see PLAT-3720). +In addition a configuration property saveTraces can be set to either none, failed (default) or all to determine when traces should be saved. +This should be set in the configuration that is used during testing, not the production one. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/free-falcons-do.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/free-falcons-do.md new file mode 100644 index 0000000..d410cb4 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/free-falcons-do.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +Added createPage(BrowserContext) that creates a page from the given context. The default page is also created from the BrowserContext API instead of the Page API. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-regions-joke.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-regions-joke.md new file mode 100644 index 0000000..8c1b098 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-regions-joke.md @@ -0,0 +1,33 @@ +--- +"reactivewizard-parent": dependency +--- +- io.swagger.core.v3:swagger-annotations: 2.2.26 +- org.bouncycastle:bcpkix-jdk18on: 1.79 +- net.bytebuddy:byte-buddy: 1.15.10 +- com.mattbertolini:liquibase-slf4j: 5.1.0 +- io.github.classgraph:classgraph: 4.8.179 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-jul: 2.24.2 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-api: 2.24.2 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.2 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.2 +- org.junit:junit-bom: 5.11.3 +- com.fasterxml.jackson:jackson-bom: 2.18.2 +- com.microsoft.playwright:playwright: 1.49.0 +- io.zipkin.zipkin2:zipkin: 3.4.3 +- ch.qos.logback:logback-classic: 1.5.12 +- ch.qos.logback:logback-core: 1.5.12 +- io.opentelemetry:opentelemetry-bom: 1.44.1 +- org.jetbrains.kotlin:kotlin-bom: 2.1.0 +- com.github.luben:zstd-jni: 1.5.6-8 +- org.bouncycastle:bcprov-jdk18on: 1.79 +- com.google.errorprone:error_prone_annotations: 2.36.0 +- io.lettuce:lettuce-core: 6.5.1.RELEASE +- org.checkerframework:checker-qual: 3.48.3 +- io.dropwizard.metrics:metrics-caffeine: 4.2.29 +- io.dropwizard.metrics:metrics-core: 4.2.29 +- commons-io:commons-io: 2.18.0 +- org.testcontainers:junit-jupiter: 1.20.4 +- org.testcontainers:testcontainers: 1.20.4 +- org.testcontainers:postgresql: 1.20.4 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-schools-hammer.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-schools-hammer.md new file mode 100644 index 0000000..7dc7d34 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/giant-schools-hammer.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Improved RWStory to support Timescale-only service testing diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/good-birds-ring.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/good-birds-ring.md new file mode 100644 index 0000000..19af299 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/good-birds-ring.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": minor +--- + +Added metrics to event publisher to investigate how often the auth is lost during a +distributed chain of calls that results in events. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/kind-eggs-wave.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/kind-eggs-wave.md new file mode 100644 index 0000000..3be3fe7 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/kind-eggs-wave.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +TransactionEventPublisherImpl now adds an eventId header in every published event. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/loud-wombats-matter.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/loud-wombats-matter.md new file mode 100644 index 0000000..ccd5303 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/loud-wombats-matter.md @@ -0,0 +1,8 @@ +--- +"reactivewizard-parent": patch +--- + +Suppressing CVE-2024-31141 (vulnerability in the Kafka client lib). The vulnerability does not +affect any Reactive Wizard services. This vulnerability is patched in 3.8.0, but we should avoid +upgrading the client library to a version greater than what the Kafka server is running on (3.5.2), +thus the suppression. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-taxis-agree.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-taxis-agree.md new file mode 100644 index 0000000..29ae5fe --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-taxis-agree.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +* Added PlaywrightTracingHooks that starts and stops tracing each scenario. Failed scenarios are saved in `LaunchOptions::tracesDir`. +* LaunchOptions::tracesDir config is now set to `./target/traces` by default. If explicitly set to null then PlaywrightTracingHooks will not trace. +* PlaywrightTracingHooks can be turned off by setting the system property `enablePlaywrightTracingHooks` to `false`. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-webs-travel.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-webs-travel.md new file mode 100644 index 0000000..2d746d1 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/many-webs-travel.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": major +--- + +In addition to moving our open source edition of [Reactive Wizard](https://github.com/FortnoxAB/reactive-wizard) we have also adopted semantic versioning +to our releases. This means that we will now be able to communicate the impact of changes in our releases more clearly. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/nasty-hotels-bet.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/nasty-hotels-bet.md new file mode 100644 index 0000000..3029d2f --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/nasty-hotels-bet.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- +Upgraded Netty to 4.1.115 to patch vulnerability with unsafe reading of environment files(see CVE-2024-47535 for more info.). +This vulnerability does not affect Reactive Wizard services. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/old-results-wait.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/old-results-wait.md new file mode 100644 index 0000000..35bef2c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/old-results-wait.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": minor +--- + +Made EventListenerImpl aware of the `fnxtype` header in order to exit event handler dispatching early if the event type is not of interest to the listener. We +fall back to deserializing the body if the `fnxtype` header is not present and matching on the event `type` property. In addition we have introduced two new +Prometheus metrics (`event_type_selection_duration_seconds`, `event_type_selection_duration_seconds_count`) to track the adoption and efficiency of the +new feature. Labels for topic and type are included in addition to the boolean `header` label to indicate the source of the event type. + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/polite-nails-end.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/polite-nails-end.md new file mode 100644 index 0000000..3d721e3 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/polite-nails-end.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +JsonDeserializerFactory has been extended with createJsonNodeMapper which can map a Jackson JsonNode to a bean diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/pretty-animals-poke.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/pretty-animals-poke.md new file mode 100644 index 0000000..0d66e72 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/pretty-animals-poke.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added support for JAX-RS PATCH, alongside existing RW PATCH diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/quiet-signs-clean.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/quiet-signs-clean.md new file mode 100644 index 0000000..a1903dc --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/quiet-signs-clean.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Dummy changeset to release a new patch version. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sad-regions-jump.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sad-regions-jump.md new file mode 100644 index 0000000..ffa2e5b --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sad-regions-jump.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Use `testcontainers-bom`, instead of individual package versions. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-parents-film.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-parents-film.md new file mode 100644 index 0000000..3874e62 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-parents-film.md @@ -0,0 +1,61 @@ +--- +"reactivewizard-parent": dependency +--- + +- maven: 3.9.9 +- io.swagger.core.v3:swagger-annotations: 2.2.25 +- jakarta.inject:jakarta.inject-api: 2.0.1.MR +- net.bytebuddy:byte-buddy: 1.15.5 +- org.awaitility:awaitility: 4.2.2 +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound: 1.0.10.RELEASE +- io.github.classgraph:classgraph: 4.8.177 +- org.mockito:mockito-junit-jupiter: 5.14.2 +- org.mockito:mockito-core: 5.14.2 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-jul: 2.24.1 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-api: 2.24.1 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.1 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.1 +- org.yaml:snakeyaml: 2.3 +- org.junit:junit-bom: 5.11.2 +- com.google.guava:guava: 33.3.1-jre +- com.fasterxml.jackson:jackson-bom: 2.18.0 +- io.netty:netty-bom: 4.1.114.Final +- io.projectreactor:reactor-bom: 2023.0.11 +- com.microsoft.playwright:playwright: 1.48.0 +- io.zipkin.reporter2:zipkin-reporter: 3.4.2 +- io.zipkin.zipkin2:zipkin: 3.4.2 +- ch.qos.logback:logback-classic: 1.5.11 +- ch.qos.logback:logback-core: 1.5.11 +- io.micrometer:micrometer-observation: 1.13.6 +- io.opentelemetry:opentelemetry-bom: 1.43.0 +- org.jetbrains.kotlin:kotlin-bom: 2.0.21 +- org.junit-pioneer:junit-pioneer: 2.3.0 +- com.github.luben:zstd-jni: 1.5.6-6 +- org.apache.commons:commons-text: 1.12.0 +- org.scala-lang:scala-library: 2.13.15 +- org.apache.maven.shared:maven-invoker: 3.3.0 +- com.google.code.gson:gson: 2.11.0 +- org.apache.commons:commons-csv: 1.12.0 +- com.google.errorprone:error_prone_annotations: 2.33.0 +- io.lettuce:lettuce-core: 6.4.0.RELEASE +- org.apache.commons:commons-lang3: 3.17.0 +- org.postgresql:postgresql: 42.7.4 +- org.checkerframework:checker-qual: 3.48.1 +- commons-codec:commons-codec: 1.17.1 +- io.dropwizard.metrics:metrics-caffeine: 4.2.28 +- io.dropwizard.metrics:metrics-core: 4.2.28 +- io.cucumber:cucumber-junit-platform-engine: 7.20.1 +- io.cucumber:cucumber-guice: 7.20.1 +- io.cucumber:cucumber-java: 7.20.1 +- io.cucumber:cucumber-java8: 7.20.1 +- io.cucumber:cucumber-junit: 7.20.1 +- org.codehaus.plexus:plexus-utils: 4.0.2 +- commons-io:commons-io: 2.17.0 +- org.testcontainers:junit-jupiter: 1.20.2 +- org.testcontainers:testcontainers: 1.20.2 +- org.testcontainers:postgresql: 1.20.2 +- com.fortnox.maven:parent-pom: 21.14 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-views-deny.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-views-deny.md new file mode 100644 index 0000000..939a84c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/shy-views-deny.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +The metric "event_deserialization_duration_seconds" has been introduced to gather more insights about our event consumption, deserialization and execution +against event handlers. The +granularity is at topic and type level and is currently measured before topic and type filtering (which is a target for future improvements). diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/six-guests-bet.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/six-guests-bet.md new file mode 100644 index 0000000..fff9b04 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/six-guests-bet.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added more sql statement debug logs. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/small-cloths-throw.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/small-cloths-throw.md new file mode 100644 index 0000000..fc2f084 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/small-cloths-throw.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Adding CVE-2024-56128 to the CVE supression list. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/social-hats-mix.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/social-hats-mix.md new file mode 100644 index 0000000..44da871 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/social-hats-mix.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- io.projectreactor:reactor-bom: 2024.0.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/some-parts-study.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/some-parts-study.md new file mode 100644 index 0000000..d7da64c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/some-parts-study.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +Added Metrics.name() method to more easily label named metrics. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/strong-seals-vanish.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/strong-seals-vanish.md new file mode 100644 index 0000000..6ca903c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/strong-seals-vanish.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- com.google.errorprone:error_prone_annotations: 2.34.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sweet-roses-lick.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sweet-roses-lick.md new file mode 100644 index 0000000..e5f0db9 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/sweet-roses-lick.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added event IDs to events published by EventPublisherImpl. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-hoops-hope.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-hoops-hope.md new file mode 100644 index 0000000..289a046 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-hoops-hope.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- com.zaxxer:HikariCP: 6.2.1 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-snails-mate.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-snails-mate.md new file mode 100644 index 0000000..930513a --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-snails-mate.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": patch +--- + +Fixed a typographical error in the RuntimeException message thrown by `ParameterizedQuery::getDynamicQueryPart`. The corrected message now reads: `Query contains placeholder "??" but the method does not have such an argument.` + + + + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-spies-return.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-spies-return.md new file mode 100644 index 0000000..239e891 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/three-spies-return.md @@ -0,0 +1,14 @@ +--- +"reactivewizard-parent": patch +--- + +Implemented testIdAttributeName config in PlaywrightConfig. You can now configure the test-id attribute name +that Playwright will search for in a tag using testIdAttributeName under the playwright config in config.yml. +This makes it easy to switch to the attribute name "data-test-id". Example: + +```yaml +playwright: + browser: chrome + testIdAttributeName: "data-test-id" + ... +``` \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/two-lemons-arrive.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/two-lemons-arrive.md new file mode 100644 index 0000000..8e81ea1 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/two-lemons-arrive.md @@ -0,0 +1,10 @@ +--- +"reactivewizard-parent": minor +--- + +Jackson dependencies have been removed from our reactivewizard-dates module. Dependent classes have been moved to the new reactivewizard-jackson module: + +- com.fortnox.reactivewizard.dates.RWDateFormat + +If reactivewizard-dates was previously used as a dependency to access RWDateFormat then you will need to change that dependency to reactivewizard-jackson, in +all other cases it should be included transitively via reactivewizard-core. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/young-hoops-lead.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/young-hoops-lead.md new file mode 100644 index 0000000..d15f37a --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/.changeset/young-hoops-lead.md @@ -0,0 +1,8 @@ +--- +"reactivewizard-parent": patch +--- + +We now have a common dependency for Jackson-related classes and configuration. This module provides a single point of configuration for an `ObjectMapper` (via +the `StandardObjectMapperFactory` class) that is suitable for HTTP request/response and event serialization/deserialization. This ensures that the +`ObjectMapper` is configured consistently across the application. Previously, this was set up in the `reactivewizard-core` module via FnxJaxRsModule. + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/CHANGELOG-expected.md b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/CHANGELOG-expected.md new file mode 100644 index 0000000..0baefa9 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard-with-dependencies/CHANGELOG-expected.md @@ -0,0 +1,197 @@ +# reactivewizard-parent + +## 26.0.0 + +### Major Changes + +- In addition to moving our open source edition of [Reactive Wizard](https://github.com/FortnoxAB/reactive-wizard) we + have also adopted semantic versioning to our releases. This means that we will now be able to communicate the impact + of changes in our releases more clearly. + +### Minor Changes + +- Added Metrics.name() method to more easily label named metrics. +- Added createPage(BrowserContext) that creates a page from the given context. The default page is also created from the + BrowserContext API instead of the Page API. +- Added metrics to event publisher to investigate how often the auth is lost during a distributed chain of calls that + results in events. +- Jackson dependencies have been removed from our reactivewizard-dates module. Dependent classes have been moved to the + new reactivewizard-jackson module: + - com.fortnox.reactivewizard.dates.RWDateFormat + + If reactivewizard-dates was previously used as a dependency to access RWDateFormat then you will need to change that + dependency to reactivewizard-jackson, in all other cases it should be included transitively via reactivewizard-core. +- JsonDeserializerFactory has been extended with createJsonNodeMapper which can map a Jackson JsonNode to a bean +- Kafka messages transporting events have now been extended with an additional header of key `fnxtype`. The value is a + copy of the `type` property from the event. In the case where a `type` property is not found the header will have a + null value. The prefix `fnx` is used to avoid potential future conflicts with other headers. +- Made EventListenerImpl aware of the `fnxtype` header in order to exit event handler dispatching early if the event + type is not of interest to the listener. We fall back to deserializing the body if the `fnxtype` header is not present + and matching on the event `type` property. In addition we have introduced two new Prometheus metrics + (`event_type_selection_duration_seconds`, `event_type_selection_duration_seconds_count`) to track the adoption and + efficiency of the new feature. Labels for topic and type are included in addition to the boolean `header` label to + indicate the source of the event type. +- PlaywrightStoryReporter has been modified to work with JBehaves (see PLAT-3720). In addition a configuration property + saveTraces can be set to either none, failed (default) or all to determine when traces should be saved. This should be + set in the configuration that is used during testing, not the production one. + +### Patch Changes + +- * Added PlaywrightTracingHooks that starts and stops tracing each scenario. Failed scenarios are saved in + `LaunchOptions::tracesDir`. + * LaunchOptions::tracesDir config is now set to `./target/traces` by default. If explicitly set to null then + PlaywrightTracingHooks will not trace. + * PlaywrightTracingHooks can be turned off by setting the system property `enablePlaywrightTracingHooks` to `false`. +- * Info-logging when trying to create a consumer and the Kafka client is disabled, to let the developer know that a + consumer wont be created. + * Confusing 'Listener with suffix ... subscribed to topics ...' Info-log is no longer logging when Kafka client is + disabled because there is no actual subscription when the Kafka client is disabled. +- Added event IDs to events published by EventPublisherImpl. +- Added more sql statement debug logs. +- Added support for JAX-RS PATCH, alongside existing RW PATCH +- Adding CVE-2024-56128 to the CVE supression list. +- Configure blockhound to ignore getLogger as a blocking call. +- Downgraded micrometer-observation as reactor-kafka doesn't align versions with reactor-core-micrometer. Until + https://github.com/reactor/reactor-kafka/issues/395 we will also have micrometer-observation disabled in our renovate + configuration. +- Dummy changeset to release a new patch version. +- Fixed a typographical error in the RuntimeException message thrown by `ParameterizedQuery::getDynamicQueryPart`. The + corrected message now reads: `Query contains placeholder "??" but the method does not have such an argument.` +- Implemented testIdAttributeName config in PlaywrightConfig. You can now configure the test-id attribute name that + Playwright will search for in a tag using testIdAttributeName under the playwright config in config.yml. This makes it + easy to switch to the attribute name "data-test-id". Example: + + ```yaml + playwright: + browser: chrome + testIdAttributeName: "data-test-id" + ... + ``` +- Improved RWStory to support Timescale-only service testing +- Refactored EventListenerImpl in preparation of having listeners accept messages as a Flux/Mono. An interim + MessageToEvent class was created to abstract the conversion of messages to events. The change is internal to Reactive + Wizard and should not affect any existing code. +- Suppressing CVE-2024-31141 (vulnerability in the Kafka client lib). The vulnerability does not affect any Reactive + Wizard services. This vulnerability is patched in 3.8.0, but we should avoid upgrading the client library to a version + greater than what the Kafka server is running on (3.5.2), thus the suppression. +- Tests have been updated to use our standard, configured, ObjectMapper instead of using partially (or not at all) + configured ObjectMapper instances. This applies in particular use of constructors annotated with @Inject. +- The metric "event_deserialization_duration_seconds" has been introduced to gather more insights about our event + consumption, deserialization and execution against event handlers. The granularity is at topic and type level and is + currently measured before topic and type filtering (which is a target for future improvements). +- TransactionEventPublisherImpl now adds an eventId header in every published event. +- Upgraded Netty to 4.1.115 to patch vulnerability with unsafe reading of environment files(see CVE-2024-47535 for more + info.). This vulnerability does not affect Reactive Wizard services. +- Use `testcontainers-bom`, instead of individual package versions. +- We now have a common dependency for Jackson-related classes and configuration. This module provides a single point of + configuration for an `ObjectMapper` (via the `StandardObjectMapperFactory` class) that is suitable for HTTP + request/response and event serialization/deserialization. This ensures that the `ObjectMapper` is configured + consistently across the application. Previously, this was set up in the `reactivewizard-core` module via + FnxJaxRsModule. + +### Dependency Updates + +- ch.qos.logback:logback-classic: 1.5.11 +- ch.qos.logback:logback-classic: 1.5.12 +- ch.qos.logback:logback-core: 1.5.11 +- ch.qos.logback:logback-core: 1.5.12 +- com.fasterxml.jackson:jackson-bom: 2.18.0 +- com.fasterxml.jackson:jackson-bom: 2.18.2 +- com.fortnox.maven:parent-pom: 21.14 +- com.github.jnr:jnr-posix: 3.1.20 +- com.github.luben:zstd-jni: 1.5.6-6 +- com.github.luben:zstd-jni: 1.5.6-8 +- com.google.code.gson:gson: 2.11.0 +- com.google.errorprone:error_prone_annotations: 2.33.0 +- com.google.errorprone:error_prone_annotations: 2.34.0 +- com.google.errorprone:error_prone_annotations: 2.36.0 +- com.google.guava:guava: 33.3.1-jre +- com.google.guava:guava: 33.4.0-jre +- com.mattbertolini:liquibase-slf4j: 5.1.0 +- com.microsoft.playwright:playwright: 1.48.0 +- com.microsoft.playwright:playwright: 1.49.0 +- com.zaxxer:HikariCP: 6.2.1 +- commons-codec:commons-codec: 1.17.1 +- commons-io:commons-io: 2.17.0 +- commons-io:commons-io: 2.18.0 +- io.cucumber:cucumber-guice: 7.20.1 +- io.cucumber:cucumber-java8: 7.20.1 +- io.cucumber:cucumber-java: 7.20.1 +- io.cucumber:cucumber-junit-platform-engine: 7.20.1 +- io.cucumber:cucumber-junit: 7.20.1 +- io.dropwizard.metrics:metrics-caffeine: 4.2.28 +- io.dropwizard.metrics:metrics-caffeine: 4.2.29 +- io.dropwizard.metrics:metrics-core: 4.2.28 +- io.dropwizard.metrics:metrics-core: 4.2.29 +- io.github.classgraph:classgraph: 4.8.177 +- io.github.classgraph:classgraph: 4.8.179 +- io.lettuce:lettuce-core: 6.4.0.RELEASE +- io.lettuce:lettuce-core: 6.5.1.RELEASE +- io.micrometer:micrometer-observation: 1.13.6 +- io.micrometer:micrometer-observation: 1.14.2 +- io.netty:netty-bom: 4.1.114.Final +- io.opentelemetry:opentelemetry-bom: 1.43.0 +- io.opentelemetry:opentelemetry-bom: 1.44.1 +- io.opentelemetry:opentelemetry-bom: 1.45.0 +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound: 1.0.10.RELEASE +- io.projectreactor:reactor-bom: 2023.0.11 +- io.projectreactor:reactor-bom: 2024.0.0 +- io.projectreactor:reactor-bom: 2024.0.1 +- io.swagger.core.v3:swagger-annotations: 2.2.25 +- io.swagger.core.v3:swagger-annotations: 2.2.26 +- io.swagger.core.v3:swagger-annotations: 2.2.27 +- io.zipkin.reporter2:zipkin-reporter: 3.4.2 +- io.zipkin.reporter2:zipkin-reporter: 3.4.3 +- io.zipkin.zipkin2:zipkin: 3.4.2 +- io.zipkin.zipkin2:zipkin: 3.4.3 +- jakarta.inject:jakarta.inject-api: 2.0.1.MR +- maven: 3.9.9 +- net.bytebuddy:byte-buddy: 1.15.10 +- net.bytebuddy:byte-buddy: 1.15.11 +- net.bytebuddy:byte-buddy: 1.15.5 +- org.apache.commons:commons-csv: 1.12.0 +- org.apache.commons:commons-lang3: 3.17.0 +- org.apache.commons:commons-text: 1.12.0 +- org.apache.commons:commons-text: 1.13.0 +- org.apache.logging.log4j:log4j-api: 2.24.1 +- org.apache.logging.log4j:log4j-api: 2.24.2 +- org.apache.logging.log4j:log4j-api: 2.24.3 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-jul: 2.24.1 +- org.apache.logging.log4j:log4j-jul: 2.24.2 +- org.apache.logging.log4j:log4j-jul: 2.24.3 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.1 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.2 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.3 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.1 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.2 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.3 +- org.apache.maven.shared:maven-invoker: 3.3.0 +- org.awaitility:awaitility: 4.2.2 +- org.bouncycastle:bcpkix-jdk18on: 1.79 +- org.bouncycastle:bcprov-jdk18on: 1.79 +- org.checkerframework:checker-qual: 3.48.1 +- org.checkerframework:checker-qual: 3.48.3 +- org.codehaus.plexus:plexus-utils: 4.0.2 +- org.hibernate.validator:hibernate-validator: 8.0.2.Final +- org.jetbrains.kotlin:kotlin-bom: 2.0.21 +- org.jetbrains.kotlin:kotlin-bom: 2.1.0 +- org.junit-pioneer:junit-pioneer: 2.3.0 +- org.junit:junit-bom: 5.11.2 +- org.junit:junit-bom: 5.11.3 +- org.junit:junit-bom: 5.11.4 +- org.mockito:mockito-core: 5.14.2 +- org.mockito:mockito-junit-jupiter: 5.14.2 +- org.postgresql:postgresql: 42.7.4 +- org.scala-lang:scala-library: 2.13.15 +- org.testcontainers:junit-jupiter: 1.20.2 +- org.testcontainers:junit-jupiter: 1.20.4 +- org.testcontainers:postgresql: 1.20.2 +- org.testcontainers:postgresql: 1.20.4 +- org.testcontainers:testcontainers: 1.20.2 +- org.testcontainers:testcontainers: 1.20.4 +- org.yaml:snakeyaml: 2.3 + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/beige-suits-train.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/beige-suits-train.md new file mode 100644 index 0000000..181c064 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/beige-suits-train.md @@ -0,0 +1,20 @@ +--- +"reactivewizard-parent": dependency +--- +- com.github.jnr:jnr-posix: 3.1.20 +- io.swagger.core.v3:swagger-annotations: 2.2.27 +- net.bytebuddy:byte-buddy: 1.15.11 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-jul: 2.24.3 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-api: 2.24.3 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.3 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.3 +- org.hibernate.validator:hibernate-validator: 8.0.2.Final +- org.junit:junit-bom: 5.11.4 +- com.google.guava:guava: 33.4.0-jre +- io.projectreactor:reactor-bom: 2024.0.1 +- io.zipkin.reporter2:zipkin-reporter: 3.4.3 +- io.micrometer:micrometer-observation: 1.14.2 +- io.opentelemetry:opentelemetry-bom: 1.45.0 +- org.apache.commons:commons-text: 1.13.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/better-buses-warn.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/better-buses-warn.md new file mode 100644 index 0000000..74f4f93 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/better-buses-warn.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": patch +--- + +* Info-logging when trying to create a consumer and the Kafka client is disabled, +to let the developer know that a consumer wont be created. + +* Confusing 'Listener with suffix ... subscribed to topics ...' Info-log is no longer logging when Kafka client +is disabled because there is no actual subscription when the Kafka client is disabled. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/brave-dolls-mate.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/brave-dolls-mate.md new file mode 100644 index 0000000..ea5bcaa --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/brave-dolls-mate.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Configure blockhound to ignore getLogger as a blocking call. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/calm-flies-wink.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/calm-flies-wink.md new file mode 100644 index 0000000..3f2d211 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/calm-flies-wink.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": patch +--- + +Refactored EventListenerImpl in preparation of having listeners accept messages as a Flux/Mono. An interim MessageToEvent class was created to abstract the +conversion of messages to events. The change is internal to Reactive Wizard and should not affect any existing code. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/chatty-rockets-smash.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/chatty-rockets-smash.md new file mode 100644 index 0000000..a43ea7b --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/chatty-rockets-smash.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +Downgraded micrometer-observation as reactor-kafka doesn't align versions with reactor-core-micrometer. Until +https://github.com/reactor/reactor-kafka/issues/395 we will also have micrometer-observation disabled in our +renovate configuration. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/clear-bikes-hide.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/clear-bikes-hide.md new file mode 100644 index 0000000..9c7ec23 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/clear-bikes-hide.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": patch +--- + +Tests have been updated to use our standard, configured, ObjectMapper instead of using partially (or not at all) configured ObjectMapper instances. This +applies in particular use of constructors annotated with @Inject. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/cuddly-ends-read.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/cuddly-ends-read.md new file mode 100644 index 0000000..344e4cd --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/cuddly-ends-read.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": minor +--- + +Kafka messages transporting events have now been extended with an additional header of key `fnxtype`. The value is a copy of the `type` property from +the event. In the case where a `type` property is not found the header will have a null value. The prefix `fnx` is used to avoid potential future conflicts with +other headers. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/eager-apes-arrive.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/eager-apes-arrive.md new file mode 100644 index 0000000..80f5e07 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/eager-apes-arrive.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": minor +--- + +PlaywrightStoryReporter has been modified to work with JBehaves (see PLAT-3720). +In addition a configuration property saveTraces can be set to either none, failed (default) or all to determine when traces should be saved. +This should be set in the configuration that is used during testing, not the production one. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/free-falcons-do.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/free-falcons-do.md new file mode 100644 index 0000000..d410cb4 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/free-falcons-do.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +Added createPage(BrowserContext) that creates a page from the given context. The default page is also created from the BrowserContext API instead of the Page API. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-regions-joke.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-regions-joke.md new file mode 100644 index 0000000..24c2765 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-regions-joke.md @@ -0,0 +1,34 @@ +--- +"reactivewizard-parent": dependency +--- + +- io.swagger.core.v3:swagger-annotations: 2.2.26 +- org.bouncycastle:bcpkix-jdk18on: 1.79 +- net.bytebuddy:byte-buddy: 1.15.10 +- com.mattbertolini:liquibase-slf4j: 5.1.0 +- io.github.classgraph:classgraph: 4.8.179 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-jul: 2.24.2 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-api: 2.24.2 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.2 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.2 +- org.junit:junit-bom: 5.11.3 +- com.fasterxml.jackson:jackson-bom: 2.18.2 +- com.microsoft.playwright:playwright: 1.49.0 +- io.zipkin.zipkin2:zipkin: 3.4.3 +- ch.qos.logback:logback-classic: 1.5.12 +- ch.qos.logback:logback-core: 1.5.12 +- io.opentelemetry:opentelemetry-bom: 1.44.1 +- org.jetbrains.kotlin:kotlin-bom: 2.1.0 +- com.github.luben:zstd-jni: 1.5.6-8 +- org.bouncycastle:bcprov-jdk18on: 1.79 +- com.google.errorprone:error_prone_annotations: 2.36.0 +- io.lettuce:lettuce-core: 6.5.1.RELEASE +- org.checkerframework:checker-qual: 3.48.3 +- io.dropwizard.metrics:metrics-caffeine: 4.2.29 +- io.dropwizard.metrics:metrics-core: 4.2.29 +- commons-io:commons-io: 2.18.0 +- org.testcontainers:junit-jupiter: 1.20.4 +- org.testcontainers:testcontainers: 1.20.4 +- org.testcontainers:postgresql: 1.20.4 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-schools-hammer.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-schools-hammer.md new file mode 100644 index 0000000..7dc7d34 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/giant-schools-hammer.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Improved RWStory to support Timescale-only service testing diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/good-birds-ring.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/good-birds-ring.md new file mode 100644 index 0000000..19af299 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/good-birds-ring.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": minor +--- + +Added metrics to event publisher to investigate how often the auth is lost during a +distributed chain of calls that results in events. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/kind-eggs-wave.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/kind-eggs-wave.md new file mode 100644 index 0000000..3be3fe7 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/kind-eggs-wave.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +TransactionEventPublisherImpl now adds an eventId header in every published event. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/loud-wombats-matter.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/loud-wombats-matter.md new file mode 100644 index 0000000..ccd5303 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/loud-wombats-matter.md @@ -0,0 +1,8 @@ +--- +"reactivewizard-parent": patch +--- + +Suppressing CVE-2024-31141 (vulnerability in the Kafka client lib). The vulnerability does not +affect any Reactive Wizard services. This vulnerability is patched in 3.8.0, but we should avoid +upgrading the client library to a version greater than what the Kafka server is running on (3.5.2), +thus the suppression. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-taxis-agree.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-taxis-agree.md new file mode 100644 index 0000000..29ae5fe --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-taxis-agree.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +* Added PlaywrightTracingHooks that starts and stops tracing each scenario. Failed scenarios are saved in `LaunchOptions::tracesDir`. +* LaunchOptions::tracesDir config is now set to `./target/traces` by default. If explicitly set to null then PlaywrightTracingHooks will not trace. +* PlaywrightTracingHooks can be turned off by setting the system property `enablePlaywrightTracingHooks` to `false`. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-webs-travel.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-webs-travel.md new file mode 100644 index 0000000..2d746d1 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/many-webs-travel.md @@ -0,0 +1,6 @@ +--- +"reactivewizard-parent": major +--- + +In addition to moving our open source edition of [Reactive Wizard](https://github.com/FortnoxAB/reactive-wizard) we have also adopted semantic versioning +to our releases. This means that we will now be able to communicate the impact of changes in our releases more clearly. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/nasty-hotels-bet.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/nasty-hotels-bet.md new file mode 100644 index 0000000..3029d2f --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/nasty-hotels-bet.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- +Upgraded Netty to 4.1.115 to patch vulnerability with unsafe reading of environment files(see CVE-2024-47535 for more info.). +This vulnerability does not affect Reactive Wizard services. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/old-results-wait.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/old-results-wait.md new file mode 100644 index 0000000..35bef2c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/old-results-wait.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": minor +--- + +Made EventListenerImpl aware of the `fnxtype` header in order to exit event handler dispatching early if the event type is not of interest to the listener. We +fall back to deserializing the body if the `fnxtype` header is not present and matching on the event `type` property. In addition we have introduced two new +Prometheus metrics (`event_type_selection_duration_seconds`, `event_type_selection_duration_seconds_count`) to track the adoption and efficiency of the +new feature. Labels for topic and type are included in addition to the boolean `header` label to indicate the source of the event type. + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/polite-nails-end.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/polite-nails-end.md new file mode 100644 index 0000000..3d721e3 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/polite-nails-end.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +JsonDeserializerFactory has been extended with createJsonNodeMapper which can map a Jackson JsonNode to a bean diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/pretty-animals-poke.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/pretty-animals-poke.md new file mode 100644 index 0000000..0d66e72 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/pretty-animals-poke.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added support for JAX-RS PATCH, alongside existing RW PATCH diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/quiet-signs-clean.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/quiet-signs-clean.md new file mode 100644 index 0000000..a1903dc --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/quiet-signs-clean.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Dummy changeset to release a new patch version. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sad-regions-jump.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sad-regions-jump.md new file mode 100644 index 0000000..ffa2e5b --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sad-regions-jump.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Use `testcontainers-bom`, instead of individual package versions. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-parents-film.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-parents-film.md new file mode 100644 index 0000000..3874e62 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-parents-film.md @@ -0,0 +1,61 @@ +--- +"reactivewizard-parent": dependency +--- + +- maven: 3.9.9 +- io.swagger.core.v3:swagger-annotations: 2.2.25 +- jakarta.inject:jakarta.inject-api: 2.0.1.MR +- net.bytebuddy:byte-buddy: 1.15.5 +- org.awaitility:awaitility: 4.2.2 +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound: 1.0.10.RELEASE +- io.github.classgraph:classgraph: 4.8.177 +- org.mockito:mockito-junit-jupiter: 5.14.2 +- org.mockito:mockito-core: 5.14.2 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-jul: 2.24.1 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-api: 2.24.1 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.1 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.1 +- org.yaml:snakeyaml: 2.3 +- org.junit:junit-bom: 5.11.2 +- com.google.guava:guava: 33.3.1-jre +- com.fasterxml.jackson:jackson-bom: 2.18.0 +- io.netty:netty-bom: 4.1.114.Final +- io.projectreactor:reactor-bom: 2023.0.11 +- com.microsoft.playwright:playwright: 1.48.0 +- io.zipkin.reporter2:zipkin-reporter: 3.4.2 +- io.zipkin.zipkin2:zipkin: 3.4.2 +- ch.qos.logback:logback-classic: 1.5.11 +- ch.qos.logback:logback-core: 1.5.11 +- io.micrometer:micrometer-observation: 1.13.6 +- io.opentelemetry:opentelemetry-bom: 1.43.0 +- org.jetbrains.kotlin:kotlin-bom: 2.0.21 +- org.junit-pioneer:junit-pioneer: 2.3.0 +- com.github.luben:zstd-jni: 1.5.6-6 +- org.apache.commons:commons-text: 1.12.0 +- org.scala-lang:scala-library: 2.13.15 +- org.apache.maven.shared:maven-invoker: 3.3.0 +- com.google.code.gson:gson: 2.11.0 +- org.apache.commons:commons-csv: 1.12.0 +- com.google.errorprone:error_prone_annotations: 2.33.0 +- io.lettuce:lettuce-core: 6.4.0.RELEASE +- org.apache.commons:commons-lang3: 3.17.0 +- org.postgresql:postgresql: 42.7.4 +- org.checkerframework:checker-qual: 3.48.1 +- commons-codec:commons-codec: 1.17.1 +- io.dropwizard.metrics:metrics-caffeine: 4.2.28 +- io.dropwizard.metrics:metrics-core: 4.2.28 +- io.cucumber:cucumber-junit-platform-engine: 7.20.1 +- io.cucumber:cucumber-guice: 7.20.1 +- io.cucumber:cucumber-java: 7.20.1 +- io.cucumber:cucumber-java8: 7.20.1 +- io.cucumber:cucumber-junit: 7.20.1 +- org.codehaus.plexus:plexus-utils: 4.0.2 +- commons-io:commons-io: 2.17.0 +- org.testcontainers:junit-jupiter: 1.20.2 +- org.testcontainers:testcontainers: 1.20.2 +- org.testcontainers:postgresql: 1.20.2 +- com.fortnox.maven:parent-pom: 21.14 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-views-deny.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-views-deny.md new file mode 100644 index 0000000..939a84c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/shy-views-deny.md @@ -0,0 +1,7 @@ +--- +"reactivewizard-parent": patch +--- + +The metric "event_deserialization_duration_seconds" has been introduced to gather more insights about our event consumption, deserialization and execution +against event handlers. The +granularity is at topic and type level and is currently measured before topic and type filtering (which is a target for future improvements). diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/six-guests-bet.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/six-guests-bet.md new file mode 100644 index 0000000..fff9b04 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/six-guests-bet.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added more sql statement debug logs. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/small-cloths-throw.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/small-cloths-throw.md new file mode 100644 index 0000000..fc2f084 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/small-cloths-throw.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Adding CVE-2024-56128 to the CVE supression list. \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/social-hats-mix.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/social-hats-mix.md new file mode 100644 index 0000000..44da871 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/social-hats-mix.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- io.projectreactor:reactor-bom: 2024.0.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/some-parts-study.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/some-parts-study.md new file mode 100644 index 0000000..d7da64c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/some-parts-study.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": minor +--- + +Added Metrics.name() method to more easily label named metrics. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/strong-seals-vanish.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/strong-seals-vanish.md new file mode 100644 index 0000000..6ca903c --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/strong-seals-vanish.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- com.google.errorprone:error_prone_annotations: 2.34.0 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sweet-roses-lick.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sweet-roses-lick.md new file mode 100644 index 0000000..e5f0db9 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/sweet-roses-lick.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": patch +--- + +Added event IDs to events published by EventPublisherImpl. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-hoops-hope.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-hoops-hope.md new file mode 100644 index 0000000..b380cad --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-hoops-hope.md @@ -0,0 +1,5 @@ +--- +"reactivewizard-parent": dependency +--- + +- com.zaxxer:HikariCP: 6.2.1 diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-snails-mate.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-snails-mate.md new file mode 100644 index 0000000..930513a --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-snails-mate.md @@ -0,0 +1,9 @@ +--- +"reactivewizard-parent": patch +--- + +Fixed a typographical error in the RuntimeException message thrown by `ParameterizedQuery::getDynamicQueryPart`. The corrected message now reads: `Query contains placeholder "??" but the method does not have such an argument.` + + + + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-spies-return.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-spies-return.md new file mode 100644 index 0000000..239e891 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/three-spies-return.md @@ -0,0 +1,14 @@ +--- +"reactivewizard-parent": patch +--- + +Implemented testIdAttributeName config in PlaywrightConfig. You can now configure the test-id attribute name +that Playwright will search for in a tag using testIdAttributeName under the playwright config in config.yml. +This makes it easy to switch to the attribute name "data-test-id". Example: + +```yaml +playwright: + browser: chrome + testIdAttributeName: "data-test-id" + ... +``` \ No newline at end of file diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/two-lemons-arrive.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/two-lemons-arrive.md new file mode 100644 index 0000000..8e81ea1 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/two-lemons-arrive.md @@ -0,0 +1,10 @@ +--- +"reactivewizard-parent": minor +--- + +Jackson dependencies have been removed from our reactivewizard-dates module. Dependent classes have been moved to the new reactivewizard-jackson module: + +- com.fortnox.reactivewizard.dates.RWDateFormat + +If reactivewizard-dates was previously used as a dependency to access RWDateFormat then you will need to change that dependency to reactivewizard-jackson, in +all other cases it should be included transitively via reactivewizard-core. diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/young-hoops-lead.md b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/young-hoops-lead.md new file mode 100644 index 0000000..d15f37a --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/.changeset/young-hoops-lead.md @@ -0,0 +1,8 @@ +--- +"reactivewizard-parent": patch +--- + +We now have a common dependency for Jackson-related classes and configuration. This module provides a single point of configuration for an `ObjectMapper` (via +the `StandardObjectMapperFactory` class) that is suitable for HTTP request/response and event serialization/deserialization. This ensures that the +`ObjectMapper` is configured consistently across the application. Previously, this was set up in the `reactivewizard-core` module via FnxJaxRsModule. + diff --git a/changesets-java/src/test/resources/changesets/reactive-wizard/CHANGELOG-expected.md b/changesets-java/src/test/resources/changesets/reactive-wizard/CHANGELOG-expected.md new file mode 100644 index 0000000..0baefa9 --- /dev/null +++ b/changesets-java/src/test/resources/changesets/reactive-wizard/CHANGELOG-expected.md @@ -0,0 +1,197 @@ +# reactivewizard-parent + +## 26.0.0 + +### Major Changes + +- In addition to moving our open source edition of [Reactive Wizard](https://github.com/FortnoxAB/reactive-wizard) we + have also adopted semantic versioning to our releases. This means that we will now be able to communicate the impact + of changes in our releases more clearly. + +### Minor Changes + +- Added Metrics.name() method to more easily label named metrics. +- Added createPage(BrowserContext) that creates a page from the given context. The default page is also created from the + BrowserContext API instead of the Page API. +- Added metrics to event publisher to investigate how often the auth is lost during a distributed chain of calls that + results in events. +- Jackson dependencies have been removed from our reactivewizard-dates module. Dependent classes have been moved to the + new reactivewizard-jackson module: + - com.fortnox.reactivewizard.dates.RWDateFormat + + If reactivewizard-dates was previously used as a dependency to access RWDateFormat then you will need to change that + dependency to reactivewizard-jackson, in all other cases it should be included transitively via reactivewizard-core. +- JsonDeserializerFactory has been extended with createJsonNodeMapper which can map a Jackson JsonNode to a bean +- Kafka messages transporting events have now been extended with an additional header of key `fnxtype`. The value is a + copy of the `type` property from the event. In the case where a `type` property is not found the header will have a + null value. The prefix `fnx` is used to avoid potential future conflicts with other headers. +- Made EventListenerImpl aware of the `fnxtype` header in order to exit event handler dispatching early if the event + type is not of interest to the listener. We fall back to deserializing the body if the `fnxtype` header is not present + and matching on the event `type` property. In addition we have introduced two new Prometheus metrics + (`event_type_selection_duration_seconds`, `event_type_selection_duration_seconds_count`) to track the adoption and + efficiency of the new feature. Labels for topic and type are included in addition to the boolean `header` label to + indicate the source of the event type. +- PlaywrightStoryReporter has been modified to work with JBehaves (see PLAT-3720). In addition a configuration property + saveTraces can be set to either none, failed (default) or all to determine when traces should be saved. This should be + set in the configuration that is used during testing, not the production one. + +### Patch Changes + +- * Added PlaywrightTracingHooks that starts and stops tracing each scenario. Failed scenarios are saved in + `LaunchOptions::tracesDir`. + * LaunchOptions::tracesDir config is now set to `./target/traces` by default. If explicitly set to null then + PlaywrightTracingHooks will not trace. + * PlaywrightTracingHooks can be turned off by setting the system property `enablePlaywrightTracingHooks` to `false`. +- * Info-logging when trying to create a consumer and the Kafka client is disabled, to let the developer know that a + consumer wont be created. + * Confusing 'Listener with suffix ... subscribed to topics ...' Info-log is no longer logging when Kafka client is + disabled because there is no actual subscription when the Kafka client is disabled. +- Added event IDs to events published by EventPublisherImpl. +- Added more sql statement debug logs. +- Added support for JAX-RS PATCH, alongside existing RW PATCH +- Adding CVE-2024-56128 to the CVE supression list. +- Configure blockhound to ignore getLogger as a blocking call. +- Downgraded micrometer-observation as reactor-kafka doesn't align versions with reactor-core-micrometer. Until + https://github.com/reactor/reactor-kafka/issues/395 we will also have micrometer-observation disabled in our renovate + configuration. +- Dummy changeset to release a new patch version. +- Fixed a typographical error in the RuntimeException message thrown by `ParameterizedQuery::getDynamicQueryPart`. The + corrected message now reads: `Query contains placeholder "??" but the method does not have such an argument.` +- Implemented testIdAttributeName config in PlaywrightConfig. You can now configure the test-id attribute name that + Playwright will search for in a tag using testIdAttributeName under the playwright config in config.yml. This makes it + easy to switch to the attribute name "data-test-id". Example: + + ```yaml + playwright: + browser: chrome + testIdAttributeName: "data-test-id" + ... + ``` +- Improved RWStory to support Timescale-only service testing +- Refactored EventListenerImpl in preparation of having listeners accept messages as a Flux/Mono. An interim + MessageToEvent class was created to abstract the conversion of messages to events. The change is internal to Reactive + Wizard and should not affect any existing code. +- Suppressing CVE-2024-31141 (vulnerability in the Kafka client lib). The vulnerability does not affect any Reactive + Wizard services. This vulnerability is patched in 3.8.0, but we should avoid upgrading the client library to a version + greater than what the Kafka server is running on (3.5.2), thus the suppression. +- Tests have been updated to use our standard, configured, ObjectMapper instead of using partially (or not at all) + configured ObjectMapper instances. This applies in particular use of constructors annotated with @Inject. +- The metric "event_deserialization_duration_seconds" has been introduced to gather more insights about our event + consumption, deserialization and execution against event handlers. The granularity is at topic and type level and is + currently measured before topic and type filtering (which is a target for future improvements). +- TransactionEventPublisherImpl now adds an eventId header in every published event. +- Upgraded Netty to 4.1.115 to patch vulnerability with unsafe reading of environment files(see CVE-2024-47535 for more + info.). This vulnerability does not affect Reactive Wizard services. +- Use `testcontainers-bom`, instead of individual package versions. +- We now have a common dependency for Jackson-related classes and configuration. This module provides a single point of + configuration for an `ObjectMapper` (via the `StandardObjectMapperFactory` class) that is suitable for HTTP + request/response and event serialization/deserialization. This ensures that the `ObjectMapper` is configured + consistently across the application. Previously, this was set up in the `reactivewizard-core` module via + FnxJaxRsModule. + +### Dependency Updates + +- ch.qos.logback:logback-classic: 1.5.11 +- ch.qos.logback:logback-classic: 1.5.12 +- ch.qos.logback:logback-core: 1.5.11 +- ch.qos.logback:logback-core: 1.5.12 +- com.fasterxml.jackson:jackson-bom: 2.18.0 +- com.fasterxml.jackson:jackson-bom: 2.18.2 +- com.fortnox.maven:parent-pom: 21.14 +- com.github.jnr:jnr-posix: 3.1.20 +- com.github.luben:zstd-jni: 1.5.6-6 +- com.github.luben:zstd-jni: 1.5.6-8 +- com.google.code.gson:gson: 2.11.0 +- com.google.errorprone:error_prone_annotations: 2.33.0 +- com.google.errorprone:error_prone_annotations: 2.34.0 +- com.google.errorprone:error_prone_annotations: 2.36.0 +- com.google.guava:guava: 33.3.1-jre +- com.google.guava:guava: 33.4.0-jre +- com.mattbertolini:liquibase-slf4j: 5.1.0 +- com.microsoft.playwright:playwright: 1.48.0 +- com.microsoft.playwright:playwright: 1.49.0 +- com.zaxxer:HikariCP: 6.2.1 +- commons-codec:commons-codec: 1.17.1 +- commons-io:commons-io: 2.17.0 +- commons-io:commons-io: 2.18.0 +- io.cucumber:cucumber-guice: 7.20.1 +- io.cucumber:cucumber-java8: 7.20.1 +- io.cucumber:cucumber-java: 7.20.1 +- io.cucumber:cucumber-junit-platform-engine: 7.20.1 +- io.cucumber:cucumber-junit: 7.20.1 +- io.dropwizard.metrics:metrics-caffeine: 4.2.28 +- io.dropwizard.metrics:metrics-caffeine: 4.2.29 +- io.dropwizard.metrics:metrics-core: 4.2.28 +- io.dropwizard.metrics:metrics-core: 4.2.29 +- io.github.classgraph:classgraph: 4.8.177 +- io.github.classgraph:classgraph: 4.8.179 +- io.lettuce:lettuce-core: 6.4.0.RELEASE +- io.lettuce:lettuce-core: 6.5.1.RELEASE +- io.micrometer:micrometer-observation: 1.13.6 +- io.micrometer:micrometer-observation: 1.14.2 +- io.netty:netty-bom: 4.1.114.Final +- io.opentelemetry:opentelemetry-bom: 1.43.0 +- io.opentelemetry:opentelemetry-bom: 1.44.1 +- io.opentelemetry:opentelemetry-bom: 1.45.0 +- io.projectreactor.tools:blockhound-junit-platform: 1.0.10.RELEASE +- io.projectreactor.tools:blockhound: 1.0.10.RELEASE +- io.projectreactor:reactor-bom: 2023.0.11 +- io.projectreactor:reactor-bom: 2024.0.0 +- io.projectreactor:reactor-bom: 2024.0.1 +- io.swagger.core.v3:swagger-annotations: 2.2.25 +- io.swagger.core.v3:swagger-annotations: 2.2.26 +- io.swagger.core.v3:swagger-annotations: 2.2.27 +- io.zipkin.reporter2:zipkin-reporter: 3.4.2 +- io.zipkin.reporter2:zipkin-reporter: 3.4.3 +- io.zipkin.zipkin2:zipkin: 3.4.2 +- io.zipkin.zipkin2:zipkin: 3.4.3 +- jakarta.inject:jakarta.inject-api: 2.0.1.MR +- maven: 3.9.9 +- net.bytebuddy:byte-buddy: 1.15.10 +- net.bytebuddy:byte-buddy: 1.15.11 +- net.bytebuddy:byte-buddy: 1.15.5 +- org.apache.commons:commons-csv: 1.12.0 +- org.apache.commons:commons-lang3: 3.17.0 +- org.apache.commons:commons-text: 1.12.0 +- org.apache.commons:commons-text: 1.13.0 +- org.apache.logging.log4j:log4j-api: 2.24.1 +- org.apache.logging.log4j:log4j-api: 2.24.2 +- org.apache.logging.log4j:log4j-api: 2.24.3 +- org.apache.logging.log4j:log4j-core: 2.24.1 +- org.apache.logging.log4j:log4j-core: 2.24.2 +- org.apache.logging.log4j:log4j-core: 2.24.3 +- org.apache.logging.log4j:log4j-jul: 2.24.1 +- org.apache.logging.log4j:log4j-jul: 2.24.2 +- org.apache.logging.log4j:log4j-jul: 2.24.3 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.1 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.2 +- org.apache.logging.log4j:log4j-layout-template-json: 2.24.3 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.1 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.2 +- org.apache.logging.log4j:log4j-slf4j2-impl: 2.24.3 +- org.apache.maven.shared:maven-invoker: 3.3.0 +- org.awaitility:awaitility: 4.2.2 +- org.bouncycastle:bcpkix-jdk18on: 1.79 +- org.bouncycastle:bcprov-jdk18on: 1.79 +- org.checkerframework:checker-qual: 3.48.1 +- org.checkerframework:checker-qual: 3.48.3 +- org.codehaus.plexus:plexus-utils: 4.0.2 +- org.hibernate.validator:hibernate-validator: 8.0.2.Final +- org.jetbrains.kotlin:kotlin-bom: 2.0.21 +- org.jetbrains.kotlin:kotlin-bom: 2.1.0 +- org.junit-pioneer:junit-pioneer: 2.3.0 +- org.junit:junit-bom: 5.11.2 +- org.junit:junit-bom: 5.11.3 +- org.junit:junit-bom: 5.11.4 +- org.mockito:mockito-core: 5.14.2 +- org.mockito:mockito-junit-jupiter: 5.14.2 +- org.postgresql:postgresql: 42.7.4 +- org.scala-lang:scala-library: 2.13.15 +- org.testcontainers:junit-jupiter: 1.20.2 +- org.testcontainers:junit-jupiter: 1.20.4 +- org.testcontainers:postgresql: 1.20.2 +- org.testcontainers:postgresql: 1.20.4 +- org.testcontainers:testcontainers: 1.20.2 +- org.testcontainers:testcontainers: 1.20.4 +- org.yaml:snakeyaml: 2.3 + diff --git a/changesets-java/src/test/resources/markdown-tests/formatter.expected.md b/changesets-java/src/test/resources/markdown-tests/formatter.expected.md index c09b101..2f79523 100644 --- a/changesets-java/src/test/resources/markdown-tests/formatter.expected.md +++ b/changesets-java/src/test/resources/markdown-tests/formatter.expected.md @@ -10,7 +10,9 @@ - Sub bullet - Sub bullet 3 - Third bullet -- First line Second line Third line +- First line + Second line + Third line - Hello friend - One line diff --git a/changesets-java/src/test/resources/markdown-tests/formatter.original.md b/changesets-java/src/test/resources/markdown-tests/formatter.original.md index 5906ee6..effad5c 100644 --- a/changesets-java/src/test/resources/markdown-tests/formatter.original.md +++ b/changesets-java/src/test/resources/markdown-tests/formatter.original.md @@ -10,9 +10,9 @@ - Sub bullet - Sub bullet 3 - Third bullet -- First line - Second line - Third line +- First line + Second line + Third line - Hello friend - One line