You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2024/11/29 21:30:15 UTC
(cxf) branch 4.0.x-fixes updated (d37f10c812 -> c2a08679ba)
This is an automated email from the ASF dual-hosted git repository.
reta pushed a change to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
from d37f10c812 Recording .gitmergeinfo Changes
new 1a6bce8f54 Bump github/codeql-action from 3.27.4 to 3.27.5 (#2164)
new 61a5492076 Bump com.googlecode.maven-download-plugin:download-maven-plugin (#2165)
new 781e125563 Bump org.hsqldb:hsqldb from 2.7.3 to 2.7.4 (#2167)
new 594fb94723 Bump io.reactivex.rxjava3:rxjava from 3.1.9 to 3.1.10 (#2170)
new 2b732da16e Bump org.jruby:jruby from 9.4.8.0 to 9.4.9.0 (#2169)
new 57a798efac Bump cxf.dropwizard4.version from 4.2.28 to 4.2.29 (#2171)
new b4159d0a88 Bump org.cyclonedx:cyclonedx-maven-plugin from 2.9.0 to 2.9.1 (#2173)
new a611a576ec Bump org.apache.felix:maven-bundle-plugin from 5.1.9 to 6.0.0 (#2172)
new 7835efcb73 CXF-8931: HttpClientHTTPConduit can't disable the http chunk mode (#2018)
new c2a08679ba Recording .gitmergeinfo Changes
The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/codeql-analysis.yml | 4 +-
.gitmergeinfo | 9 +
distribution/src/main/release/samples/pom.xml | 2 +-
.../release/samples/ruby_spring_support/pom.xml | 2 +-
parent/pom.xml | 6 +-
pom.xml | 4 +-
rt/transports/http/pom.xml | 2 +-
.../cxf/transport/http/HttpClientHTTPConduit.java | 214 ++++++++++++++++++---
.../org/apache/cxf/systest}/jaxrs/FileStore.java | 34 ++--
.../apache/cxf/systest}/jaxrs/FileStoreServer.java | 4 +-
.../systest/jaxrs/JAXRSClientChunkingTest.java} | 37 +---
11 files changed, 225 insertions(+), 93 deletions(-)
copy systests/{transport-hc5/src/test/java/org/apache/cxf/systest/hc5 => transports/src/test/java/org/apache/cxf/systest}/jaxrs/FileStore.java (81%)
copy systests/{transport-hc5/src/test/java/org/apache/cxf/systest/hc5 => transports/src/test/java/org/apache/cxf/systest}/jaxrs/FileStoreServer.java (97%)
copy systests/{transport-hc5/src/test/java/org/apache/cxf/systest/hc5/jaxrs/JAXRSAsyncClientChunkingTest.java => transports/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientChunkingTest.java} (74%)
(cxf) 06/10: Bump cxf.dropwizard4.version from 4.2.28 to 4.2.29 (#2171)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 57a798efacc73ff15d02e7295b83681787bde76d
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Thu Nov 28 07:11:18 2024 +0200
Bump cxf.dropwizard4.version from 4.2.28 to 4.2.29 (#2171)
Bumps `cxf.dropwizard4.version` from 4.2.28 to 4.2.29.
Updates `io.dropwizard.metrics:metrics-core` from 4.2.28 to 4.2.29
- [Release notes](https://github.com/dropwizard/metrics/releases)
- [Commits](https://github.com/dropwizard/metrics/compare/v4.2.28...v4.2.29)
Updates `io.dropwizard.metrics:metrics-jmx` from 4.2.28 to 4.2.29
- [Release notes](https://github.com/dropwizard/metrics/releases)
- [Commits](https://github.com/dropwizard/metrics/compare/v4.2.28...v4.2.29)
---
updated-dependencies:
- dependency-name: io.dropwizard.metrics:metrics-core
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: io.dropwizard.metrics:metrics-jmx
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit 09febaa913ddd26928da9d743569639b8be059e5)
---
parent/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/parent/pom.xml b/parent/pom.xml
index 3075c79d5a..b07ea8fd6e 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -110,7 +110,7 @@
<cxf.derby.version>10.16.1.1</cxf.derby.version>
<cxf.dom4j.version>2.1.4</cxf.dom4j.version>
<cxf.dropwizard3.version>3.2.6</cxf.dropwizard3.version>
- <cxf.dropwizard4.version>4.2.28</cxf.dropwizard4.version>
+ <cxf.dropwizard4.version>4.2.29</cxf.dropwizard4.version>
<cxf.ehcache3.version>3.10.8</cxf.ehcache3.version>
<cxf.el-api.version>3.0.3</cxf.el-api.version>
<cxf.findbugs.version>3.0.2</cxf.findbugs.version>
(cxf) 02/10: Bump com.googlecode.maven-download-plugin:download-maven-plugin (#2165)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 61a549207679fac35da2838c70e25cbbef04a98f
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Mon Nov 25 13:45:31 2024 -0500
Bump com.googlecode.maven-download-plugin:download-maven-plugin (#2165)
Bumps [com.googlecode.maven-download-plugin:download-maven-plugin](https://github.com/download-maven-plugin/download-maven-plugin) from 1.11.2 to 1.13.0.
- [Release notes](https://github.com/download-maven-plugin/download-maven-plugin/releases)
- [Commits](https://github.com/download-maven-plugin/download-maven-plugin/compare/1.11.2...1.13.0)
---
updated-dependencies:
- dependency-name: com.googlecode.maven-download-plugin:download-maven-plugin
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit adea7df72b901f087535e8ea56ccfde4714544c8)
---
rt/transports/http/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rt/transports/http/pom.xml b/rt/transports/http/pom.xml
index 59dd28b8f3..dda72293f7 100644
--- a/rt/transports/http/pom.xml
+++ b/rt/transports/http/pom.xml
@@ -160,7 +160,7 @@
<plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
- <version>1.11.2</version>
+ <version>1.13.0</version>
<executions>
<execution>
<id>download-public-suffix-list</id>
(cxf) 05/10: Bump org.jruby:jruby from 9.4.8.0 to 9.4.9.0 (#2169)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 2b732da16eff7f530633121a654d78f087a286ee
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Wed Nov 27 17:10:35 2024 -0500
Bump org.jruby:jruby from 9.4.8.0 to 9.4.9.0 (#2169)
Bumps org.jruby:jruby from 9.4.8.0 to 9.4.9.0.
---
updated-dependencies:
- dependency-name: org.jruby:jruby
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit 1b1024c19f19a23c548e510d528649e549e081e7)
---
distribution/src/main/release/samples/ruby_spring_support/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/distribution/src/main/release/samples/ruby_spring_support/pom.xml b/distribution/src/main/release/samples/ruby_spring_support/pom.xml
index 1a6976ee3d..c36ca45357 100644
--- a/distribution/src/main/release/samples/ruby_spring_support/pom.xml
+++ b/distribution/src/main/release/samples/ruby_spring_support/pom.xml
@@ -124,7 +124,7 @@
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby</artifactId>
- <version>9.4.8.0</version>
+ <version>9.4.9.0</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
(cxf) 03/10: Bump org.hsqldb:hsqldb from 2.7.3 to 2.7.4 (#2167)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 781e12556338bae2de81a0b0263c4ff31056134f
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Tue Nov 26 02:21:36 2024 -0500
Bump org.hsqldb:hsqldb from 2.7.3 to 2.7.4 (#2167)
Bumps org.hsqldb:hsqldb from 2.7.3 to 2.7.4.
---
updated-dependencies:
- dependency-name: org.hsqldb:hsqldb
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit 1a19b19ee0e63b60c4d6526afb2bcbe2e3e411ae)
# Conflicts:
# parent/pom.xml
---
parent/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/parent/pom.xml b/parent/pom.xml
index fbee2ce454..6f5e098c25 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -123,7 +123,7 @@
<cxf.hazelcast.version>5.3.8</cxf.hazelcast.version>
<cxf.hibernate.em.version>6.1.7.Final</cxf.hibernate.em.version>
<cxf.hibernate.validator.version>7.0.5.Final</cxf.hibernate.validator.version>
- <cxf.hsqldb.version>2.7.3</cxf.hsqldb.version>
+ <cxf.hsqldb.version>2.7.4</cxf.hsqldb.version>
<cxf.httpcomponents.asyncclient.version.range>[4.0,4.2)</cxf.httpcomponents.asyncclient.version.range>
<cxf.httpcomponents.asyncclient.version>4.1.5</cxf.httpcomponents.asyncclient.version>
<cxf.httpcomponents.client.version>4.5.14</cxf.httpcomponents.client.version>
(cxf) 01/10: Bump github/codeql-action from 3.27.4 to 3.27.5 (#2164)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 1a6bce8f54a7bc0d8609572e40b5d57452819950
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Mon Nov 25 13:45:10 2024 -0500
Bump github/codeql-action from 3.27.4 to 3.27.5 (#2164)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.4 to 3.27.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/ea9e4e37992a54ee68a9622e985e60c8e8f12d9f...f09c1c0a94de965c15400f5634aa42fac8fb8f88)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit cc1ec8854f42aec460c689e8cd972d6d61de664b)
# Conflicts:
# .github/workflows/scorecards.yml
---
.github/workflows/codeql-analysis.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index fb326bad20..3f83f750fe 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -44,7 +44,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
+ uses: github/codeql-action/init@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5
with:
languages: java
#config-file: ./.github/codeql/codeql-cxf-config.yml
@@ -72,4 +72,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@ea9e4e37992a54ee68a9622e985e60c8e8f12d9f # v3.27.4
+ uses: github/codeql-action/analyze@f09c1c0a94de965c15400f5634aa42fac8fb8f88 # v3.27.5
(cxf) 08/10: Bump org.apache.felix:maven-bundle-plugin from 5.1.9 to 6.0.0 (#2172)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit a611a576ec782aed40bda309c307804630b7a694
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Fri Nov 29 09:38:05 2024 +0200
Bump org.apache.felix:maven-bundle-plugin from 5.1.9 to 6.0.0 (#2172)
Bumps org.apache.felix:maven-bundle-plugin from 5.1.9 to 6.0.0.
---
updated-dependencies:
- dependency-name: org.apache.felix:maven-bundle-plugin
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit 123531684c2a6310e931af022b49f041d586d954)
---
distribution/src/main/release/samples/pom.xml | 2 +-
pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/distribution/src/main/release/samples/pom.xml b/distribution/src/main/release/samples/pom.xml
index c678c6367c..34c9432c35 100644
--- a/distribution/src/main/release/samples/pom.xml
+++ b/distribution/src/main/release/samples/pom.xml
@@ -209,7 +209,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
- <version>5.1.9</version>
+ <version>6.0.0</version>
</plugin>
<plugin>
<groupId>org.eclipse.jetty</groupId>
diff --git a/pom.xml b/pom.xml
index 7ec2356284..2b187d834e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -439,7 +439,7 @@
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
- <version>5.1.9</version>
+ <version>6.0.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
(cxf) 09/10: CXF-8931: HttpClientHTTPConduit can't disable the http chunk mode (#2018)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 7835efcb73fa0f9529e57c1ee0d7a87918f1bb2d
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Fri Nov 29 20:11:41 2024 +0100
CXF-8931: HttpClientHTTPConduit can't disable the http chunk mode (#2018)
(cherry picked from commit f8308d42e1bcaedce4d8416cf270919422985133)
---
.../cxf/transport/http/HttpClientHTTPConduit.java | 214 ++++++++++++++++++---
.../org/apache/cxf/systest/jaxrs/FileStore.java | 127 ++++++++++++
.../apache/cxf/systest/jaxrs/FileStoreServer.java | 47 +++++
.../cxf/systest/jaxrs/JAXRSClientChunkingTest.java | 116 +++++++++++
4 files changed, 477 insertions(+), 27 deletions(-)
diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
index a59bc3e6a1..f3190348d9 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
@@ -18,6 +18,9 @@
*/
package org.apache.cxf.transport.http;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -517,11 +520,11 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
static class HttpClientPipedOutputStream extends PipedOutputStream {
HttpClientWrappedOutputStream stream;
HTTPClientPolicy csPolicy;
- HttpClientBodyPublisher publisher;
- HttpClientPipedOutputStream(HttpClientWrappedOutputStream s,
+ CloseableBodyPublisher publisher;
+ HttpClientPipedOutputStream(HttpClientWrappedOutputStream s,
PipedInputStream pin,
HTTPClientPolicy cp,
- HttpClientBodyPublisher bp) throws IOException {
+ CloseableBodyPublisher bp) throws IOException {
super(pin);
stream = s;
csPolicy = cp;
@@ -592,26 +595,27 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
}
}
}
- private static final class InputStreamSupplier implements Supplier<InputStream> {
- final InputStream in;
- InputStreamSupplier(InputStream i) {
- in = i;
- }
- public InputStream get() {
- return in;
- }
+ /**
+ * The interface for {@link BodyPublisher}s that implement {@link Closeable} as well.
+ */
+ private interface CloseableBodyPublisher extends BodyPublisher, Closeable {
}
- private static final class HttpClientBodyPublisher implements BodyPublisher {
- PipedInputStream pin;
- HttpClientWrappedOutputStream stream;
- long contentLen;
+
+ /**
+ * The {@link BodyPublisher} that wraps around the output stream.
+ */
+ private static final class HttpClientBodyPublisher implements CloseableBodyPublisher {
+ private Supplier<InputStream> pin;
+ private HttpClientWrappedOutputStream stream;
+ private long contentLen;
- private HttpClientBodyPublisher(HttpClientWrappedOutputStream s, PipedInputStream pin) {
+ private HttpClientBodyPublisher(HttpClientWrappedOutputStream s, Supplier<InputStream> pin) {
this.stream = s;
this.pin = pin;
}
- synchronized void close() {
+
+ public synchronized void close() {
if (stream != null) {
contentLen = stream.contentLen;
stream = null;
@@ -630,7 +634,7 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
if (stream != null) {
contentLen = stream.contentLen;
}
- BodyPublishers.ofInputStream(new InputStreamSupplier(pin)).subscribe(subscriber);
+ BodyPublishers.ofInputStream(pin).subscribe(subscriber);
stream = null;
pin = null;
return;
@@ -647,7 +651,155 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
return contentLen;
}
}
- class HttpClientWrappedOutputStream extends WrappedOutputStream {
+
+ /**
+ * The {@link BodyPublisher} that awaits for the output stream to be fully flushed (closed)
+ * so the content length becomes known (sized). It is used when the chunked transfer is not allowed
+ * but the content length is not specified up-front.
+ */
+ private static final class HttpClientSizedBodyPublisher implements CloseableBodyPublisher {
+ private HTTPClientPolicy csPolicy;
+ private Supplier<ByteArrayInputStream> pin;
+ private HttpClientWrappedOutputStream stream;
+ private long contentLen;
+
+ private HttpClientSizedBodyPublisher(HttpClientWrappedOutputStream s, HTTPClientPolicy cs,
+ Supplier<ByteArrayInputStream> pin) {
+ this.stream = s;
+ this.csPolicy = cs;
+ this.pin = pin;
+ }
+
+ public synchronized void close() {
+ if (stream != null) {
+ contentLen = stream.contentLen;
+ stream = null;
+ }
+ }
+
+ @Override
+ public synchronized void subscribe(Subscriber<? super ByteBuffer> subscriber) {
+ if (stream != null) {
+ stream.connectionComplete = true;
+ if (stream.pout != null) {
+ synchronized (stream.pout) {
+ stream.pout.notifyAll();
+ }
+
+ BodyPublishers.ofInputStream(pin).subscribe(subscriber);
+ stream = null;
+ pin = null;
+ return;
+ }
+ }
+ BodyPublishers.noBody().subscribe(subscriber);
+ }
+
+ @Override
+ public long contentLength() {
+ if (stream != null && stream.pout != null) {
+ final CloseableByteArrayOutputStream baos = (CloseableByteArrayOutputStream) stream.pout;
+
+ try {
+ synchronized (baos) {
+ if (!baos.closed) {
+ baos.wait(csPolicy.getConnectionTimeout());
+ }
+ }
+ contentLen = (int) baos.size();
+ } catch (InterruptedException e) {
+ //ignore
+ }
+ }
+
+ return contentLen;
+ }
+ }
+
+ /**
+ * The {@link ByteArrayOutputStream} implementation that tracks the closeability state.
+ */
+ private static final class CloseableByteArrayOutputStream extends ByteArrayOutputStream {
+ private boolean closed;
+
+ /**
+ * Creates a new output stream for user data
+ */
+ CloseableByteArrayOutputStream() {
+ super(4096);
+ }
+
+ /**
+ * Writes the specified byte to this output stream.
+ *
+ * @param b the byte to be written.
+ */
+ public synchronized void write(int b) {
+ if (closed) {
+ return;
+ }
+ super.write(b);
+ }
+
+ /**
+ * Writes <code>len</code> bytes from the specified byte array
+ * starting at offset <code>off</code> to this output stream.
+ *
+ * @param b the data.
+ * @param off the start offset in the data.
+ * @param len the number of bytes to write.
+ */
+ public synchronized void write(byte[] b, int off, int len) {
+ if (closed) {
+ return;
+ }
+ super.write(b, off, len);
+ }
+
+ /**
+ * Resets the <code>count</code> field of this output
+ * stream to zero, so that all currently accumulated output in the
+ * output stream is discarded. The output stream can be used again,
+ * reusing the already allocated buffer space. If the output stream
+ * has been closed, then this method has no effect.
+ *
+ * @see java.io.ByteArrayInputStream#count
+ */
+ public synchronized void reset() {
+ if (closed) {
+ return;
+ }
+ super.reset();
+ }
+
+ /**
+ * After close() has been called, it is no longer possible to write
+ * to this stream. Further calls to write will have no effect.
+ */
+ public synchronized void close() throws IOException {
+ closed = true;
+ super.close();
+ notifyAll();
+ }
+
+ /**
+ * Returns new instance of the {@link ByteArrayInputStream} that uses the same underlying buffer as
+ * this stream. The steam must be closed in order to ensure no further modifications could happen.
+ * @return new instance of the {@link ByteArrayInputStream}
+ */
+ public ByteArrayInputStream getInputStream() {
+ if (!closed) {
+ throw new IllegalStateException("The stream is not closed and underlying buffer "
+ + "could still be changed");
+ }
+
+ // Creates new ByteArrayInputStream instance that respects the current state of the buffer
+ // (since ByteArrayInputStream::toByteArray() does array copy).
+ return new ByteArrayInputStream(this.buf, 0, this.count);
+ }
+ }
+
+ class HttpClientWrappedOutputStream extends WrappedOutputStream {
List<Flow.Subscriber<? super ByteBuffer>> subscribers = new LinkedList<>();
CompletableFuture<HttpResponse<InputStream>> future;
@@ -655,8 +807,8 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
int rtimeout;
volatile Throwable exception;
volatile boolean connectionComplete;
- PipedOutputStream pout;
- HttpClientBodyPublisher publisher;
+ OutputStream pout;
+ CloseableBodyPublisher publisher;
HttpRequest request;
@@ -801,12 +953,20 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
contentLen = 0;
}
- final PipedInputStream pin = new PipedInputStream(csPolicy.getChunkLength() <= 0
- ? 4096 : csPolicy.getChunkLength());
-
- this.publisher = new HttpClientBodyPublisher(this, pin);
- if (contentLen != 0) {
- pout = new HttpClientPipedOutputStream(this, pin, csPolicy, publisher);
+ if (csPolicy.isAllowChunking() || contentLen >= 0) {
+ final PipedInputStream pin = new PipedInputStream(csPolicy.getChunkLength() <= 0
+ ? 4096 : csPolicy.getChunkLength());
+ this.publisher = new HttpClientBodyPublisher(this, () -> pin);
+ if (contentLen != 0) {
+ pout = new HttpClientPipedOutputStream(this, pin, csPolicy, publisher);
+ }
+ } else if (contentLen != 0) {
+ // If chunking is not allowed but the contentLen is unknown (-1), we need to
+ // buffer the request body stream until it is fully flushed by the client and only
+ // than send the request.
+ final CloseableByteArrayOutputStream baos = new CloseableByteArrayOutputStream();
+ this.publisher = new HttpClientSizedBodyPublisher(this, csPolicy, baos::getInputStream);
+ pout = baos;
}
HttpRequest.Builder rb = HttpRequest.newBuilder()
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStore.java b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStore.java
new file mode 100644
index 0000000000..fe64e82ffd
--- /dev/null
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStore.java
@@ -0,0 +1,127 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.systest.jaxrs;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import jakarta.activation.DataHandler;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.container.AsyncResponse;
+import jakarta.ws.rs.container.Suspended;
+import jakarta.ws.rs.core.Context;
+import jakarta.ws.rs.core.HttpHeaders;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+import jakarta.ws.rs.core.StreamingOutput;
+import jakarta.ws.rs.core.UriInfo;
+import org.apache.cxf.common.util.StringUtils;
+import org.apache.cxf.helpers.IOUtils;
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;
+
+@Path("/file-store")
+public class FileStore {
+ private final ConcurrentMap<String, byte[]> store = new ConcurrentHashMap<>();
+ @Context private HttpHeaders headers;
+
+ @POST
+ @Path("/stream")
+ @Consumes("*/*")
+ public Response addBook(@QueryParam("chunked") boolean chunked, InputStream in) throws IOException {
+ String transferEncoding = headers.getHeaderString("Transfer-Encoding");
+
+ if (chunked != Objects.equals("chunked", transferEncoding)) {
+ throw new WebApplicationException(Status.EXPECTATION_FAILED);
+ }
+
+ try (in) {
+ if (chunked) {
+ return Response.ok(new StreamingOutput() {
+ @Override
+ public void write(OutputStream out) throws IOException, WebApplicationException {
+ in.transferTo(out);
+ }
+ }).build();
+ } else {
+ // Make sure we have small amount of data for chunking to not kick in
+ final byte[] content = in.readAllBytes();
+ return Response.ok(Arrays.copyOf(content, content.length / 10)).build();
+ }
+ }
+ }
+
+ @POST
+ @Consumes("multipart/form-data")
+ public void addBook(@QueryParam("chunked") boolean chunked,
+ @Suspended final AsyncResponse response, @Context final UriInfo uri, final MultipartBody body) {
+
+ String transferEncoding = headers.getHeaderString("Transfer-Encoding");
+ if (chunked != Objects.equals("chunked", transferEncoding)) {
+ response.resume(Response.status(Status.EXPECTATION_FAILED).build());
+ return;
+ }
+
+ for (final Attachment attachment: body.getAllAttachments()) {
+ final DataHandler handler = attachment.getDataHandler();
+
+ if (handler != null) {
+ final String source = handler.getName();
+ if (StringUtils.isEmpty(source)) {
+ response.resume(Response.status(Status.BAD_REQUEST).build());
+ return;
+ }
+
+ try {
+ if (store.containsKey(source)) {
+ response.resume(Response.status(Status.CONFLICT).build());
+ return;
+ }
+
+ final byte[] content = IOUtils.readBytesFromStream(handler.getInputStream());
+ if (store.putIfAbsent(source, content) != null) {
+ response.resume(Response.status(Status.CONFLICT).build());
+ return;
+ }
+ } catch (final Exception ex) {
+ response.resume(Response.serverError().build());
+ }
+
+ if (response.isSuspended()) {
+ response.resume(Response.created(uri.getRequestUriBuilder().path(source).build())
+ .build());
+ }
+ }
+ }
+
+ if (response.isSuspended()) {
+ response.resume(Response.status(Status.BAD_REQUEST).build());
+ }
+ }
+}
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStoreServer.java b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStoreServer.java
new file mode 100644
index 0000000000..34886256b5
--- /dev/null
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/FileStoreServer.java
@@ -0,0 +1,47 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.systest.jaxrs;
+
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+
+class FileStoreServer extends AbstractBusTestServerBase {
+ private org.apache.cxf.endpoint.Server server;
+ private final String port;
+
+ FileStoreServer(String port) {
+ this.port = port;
+ }
+
+ protected void run() {
+ JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
+ sf.setResourceClasses(FileStore.class);
+ sf.setResourceProvider(FileStore.class, new SingletonResourceProvider(new FileStore(), true));
+ sf.setAddress("http://localhost:" + port);
+ server = sf.create();
+ }
+
+ public void tearDown() throws Exception {
+ server.stop();
+ server.destroy();
+ server = null;
+ }
+}
\ No newline at end of file
diff --git a/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientChunkingTest.java b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientChunkingTest.java
new file mode 100644
index 0000000000..88e9b5d020
--- /dev/null
+++ b/systests/transports/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientChunkingTest.java
@@ -0,0 +1,116 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.systest.jaxrs;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Random;
+
+import jakarta.ws.rs.client.Entity;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.MultivaluedMap;
+import jakarta.ws.rs.core.Response;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.ext.multipart.Attachment;
+import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;
+import org.apache.cxf.jaxrs.impl.MetadataMap;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
+import org.apache.cxf.jaxrs.provider.MultipartProvider;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.not;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+@RunWith(value = org.junit.runners.Parameterized.class)
+public class JAXRSClientChunkingTest extends AbstractBusClientServerTestBase {
+ private static final String PORT = allocatePort(FileStoreServer.class);
+ private final Boolean chunked;
+
+ public JAXRSClientChunkingTest(Boolean chunked) {
+ this.chunked = chunked;
+ }
+
+ @BeforeClass
+ public static void startServers() throws Exception {
+ AbstractResourceInfo.clearAllMaps();
+ assertTrue("server did not launch correctly", launchServer(new FileStoreServer(PORT)));
+ createStaticBus();
+ }
+
+ @Parameters(name = "{0}")
+ public static Collection<Boolean> data() {
+ return Arrays.asList(new Boolean[] {Boolean.FALSE, Boolean.TRUE});
+ }
+
+ @Test
+ public void testMultipartChunking() {
+ final String url = "http://localhost:" + PORT + "/file-store";
+ final WebClient webClient = WebClient.create(url, List.of(new MultipartProvider())).query("chunked", chunked);
+ WebClient.getConfig(webClient).getHttpConduit().getClient().setAllowChunking(chunked);
+
+ try {
+ final String filename = "keymanagers.jks";
+ final MultivaluedMap<String, String> headers = new MetadataMap<>();
+ headers.add("Content-ID", filename);
+ headers.add("Content-Type", "application/binary");
+ headers.add("Content-Disposition", "attachment; filename=" + chunked + "_" + filename);
+ final Attachment att = new Attachment(getClass().getResourceAsStream("/" + filename), headers);
+ final MultipartBody entity = new MultipartBody(att);
+ try (Response response = webClient.header("Content-Type", "multipart/form-data").post(entity)) {
+ assertThat(response.getStatus(), equalTo(201));
+ }
+ } finally {
+ webClient.close();
+ }
+ }
+
+ @Test
+ public void testStreamChunking() throws IOException {
+ final String url = "http://localhost:" + PORT + "/file-store/stream";
+ final WebClient webClient = WebClient.create(url).query("chunked", chunked);
+ WebClient.getConfig(webClient).getHttpConduit().getClient().setAllowChunking(chunked);
+
+ final byte[] bytes = new byte [32 * 1024];
+ final Random random = new Random();
+ random.nextBytes(bytes);
+
+ try (InputStream in = new ByteArrayInputStream(bytes)) {
+ final Entity<InputStream> entity = Entity.entity(in, MediaType.APPLICATION_OCTET_STREAM);
+ try (Response response = webClient.post(entity)) {
+ assertThat(response.getStatus(), equalTo(200));
+ assertThat(response.getHeaderString("Transfer-Encoding"), equalTo(chunked ? "chunked" : null));
+ assertThat(response.getEntity(), not(equalTo(null)));
+ }
+ } finally {
+ webClient.close();
+ }
+ }
+}
(cxf) 04/10: Bump io.reactivex.rxjava3:rxjava from 3.1.9 to 3.1.10 (#2170)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit 594fb9472337be587a572ebfb52b03774816f37b
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Wed Nov 27 17:10:17 2024 -0500
Bump io.reactivex.rxjava3:rxjava from 3.1.9 to 3.1.10 (#2170)
Bumps [io.reactivex.rxjava3:rxjava](https://github.com/ReactiveX/RxJava) from 3.1.9 to 3.1.10.
- [Release notes](https://github.com/ReactiveX/RxJava/releases)
- [Commits](https://github.com/ReactiveX/RxJava/compare/v3.1.9...v3.1.10)
---
updated-dependencies:
- dependency-name: io.reactivex.rxjava3:rxjava
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit b9ca69f82c342875cb9f90c4e838ada259ee407e)
# Conflicts:
# parent/pom.xml
---
parent/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/parent/pom.xml b/parent/pom.xml
index 6f5e098c25..3075c79d5a 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -202,7 +202,7 @@
<cxf.rhino.version>1.7.15</cxf.rhino.version>
<cxf.rxjava.version>1.3.8</cxf.rxjava.version>
<cxf.rxjava2.version>2.2.21</cxf.rxjava2.version>
- <cxf.rxjava3.version>3.1.9</cxf.rxjava3.version>
+ <cxf.rxjava3.version>3.1.10</cxf.rxjava3.version>
<cxf.saaj-impl.version>2.0.1</cxf.saaj-impl.version>
<cxf.servlet-api.artifact>jakarta.servlet-api</cxf.servlet-api.artifact>
<cxf.servlet-api.group>jakarta.servlet</cxf.servlet-api.group>
(cxf) 10/10: Recording .gitmergeinfo Changes
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit c2a08679baf353ddff93f1d9decaa2da14a57e9f
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Fri Nov 29 16:22:33 2024 -0500
Recording .gitmergeinfo Changes
---
.gitmergeinfo | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/.gitmergeinfo b/.gitmergeinfo
index 31bc2e7cd9..432d71b887 100644
--- a/.gitmergeinfo
+++ b/.gitmergeinfo
@@ -10,6 +10,7 @@ M 053d11f2eb99ad0baaafb1ada383d18419d154c7
M 071b5e1cb0621088cf1ea7c2046a7a5d5ea7d1bc
M 087af6c9856a816a88948303527d56380b89bbd9
M 094bdcf3ad075f3c3f901d2977e165f5182808c9
+M 09febaa913ddd26928da9d743569639b8be059e5
M 0a35e128c6986a6c91e89b774b9a13841c397311
M 0b41018fe470b459a01c0ef7c66431d542fc591c
M 0b53df25a3002b972a4cf65b890fa78e1e4989cc
@@ -24,9 +25,11 @@ M 159f0e1eb48d9f185c41b748feb5da92d1d04dcb
M 17d5f097db56b068a73bad99ca210a3c063b0b7a
M 18c8d17917ca884b7c8e4e1b20591ced2366ca38
M 1a194eab65dad8347bb2856fdf62fa3e16d4e251
+M 1a19b19ee0e63b60c4d6526afb2bcbe2e3e411ae
M 1a26597eece270dac44750f7e279bc343789e331
M 1a2e6f2abe74c6fa5589a183e918604ee950851c
M 1aa37ee19b69b96d4d4dd0313f9ea48b130ac586
+M 1b1024c19f19a23c548e510d528649e549e081e7
M 1b1f7cd3e96a2426d6438f55e1df4d83daa4e858
M 1b6075adb08cddb8386b75b388fefe66c6824bfd
M 1cc6c44d80ec8562b8a0810667d2e498f50f94cb
@@ -100,6 +103,7 @@ M 5b95d12519be5d804f89bff8854e40acb0268834
M 5d0af3e1d1b3577dd47604206e01cbf49bad5886
M 5d46f9c9b2e7ba81191385a88a3b8faaaa6cea40
M 5d6c774aedf746bdc3f59250d7f433c377fb233f
+M 5d6f55636df6d5abd747c48ac178cffb3e9a4717
M 5e3ee383e7ebfd2bdd988b2817d3b7f6514a055e
M 60273e60cbd10d75c36aa2dd712d49c04bbe5b28
M 60d308c3d5aefabbc150aa698882b050b513ba96
@@ -146,6 +150,7 @@ M 8588de147e96abfc5852645768a11bebde53a851
M 85f31862370b15fd26fcfa0078813921afdbbd8c
M 86155a1f8c83b49aa7085b71ff8400966e2f3dd9
M 873ac7bc652a9ed42b14ac624d4dbcaa1758423a
+M 875fca8bcabe57124b06594c761a4da2e735fa24
M 88554e0c6e68d209e62bdf09178149e01ae18bd6
M 8ae1a24afe6a2e4896010d143422481e0229cc4a
M 8bb01ba388f382a34cbb32e5e01942f7b3e8839b
@@ -184,6 +189,7 @@ M a9933e7d7137c29ebbad34683e19d4c5d739e737
M aa3787b4ef1a9df0c94e181b7bf178d707813522
M acc610299dc7e3d32e658649766d26452d15dea8
M ace3b1901cb64a6f98e51dc9bbffe7cbeb4f4c1c
+M adc03075632112696a69b992ac1a7cb117a3889c
M af7038490d5685a456d9f7e9e424a228416d1bf5
M af85f026d6c57aa79263e46657aba7e5d2d590ea
M b14fbbbf352043171e1ecf958d5865d4c5439af2
@@ -194,6 +200,7 @@ M b660f71147311745fb7aee2e8834f30d12e98037
M b6d1e6978bdea139d6d093656f92979b7d6cb204
M b8cf8adf5842b98e6a2cac53a40a7aba414e13a0
M b9954acb99f53a223d9ce94a243286df1246010c
+M b9ca69f82c342875cb9f90c4e838ada259ee407e
M ba8e92cc655aa54dc6c52342b64590195cfaff12
M bb1ea6bac4f980144becebcd79533ca736b44342
M bca6dd3c53ad6666f0361c8a27bac2a874f9f5de
@@ -211,10 +218,12 @@ M c874b22dff83786077785937e35d44db4752063b
M c9697a62c893205a14a807f6311cf0fa62c6413d
M c9b3b07adac650679bb3539e18b0c556ce687b28
M ca064885eb1df56fca53b918852a530a8295eb61
+M ca4dad2f84779dd8f544b784ef77eb6bbca219e0
M caadcaffbfaacf8f2dbc58b6dd3cbb906e11988b
M cb60d2f78f5223abf0b985f44c4a75f27b826f85
M cbb76ba80791779b3bdc163c0762812947181f97
M cc06da466dfe5f6293843f677b961c03dee997fb
+M cc1ec8854f42aec460c689e8cd972d6d61de664b
M cd53e4953d90fed16cd99d131b905cefcd748935
M cdaac75da63f45e336b4e144a34c7c8bca9ba03d
M ce13e155bcdf28611177a35f4d29e4967cc07828
(cxf) 07/10: Bump org.cyclonedx:cyclonedx-maven-plugin from 2.9.0 to 2.9.1 (#2173)
Posted by re...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
reta pushed a commit to branch 4.0.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit b4159d0a8803ec89f8ca05e8a60a61a1d716fd49
Author: dependabot[bot] <49...@users.noreply.github.com>
AuthorDate: Fri Nov 29 09:37:37 2024 +0200
Bump org.cyclonedx:cyclonedx-maven-plugin from 2.9.0 to 2.9.1 (#2173)
Bumps [org.cyclonedx:cyclonedx-maven-plugin](https://github.com/CycloneDX/cyclonedx-maven-plugin) from 2.9.0 to 2.9.1.
- [Release notes](https://github.com/CycloneDX/cyclonedx-maven-plugin/releases)
- [Commits](https://github.com/CycloneDX/cyclonedx-maven-plugin/compare/cyclonedx-maven-plugin-2.9.0...cyclonedx-maven-plugin-2.9.1)
---
updated-dependencies:
- dependency-name: org.cyclonedx:cyclonedx-maven-plugin
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <su...@github.com>
Co-authored-by: dependabot[bot] <49...@users.noreply.github.com>
(cherry picked from commit 43cf9ed6a5c345e27da2f12e37c2afeba883fe2d)
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 71f96f9c79..7ec2356284 100644
--- a/pom.xml
+++ b/pom.xml
@@ -700,7 +700,7 @@
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
- <version>2.9.0</version>
+ <version>2.9.1</version>
<executions>
<execution>
<id>make-bom</id>