From aa14b45b8531a67bd57df7211b9a8a7eb6736814 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 13 Nov 2024 13:34:56 -0600 Subject: [PATCH 01/24] Reworking jetty-compression for JPMS --- .../jetty-compression-api/pom.xml | 10 ++++++++- .../src/main/java/module-info.java | 20 +++++++++++++++++ .../jetty-compression-brotli/pom.xml | 4 ++-- .../src/main/java/module-info.java | 21 ++++++++++++++++++ .../compression/brotli/BrotliCompression.java | 2 ++ .../brotli/BrotliEncoderConfig.java | 19 ++++------------ .../{ => internal}/BrotliDecoderSource.java | 4 +++- .../{ => internal}/BrotliEncoderSink.java | 8 +++++-- .../src/main/java/module-info.java | 20 +++++++++++++++++ .../compression/gzip/GzipCompression.java | 4 ++++ .../ConfiguredGzipInputStream.java | 4 +++- .../ConfiguredGzipOutputStream.java | 4 +++- .../{ => internal}/GzipDecoderSource.java | 4 +++- .../gzip/{ => internal}/GzipEncoderSink.java | 4 +++- .../gzip/ConfiguredGzipOutputStreamTest.java | 1 + .../src/main/java/module-info.java | 21 ++++++++++++++++++ .../src/main/java/module-info.java | 22 +++++++++++++++++++ .../zstandard/ZstandardCompression.java | 2 ++ .../ZstandardDecoderSource.java | 4 +++- .../{ => internal}/ZstandardEncoderSink.java | 4 +++- 20 files changed, 155 insertions(+), 27 deletions(-) create mode 100644 jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java create mode 100644 jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java rename jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/{ => internal}/BrotliDecoderSource.java (94%) rename jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/{ => internal}/BrotliEncoderSink.java (94%) create mode 100644 jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/module-info.java rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/{ => internal}/ConfiguredGzipInputStream.java (88%) rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/{ => internal}/ConfiguredGzipOutputStream.java (93%) rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/{ => internal}/GzipDecoderSource.java (98%) rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/{ => internal}/GzipEncoderSink.java (98%) create mode 100644 jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java create mode 100644 jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java rename jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/{ => internal}/ZstandardDecoderSource.java (91%) rename jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/{ => internal}/ZstandardEncoderSink.java (97%) diff --git a/jetty-core/jetty-compression/jetty-compression-api/pom.xml b/jetty-core/jetty-compression/jetty-compression-api/pom.xml index 17497f369595..fc15eecb2267 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-api/pom.xml @@ -19,7 +19,15 @@ org.eclipse.jetty - jetty-server + jetty-http + + + jetty-io + org.eclipse.jetty + + + jetty-util + org.eclipse.jetty org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java new file mode 100644 index 000000000000..47d3ec13777a --- /dev/null +++ b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java @@ -0,0 +1,20 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +module org.eclipse.jetty.compression +{ + requires transitive org.eclipse.jetty.http; + requires org.slf4j; + + exports org.eclipse.jetty.compression; +} diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml index 5e6c92e7e261..942b5b9b9ebb 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml @@ -23,11 +23,11 @@ brotli4j ${brotli4j.version} - + org.eclipse.jetty.compression jetty-compression-api diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java new file mode 100644 index 000000000000..47de1fa09ea6 --- /dev/null +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java @@ -0,0 +1,21 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +module org.eclipse.jetty.compression.brotli +{ + requires transitive org.eclipse.jetty.compression; + requires org.slf4j; + + requires com.aayushatharva.brotli4j; + exports org.eclipse.jetty.compression.brotli; +} diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java index b54899d4925b..4487101724c6 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java @@ -28,6 +28,8 @@ import org.eclipse.jetty.compression.DecoderSource; import org.eclipse.jetty.compression.EncoderConfig; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.brotli.internal.BrotliDecoderSource; +import org.eclipse.jetty.compression.brotli.internal.BrotliEncoderSink; import org.eclipse.jetty.http.CompressedContentFormat; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java index d9156e25f39d..dfa4a6d3d456 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java @@ -25,12 +25,6 @@ public class BrotliEncoderConfig implements EncoderConfig * @see Encoder Defaults */ public static final int DEFAULT_QUALITY = 11; - /** - * Default Brotli Mode (Strategy). - * - * @see Encoder Defaults - */ - public static final Encoder.Mode DEFAULT_MODE = Encoder.Mode.GENERIC; /** * Default Brotli Window. * @@ -41,15 +35,15 @@ public class BrotliEncoderConfig implements EncoderConfig public static final int MIN_BUFFER_SIZE = 32; private int bufferSize = 4096; + private int strategy = 0; private int quality = DEFAULT_QUALITY; - private Encoder.Mode mode = DEFAULT_MODE; private int lgWindow = DEFAULT_WINDOW; public Parameters asEncoderParams() { Parameters params = new Parameters(); params.setQuality(getCompressionLevel()); - params.setMode(getMode()); + params.setMode(Encoder.Mode.of(getStrategy())); params.setWindow(getLgWindow()); return params; } @@ -122,15 +116,10 @@ public void setLgWindow(int window) this.lgWindow = window; } - public Encoder.Mode getMode() - { - return mode; - } - @Override public int getStrategy() { - return mode.ordinal(); + return strategy; } /** @@ -151,6 +140,6 @@ public void setStrategy(int strategy) if ((strategy < 0) || (strategy > Encoder.Mode.values().length)) throw new IllegalArgumentException("Unsupported brotli strategy mode: " + strategy); - mode = Encoder.Mode.of(strategy); + this.strategy = strategy; } } diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java similarity index 94% rename from jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderSource.java rename to jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java index 391752644724..0690b4334b05 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java @@ -11,13 +11,15 @@ // ======================================================================== // -package org.eclipse.jetty.compression.brotli; +package org.eclipse.jetty.compression.brotli.internal; import java.io.IOException; import java.nio.ByteBuffer; import com.aayushatharva.brotli4j.decoder.DecoderJNI; import org.eclipse.jetty.compression.DecoderSource; +import org.eclipse.jetty.compression.brotli.BrotliCompression; +import org.eclipse.jetty.compression.brotli.BrotliDecoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.util.BufferUtil; diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java similarity index 94% rename from jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderSink.java rename to jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java index 77598891f62f..fa003aaba8ac 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java @@ -11,14 +11,17 @@ // ======================================================================== // -package org.eclipse.jetty.compression.brotli; +package org.eclipse.jetty.compression.brotli.internal; import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.atomic.AtomicReference; +import com.aayushatharva.brotli4j.encoder.Encoder; import com.aayushatharva.brotli4j.encoder.EncoderJNI; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.brotli.BrotliCompression; +import org.eclipse.jetty.compression.brotli.BrotliEncoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; @@ -60,7 +63,8 @@ public BrotliEncoderSink(BrotliCompression compression, Content.Sink sink, Brotl this.compression = compression; try { - this.encoder = new EncoderJNI.Wrapper(config.getBufferSize(), config.getCompressionLevel(), config.getLgWindow(), config.getMode()); + Encoder.Mode mode = Encoder.Mode.of(config.getStrategy()); + this.encoder = new EncoderJNI.Wrapper(config.getBufferSize(), config.getCompressionLevel(), config.getLgWindow(), mode); this.inputBuffer = encoder.getInputBuffer(); } catch (IOException e) diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/module-info.java new file mode 100644 index 000000000000..a3f4327c1d4b --- /dev/null +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/module-info.java @@ -0,0 +1,20 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +module org.eclipse.jetty.compression.gzip +{ + requires transitive org.eclipse.jetty.compression; + requires org.slf4j; + + exports org.eclipse.jetty.compression.gzip; +} diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java index 12ed7e8ea6d8..ac02546206aa 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java @@ -24,6 +24,10 @@ import org.eclipse.jetty.compression.DecoderSource; import org.eclipse.jetty.compression.EncoderConfig; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipInputStream; +import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipOutputStream; +import org.eclipse.jetty.compression.gzip.internal.GzipDecoderSource; +import org.eclipse.jetty.compression.gzip.internal.GzipEncoderSink; import org.eclipse.jetty.http.CompressedContentFormat; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipInputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java similarity index 88% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipInputStream.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java index fc9f48d4ae9d..23d2657c275b 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipInputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java @@ -11,12 +11,14 @@ // ======================================================================== // -package org.eclipse.jetty.compression.gzip; +package org.eclipse.jetty.compression.gzip.internal; import java.io.IOException; import java.io.InputStream; import java.util.zip.GZIPInputStream; +import org.eclipse.jetty.compression.gzip.GzipDecoderConfig; + public class ConfiguredGzipInputStream extends GZIPInputStream { public ConfiguredGzipInputStream(InputStream in, GzipDecoderConfig config) throws IOException diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java similarity index 93% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStream.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java index 103619309b7c..cb54999f854a 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java @@ -11,13 +11,15 @@ // ======================================================================== // -package org.eclipse.jetty.compression.gzip; +package org.eclipse.jetty.compression.gzip.internal; import java.io.IOException; import java.io.OutputStream; import java.nio.ByteBuffer; import java.util.zip.GZIPOutputStream; +import org.eclipse.jetty.compression.gzip.GzipEncoderConfig; + /** * A {@link GZIPOutputStream} that you can configure, unlike the * JVM default provided one. diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java similarity index 98% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderSource.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java index 2e2e11365a68..72d9e28ac1e6 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java @@ -11,7 +11,7 @@ // ======================================================================== // -package org.eclipse.jetty.compression.gzip; +package org.eclipse.jetty.compression.gzip.internal; import java.nio.ByteBuffer; import java.util.zip.DataFormatException; @@ -19,6 +19,8 @@ import java.util.zip.ZipException; import org.eclipse.jetty.compression.DecoderSource; +import org.eclipse.jetty.compression.gzip.GzipCompression; +import org.eclipse.jetty.compression.gzip.GzipDecoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; import org.eclipse.jetty.util.BufferUtil; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java similarity index 98% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderSink.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java index 557f1c5adf0a..c780eb56d915 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java @@ -11,7 +11,7 @@ // ======================================================================== // -package org.eclipse.jetty.compression.gzip; +package org.eclipse.jetty.compression.gzip.internal; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -20,6 +20,8 @@ import java.util.zip.Deflater; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.gzip.GzipCompression; +import org.eclipse.jetty.compression.gzip.GzipEncoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; import org.eclipse.jetty.util.BufferUtil; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java index 8f0e07492f61..a25e233c1328 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java @@ -18,6 +18,7 @@ import java.util.List; import java.util.zip.Deflater; +import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipOutputStream; import org.junit.jupiter.api.Test; import static java.nio.charset.StandardCharsets.UTF_8; diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java new file mode 100644 index 000000000000..fd0851674ea5 --- /dev/null +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java @@ -0,0 +1,21 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +module org.eclipse.jetty.compression.server +{ + requires transitive org.eclipse.jetty.compression; + requires transitive org.eclipse.jetty.server; + requires org.slf4j; + + exports org.eclipse.jetty.compression.server; +} diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java new file mode 100644 index 000000000000..045702bbcf18 --- /dev/null +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java @@ -0,0 +1,22 @@ +// +// ======================================================================== +// Copyright (c) 1995 Mort Bay Consulting Pty Ltd and others. +// +// This program and the accompanying materials are made available under the +// terms of the Eclipse Public License v. 2.0 which is available at +// https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +// which is available at https://www.apache.org/licenses/LICENSE-2.0. +// +// SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +// ======================================================================== +// + +module org.eclipse.jetty.compression.zstandard +{ + requires transitive org.eclipse.jetty.compression; + requires org.slf4j; + + requires com.github.luben.zstd_jni; + + exports org.eclipse.jetty.compression.zstandard; +} diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java index c08df5a8fb7c..64e6af356738 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java @@ -27,6 +27,8 @@ import org.eclipse.jetty.compression.DecoderSource; import org.eclipse.jetty.compression.EncoderConfig; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.zstandard.internal.ZstandardDecoderSource; +import org.eclipse.jetty.compression.zstandard.internal.ZstandardEncoderSink; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.PreEncodedHttpField; diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java similarity index 91% rename from jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderSource.java rename to jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java index 6ea33bcd1a6d..da8d69e6c5cb 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java @@ -11,12 +11,14 @@ // ======================================================================== // -package org.eclipse.jetty.compression.zstandard; +package org.eclipse.jetty.compression.zstandard.internal; import java.nio.ByteBuffer; import com.github.luben.zstd.ZstdDecompressCtx; import org.eclipse.jetty.compression.DecoderSource; +import org.eclipse.jetty.compression.zstandard.ZstandardCompression; +import org.eclipse.jetty.compression.zstandard.ZstandardDecoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java similarity index 97% rename from jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderSink.java rename to jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java index 07e26eb1055a..98c38f46c194 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java @@ -11,7 +11,7 @@ // ======================================================================== // -package org.eclipse.jetty.compression.zstandard; +package org.eclipse.jetty.compression.zstandard.internal; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -21,6 +21,8 @@ import com.github.luben.zstd.ZstdCompressCtx; import com.github.luben.zstd.ZstdFrameProgression; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.zstandard.ZstandardCompression; +import org.eclipse.jetty.compression.zstandard.ZstandardEncoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; import org.eclipse.jetty.util.BufferUtil; From 0a1abb05bdf9957ee38782efa2bad5baa000c271 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Wed, 13 Nov 2024 15:10:26 -0600 Subject: [PATCH 02/24] Fix pom --- jetty-core/jetty-compression/jetty-compression-api/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-api/pom.xml b/jetty-core/jetty-compression/jetty-compression-api/pom.xml index fc15eecb2267..c8c5a1ac0031 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-api/pom.xml @@ -22,12 +22,12 @@ jetty-http - jetty-io org.eclipse.jetty + jetty-io - jetty-util org.eclipse.jetty + jetty-util org.eclipse.jetty From 9c8c9aa9785b7a1ec81ea0e24ef3d92771d4648a Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 14 Nov 2024 14:21:17 -0600 Subject: [PATCH 03/24] Changes from review --- .../jetty-compression/jetty-compression-brotli/pom.xml | 5 ----- .../jetty-compression-brotli/src/main/java/module-info.java | 2 +- .../jetty-compression-server/src/main/java/module-info.java | 1 + .../eclipse/jetty/compression/server/CompressionHandler.java | 2 ++ .../server/{ => internal}/CompressionResponse.java | 3 ++- .../server/{ => internal}/DecompressionRequest.java | 4 +++- .../src/main/java/module-info.java | 1 - 7 files changed, 9 insertions(+), 9 deletions(-) rename jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/{ => internal}/CompressionResponse.java (97%) rename jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/{ => internal}/DecompressionRequest.java (95%) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml index 942b5b9b9ebb..a3bbb5b61e94 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml @@ -23,11 +23,6 @@ brotli4j ${brotli4j.version} - org.eclipse.jetty.compression jetty-compression-api diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java index 47de1fa09ea6..2cfacf16a467 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/module-info.java @@ -15,7 +15,7 @@ { requires transitive org.eclipse.jetty.compression; requires org.slf4j; - requires com.aayushatharva.brotli4j; + exports org.eclipse.jetty.compression.brotli; } diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java index fd0851674ea5..063ac470835a 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/module-info.java @@ -18,4 +18,5 @@ requires org.slf4j; exports org.eclipse.jetty.compression.server; + exports org.eclipse.jetty.compression.server.internal; } diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java index e9e3b099324f..dc5c47c7d5a6 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java @@ -20,6 +20,8 @@ import java.util.TreeMap; import org.eclipse.jetty.compression.Compression; +import org.eclipse.jetty.compression.server.internal.CompressionResponse; +import org.eclipse.jetty.compression.server.internal.DecompressionRequest; import org.eclipse.jetty.http.EtagUtils; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionResponse.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java similarity index 97% rename from jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionResponse.java rename to jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java index 4877fd1542a0..23bceb54ab0d 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionResponse.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java @@ -11,13 +11,14 @@ // ======================================================================== // -package org.eclipse.jetty.compression.server; +package org.eclipse.jetty.compression.server.internal; import java.nio.ByteBuffer; import java.util.concurrent.atomic.AtomicReference; import org.eclipse.jetty.compression.Compression; import org.eclipse.jetty.compression.EncoderSink; +import org.eclipse.jetty.compression.server.CompressionConfig; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.MimeTypes; diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/DecompressionRequest.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java similarity index 95% rename from jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/DecompressionRequest.java rename to jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java index 17dd35f1eb4b..cf7edc257c32 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/DecompressionRequest.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java @@ -11,12 +11,14 @@ // ======================================================================== // -package org.eclipse.jetty.compression.server; +package org.eclipse.jetty.compression.server.internal; import java.util.ListIterator; import org.eclipse.jetty.compression.Compression; import org.eclipse.jetty.compression.DecoderSource; +import org.eclipse.jetty.compression.server.CompressionConfig; +import org.eclipse.jetty.compression.server.CompressionHandler; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; import org.eclipse.jetty.http.HttpHeader; diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java index 045702bbcf18..ddbd1b120f2d 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/module-info.java @@ -15,7 +15,6 @@ { requires transitive org.eclipse.jetty.compression; requires org.slf4j; - requires com.github.luben.zstd_jni; exports org.eclipse.jetty.compression.zstandard; From 713dfd9a135c360b53a134d5c46d7089386aaa86 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 14 Nov 2024 14:28:02 -0600 Subject: [PATCH 04/24] Changes from review --- .../compression/brotli/internal/BrotliDecoderSource.java | 1 - .../eclipse/jetty/compression/gzip/GzipCompression.java | 7 +------ .../gzip/internal/ConfiguredGzipInputStream.java | 3 +++ .../gzip/internal/ConfiguredGzipOutputStream.java | 3 +-- .../jetty/compression/gzip/internal/GzipDecoderSource.java | 4 ++-- .../compression/server/internal/CompressionResponse.java | 4 ---- .../compression/server/internal/DecompressionRequest.java | 6 +++--- 7 files changed, 10 insertions(+), 18 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java index 0690b4334b05..7aeab5d6b09a 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java @@ -25,7 +25,6 @@ public class BrotliDecoderSource extends DecoderSource { - private static final ByteBuffer EMPTY_BUFFER = BufferUtil.EMPTY_BUFFER; private final BrotliCompression compression; private final DecoderJNI.Wrapper decoder; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java index ac02546206aa..23a7abea434b 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java @@ -28,7 +28,6 @@ import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipOutputStream; import org.eclipse.jetty.compression.gzip.internal.GzipDecoderSource; import org.eclipse.jetty.compression.gzip.internal.GzipEncoderSink; -import org.eclipse.jetty.http.CompressedContentFormat; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.http.PreEncodedHttpField; @@ -36,17 +35,13 @@ import org.eclipse.jetty.io.RetainableByteBuffer; import org.eclipse.jetty.util.compression.DeflaterPool; import org.eclipse.jetty.util.compression.InflaterPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class GzipCompression extends Compression { public static final int DEFAULT_MIN_GZIP_SIZE = 32; public static final int BREAK_EVEN_GZIP_SIZE = 23; - public static final List EXTENSIONS = List.of("gz", "gzip"); - private static final Logger LOG = LoggerFactory.getLogger(GzipCompression.class); + private static final List EXTENSIONS = List.of("gz", "gzip"); private static final String ENCODING_NAME = "gzip"; - public static final CompressedContentFormat GZIP = new CompressedContentFormat(ENCODING_NAME, ".gz"); private static final HttpField X_CONTENT_ENCODING = new PreEncodedHttpField("X-Content-Encoding", ENCODING_NAME); private static final HttpField CONTENT_ENCODING = new PreEncodedHttpField(HttpHeader.CONTENT_ENCODING, ENCODING_NAME); private int minCompressSize = DEFAULT_MIN_GZIP_SIZE; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java index 23d2657c275b..f8f06b8a7be0 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java @@ -19,6 +19,9 @@ import org.eclipse.jetty.compression.gzip.GzipDecoderConfig; +/** + * A {@link GZIPInputStream} that you can configure, unlike the JVM default provided one. + */ public class ConfiguredGzipInputStream extends GZIPInputStream { public ConfiguredGzipInputStream(InputStream in, GzipDecoderConfig config) throws IOException diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java index cb54999f854a..c5d38b24d015 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java @@ -21,8 +21,7 @@ import org.eclipse.jetty.compression.gzip.GzipEncoderConfig; /** - * A {@link GZIPOutputStream} that you can configure, unlike the - * JVM default provided one. + * A {@link GZIPOutputStream} that you can configure, unlike the JVM default provided one. */ public class ConfiguredGzipOutputStream extends GZIPOutputStream { diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java index 72d9e28ac1e6..673a59155438 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java @@ -41,8 +41,8 @@ private enum State private static final ByteBuffer EMPTY_BUFFER = BufferUtil.EMPTY_BUFFER; private final GzipCompression compression; private final int bufferSize; - private InflaterPool.Entry inflaterEntry; - private Inflater inflater; + private final InflaterPool.Entry inflaterEntry; + private final Inflater inflater; private State state; private int size; private long value; diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java index 23bceb54ab0d..a35f3831388a 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java @@ -26,13 +26,9 @@ import org.eclipse.jetty.server.Response; import org.eclipse.jetty.util.Callback; import org.eclipse.jetty.util.thread.Invocable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class CompressionResponse extends Response.Wrapper implements Callback, Invocable { - private static final Logger LOG = LoggerFactory.getLogger(CompressionResponse.class); - enum State { MIGHT_COMPRESS, diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java index cf7edc257c32..f3eeac2b4296 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java @@ -28,9 +28,9 @@ public class DecompressionRequest extends Request.Wrapper implements Destroyable { - private Compression compression; - private HttpFields fields; - private DecoderSource decoderSource; + private final Compression compression; + private final HttpFields fields; + private final DecoderSource decoderSource; public DecompressionRequest( Compression compression, From 6244dbdd52c9fa3456ebbbb0712e72aa94d5d84f Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Thu, 14 Nov 2024 16:19:46 -0600 Subject: [PATCH 05/24] Cleaning up source --- .../jetty/compression/Compression.java | 28 ---------------- .../jetty/compression/EncoderSink.java | 5 ++- .../compression/brotli/BrotliCompression.java | 4 +-- .../brotli/BrotliDecoderConfig.java | 2 +- .../brotli/internal/BrotliDecoderSource.java | 17 +++------- .../brotli/internal/BrotliEncoderSink.java | 19 +++-------- .../compression/gzip/GzipCompression.java | 17 ++++------ .../compression/gzip/GzipDecoderConfig.java | 2 +- .../compression/gzip/GzipEncoderConfig.java | 15 ++++++--- .../gzip/internal/GzipDecoderSource.java | 22 ++++--------- .../gzip/internal/GzipEncoderSink.java | 12 ++----- .../compression/server/CompressionConfig.java | 5 ++- .../server/CompressionHandler.java | 32 ++++++------------- .../server/internal/CompressionResponse.java | 7 ++-- .../server/internal/DecompressionRequest.java | 5 +-- .../compression/AbstractCompressionTest.java | 2 +- .../compression/CompressionHandlerTest.java | 16 +++++----- .../compression/MaxBufferContentSource.java | 4 --- .../zstandard/ZstandardCompression.java | 16 ++++------ .../zstandard/ZstandardDecoderConfig.java | 2 +- .../zstandard/ZstandardEncoderConfig.java | 2 +- .../internal/ZstandardDecoderSource.java | 2 -- .../internal/ZstandardEncoderSink.java | 10 ++---- 23 files changed, 75 insertions(+), 171 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java index 2dd2f4edb655..5a2905db07a9 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java +++ b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java @@ -48,34 +48,6 @@ public Compression(String encoding) etagSuffixQuote = etagSuffix + "\""; } - /** - * Test if the {@code Accept-Encoding} request header and {@code Content-Length} response - * header are suitable to allow compression for the response compression implementation. - * - * @param headers the request headers - * @param contentLength the content length - * @return true if compression is allowed - */ - public boolean acceptsCompression(HttpFields headers, long contentLength) - { - if (contentLength >= 0 && contentLength < getMinCompressSize()) - { - if (LOG.isDebugEnabled()) - LOG.debug("{} excluded minCompressSize {}", this, headers); - return false; - } - - // check the accept encoding header - if (!headers.contains(HttpHeader.ACCEPT_ENCODING, getEncodingName())) - { - if (LOG.isDebugEnabled()) - LOG.debug("{} excluded not {} acceptable {}", this, getEncodingName(), headers); - return false; - } - - return true; - } - /** * Acquire a {@link RetainableByteBuffer} that is managed by this {@link Compression} implementation * which is suitable for compressed output from an {@link EncoderSink} or compressed input from a {@link DecoderSource}. diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java index 9c94ac2aeda3..208975bb8867 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java @@ -45,7 +45,6 @@ public void write(boolean last, ByteBuffer content, Callback callback) } catch (Throwable t) { - // TODO: do we need to tell the delegate that we failed? callback.failed(t); return; } @@ -86,7 +85,7 @@ private enum State COMPRESSING, // The last content is being encoded and is being flushed FINISHING, - // The final content has been send (final state) + // The final content has been sent (final state) FINISHED } @@ -128,7 +127,7 @@ protected void onCompleteFailure(Throwable x) } @Override - protected Action process() throws Throwable + protected Action process() { if (state.get() == State.FINISHED) return Action.SUCCEEDED; diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java index 4487101724c6..9c86e4124f4f 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java @@ -161,7 +161,7 @@ public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) t public DecoderSource newDecoderSource(Content.Source source, DecoderConfig config) { BrotliDecoderConfig brotliDecoderConfig = BrotliDecoderConfig.class.cast(config); - return new BrotliDecoderSource(this, source, brotliDecoderConfig); + return new BrotliDecoderSource(source, brotliDecoderConfig); } @Override @@ -175,7 +175,7 @@ public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig confi public EncoderSink newEncoderSink(Content.Sink sink, EncoderConfig config) { BrotliEncoderConfig brotliEncoderConfig = BrotliEncoderConfig.class.cast(config); - return new BrotliEncoderSink(this, sink, brotliEncoderConfig); + return new BrotliEncoderSink(sink, brotliEncoderConfig); } private ByteOrder getByteOrder() diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java index 6239d65fee5a..81984465995c 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java @@ -33,6 +33,6 @@ public int getBufferSize() @Override public void setBufferSize(int size) { - this.bufferSize = this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); + this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); } } diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java index 7aeab5d6b09a..27099bfbb40f 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliDecoderSource.java @@ -18,23 +18,20 @@ import com.aayushatharva.brotli4j.decoder.DecoderJNI; import org.eclipse.jetty.compression.DecoderSource; -import org.eclipse.jetty.compression.brotli.BrotliCompression; import org.eclipse.jetty.compression.brotli.BrotliDecoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.util.BufferUtil; public class BrotliDecoderSource extends DecoderSource { - private final BrotliCompression compression; private final DecoderJNI.Wrapper decoder; - public BrotliDecoderSource(BrotliCompression compression, Content.Source source, BrotliDecoderConfig config) + public BrotliDecoderSource(Content.Source source, BrotliDecoderConfig config) { super(source); - this.compression = compression; try { - this.decoder = new DecoderJNI.Wrapper(compression.getBufferSize()); + this.decoder = new DecoderJNI.Wrapper(config.getBufferSize()); } catch (IOException e) { @@ -59,10 +56,7 @@ protected Content.Chunk nextChunk(Content.Chunk readChunk) throws IOException { return last ? Content.Chunk.EOF : Content.Chunk.EMPTY; } - case OK -> - { - decoder.push(0); - } + case OK -> decoder.push(0); case NEEDS_MORE_INPUT -> { ByteBuffer input = decoder.getInputBuffer(); @@ -82,10 +76,7 @@ protected Content.Chunk nextChunk(Content.Chunk readChunk) throws IOException // rely on status.OK to go to EOF return Content.Chunk.from(output, false); } - default -> - { - throw new IOException("Decoder failure: Corrupted input buffer"); - } + default -> throw new IOException("Decoder failure: Corrupted input buffer"); } } } diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java index fa003aaba8ac..9a9d9b94b06d 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/internal/BrotliEncoderSink.java @@ -20,13 +20,10 @@ import com.aayushatharva.brotli4j.encoder.Encoder; import com.aayushatharva.brotli4j.encoder.EncoderJNI; import org.eclipse.jetty.compression.EncoderSink; -import org.eclipse.jetty.compression.brotli.BrotliCompression; import org.eclipse.jetty.compression.brotli.BrotliEncoderConfig; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.util.BufferUtil; import org.eclipse.jetty.util.Callback; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class BrotliEncoderSink extends EncoderSink { @@ -47,20 +44,17 @@ enum State /** * Finish operation completed. */ - FINISHED; + FINISHED } - private static final Logger LOG = LoggerFactory.getLogger(BrotliEncoderSink.class); private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate(0); - private final BrotliCompression compression; private final EncoderJNI.Wrapper encoder; private final ByteBuffer inputBuffer; - private final AtomicReference state = new AtomicReference(State.PROCESSING); + private final AtomicReference state = new AtomicReference<>(State.PROCESSING); - public BrotliEncoderSink(BrotliCompression compression, Content.Sink sink, BrotliEncoderConfig config) + public BrotliEncoderSink(Content.Sink sink, BrotliEncoderConfig config) { super(sink); - this.compression = compression; try { Encoder.Mode mode = Encoder.Mode.of(config.getStrategy()); @@ -98,7 +92,7 @@ protected WriteRecord encode(boolean last, ByteBuffer content) } // the only place the input buffer gets set. - int len = BufferUtil.put(content, inputBuffer); + BufferUtil.put(content, inputBuffer); // do not flip input buffer, that's not what Brotli4j expects/wants. } // content is fully consumed. @@ -178,9 +172,4 @@ protected void release() { this.encoder.destroy(); } - - private State getState() - { - return state.get(); - } } diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java index 23a7abea434b..dc0400e780cd 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java @@ -38,8 +38,7 @@ public class GzipCompression extends Compression { - public static final int DEFAULT_MIN_GZIP_SIZE = 32; - public static final int BREAK_EVEN_GZIP_SIZE = 23; + private static final int DEFAULT_MIN_GZIP_SIZE = 32; private static final List EXTENSIONS = List.of("gz", "gzip"); private static final String ENCODING_NAME = "gzip"; private static final HttpField X_CONTENT_ENCODING = new PreEncodedHttpField("X-Content-Encoding", ENCODING_NAME); @@ -88,8 +87,7 @@ public DecoderConfig getDefaultDecoderConfig() @Override public void setDefaultDecoderConfig(DecoderConfig config) { - GzipDecoderConfig gzipDecoderConfig = GzipDecoderConfig.class.cast(config); - this.defaultDecoderConfig = gzipDecoderConfig; + this.defaultDecoderConfig = (GzipDecoderConfig)config; } @Override @@ -101,8 +99,7 @@ public EncoderConfig getDefaultEncoderConfig() @Override public void setDefaultEncoderConfig(EncoderConfig config) { - GzipEncoderConfig gzipEncoderConfig = GzipEncoderConfig.class.cast(config); - this.defaultEncoderConfig = gzipEncoderConfig; + this.defaultEncoderConfig = (GzipEncoderConfig)config; } public DeflaterPool getDeflaterPool() @@ -158,28 +155,28 @@ public HttpField getXContentEncodingField() @Override public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) throws IOException { - GzipDecoderConfig gzipDecoderConfig = GzipDecoderConfig.class.cast(config); + GzipDecoderConfig gzipDecoderConfig = (GzipDecoderConfig)config; return new ConfiguredGzipInputStream(in, gzipDecoderConfig); } @Override public DecoderSource newDecoderSource(Content.Source source, DecoderConfig config) { - GzipDecoderConfig gzipDecoderConfig = GzipDecoderConfig.class.cast(config); + GzipDecoderConfig gzipDecoderConfig = (GzipDecoderConfig)config; return new GzipDecoderSource(this, source, gzipDecoderConfig); } @Override public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig config) throws IOException { - GzipEncoderConfig gzipEncoderConfig = GzipEncoderConfig.class.cast(config); + GzipEncoderConfig gzipEncoderConfig = (GzipEncoderConfig)config; return new ConfiguredGzipOutputStream(out, gzipEncoderConfig); } @Override public EncoderSink newEncoderSink(Content.Sink sink, EncoderConfig config) { - GzipEncoderConfig gzipEncoderConfig = GzipEncoderConfig.class.cast(config); + GzipEncoderConfig gzipEncoderConfig = (GzipEncoderConfig)config; return new GzipEncoderSink(this, sink, gzipEncoderConfig); } diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java index b06a40fc027c..e130b2b3be28 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java @@ -37,6 +37,6 @@ public int getBufferSize() @Override public void setBufferSize(int size) { - this.bufferSize = this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); + this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); } } diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java index 4d97cd0b8c51..06ccb7001e82 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java @@ -71,11 +71,16 @@ public int getStrategy() @Override public void setStrategy(int strategy) { - if (strategy != Deflater.DEFAULT_STRATEGY || - strategy != Deflater.FILTERED || - strategy != Deflater.HUFFMAN_ONLY) - throw new IllegalArgumentException("Unrecognized strategy: " + strategy); - this.strategy = strategy; + switch (strategy) + { + case Deflater.DEFAULT_STRATEGY: + case Deflater.FILTERED: + case Deflater.HUFFMAN_ONLY: + this.strategy = strategy; + break; + default: + throw new IllegalArgumentException("Unrecognized strategy: " + strategy); + } } /** diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java index 673a59155438..516616baa0cf 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipDecoderSource.java @@ -38,7 +38,6 @@ private enum State private static final Logger LOG = LoggerFactory.getLogger(GzipDecoderSource.class); // Unsigned Integer Max == 2^32 private static final long UINT_MAX = 0xFFFFFFFFL; - private static final ByteBuffer EMPTY_BUFFER = BufferUtil.EMPTY_BUFFER; private final GzipCompression compression; private final int bufferSize; private final InflaterPool.Entry inflaterEntry; @@ -159,7 +158,7 @@ else if (inflater.finished()) } case ID -> { - value += (currByte & 0xFF) << 8 * size; + value += (long)(currByte & 0xFF) << 8 * size; ++size; if (size == 2) { @@ -187,7 +186,6 @@ else if (inflater.finished()) state = State.MTIME; size = 0; value = 0; - break; } case MTIME -> { @@ -196,19 +194,11 @@ else if (inflater.finished()) if (size == 4) state = State.XFL; } - case XFL -> - { - // Skip XFL - state = State.OS; - } - case OS -> - { - // Skip OS - state = State.FLAGS; - } + case XFL -> state = State.OS; // Skip XFL + case OS -> state = State.FLAGS; // Skip OS case EXTRA_LENGTH -> { - value += (currByte & 0xFF) << 8 * size; + value += (long)(currByte & 0xFF) << 8 * size; ++size; if (size == 2) state = State.EXTRA; @@ -257,11 +247,11 @@ else if (inflater.finished()) } case CRC -> { - value += (currByte & 0xFF) << 8 * size; + value += (long)(currByte & 0xFF) << 8 * size; ++size; if (size == 4) { - // From RFC 1952, compliant decoders need not to verify the CRC + // From RFC 1952, compliant decoders need not verify the CRC state = State.ISIZE; size = 0; value = 0; diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java index c780eb56d915..23fb15f582ff 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/GzipEncoderSink.java @@ -57,7 +57,6 @@ enum State } private static final Logger LOG = LoggerFactory.getLogger(GzipEncoderSink.class); - private static final ByteBuffer EMPTY_BUFFER = ByteBuffer.allocate(0); /** * Per RFC-1952 (Section 2.3.1) this is the "Unknown" OS value as a byte. */ @@ -77,13 +76,6 @@ enum State 0, // extra flags OS_UNKNOWN // operating system }; - /** - * Per RFC-1952, the GZIP trailer is 8 bytes. - * 1. [CRC32] integer (4 bytes) representing CRC of uncompressed data. - * 2. [ISIZE] integer (4 bytes) representing total bytes of uncompressed data. - * This implies that Gzip cannot properly handle uncompressed sizes above 2^32 bytes (or 4,294,967,296 bytes) - */ - private static final int GZIP_TRAILER_SIZE = 8; private final GzipCompression compression; private final CompressionPool.Entry deflaterEntry; private final Deflater deflater; @@ -91,7 +83,7 @@ enum State private final ByteBuffer input; private final int bufferSize; private final CRC32 crc = new CRC32(); - private final AtomicReference state = new AtomicReference(State.HEADERS); + private final AtomicReference state = new AtomicReference<>(State.HEADERS); /** * Number of input bytes provided to the deflater. * This is different then {@link Deflater#getTotalIn()} as that only shows @@ -277,7 +269,7 @@ private void trailers(ByteBuffer output) // Per javadoc, the .getBytesRead() is preferred as it is a return value of `long`. // The gzip trailer is fixed at a value of `int`, so we use the non-preferred .getTotalIn() // instead. Also, if a gzip compressed is larger than Integer.MAX_VALUE then this trailer is broken anyway. - output.putInt((int)deflater.getTotalIn()); // // Number of uncompressed bytes + output.putInt(deflater.getTotalIn()); // // Number of uncompressed bytes output.flip(); } } diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java index eedfcffd0123..0838e7c84463 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java @@ -335,6 +335,9 @@ public String getDecompressionEncoding(String requestContentEncoding, Request re if (!decompressMimeTypes.test(contentType)) return null; + if (!decompressPaths.test(pathInContext)) + return null; + return matchedEncoding; } @@ -519,7 +522,7 @@ public Builder compressMimeTypeInclude(String mimetype) } /** - * A path that does not supports response content compression. + * A path that does not support response content compression. * *

* See {@link Builder} for details on PathSpec string. diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java index dc5c47c7d5a6..913634cc10a7 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionHandler.java @@ -67,7 +67,7 @@ public class CompressionHandler extends Handler.Wrapper private static final Logger LOG = LoggerFactory.getLogger(CompressionHandler.class); private final Map supportedEncodings = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); - private final PathMappings pathConfigs = new PathMappings(); + private final PathMappings pathConfigs = new PathMappings<>(); public CompressionHandler() { @@ -97,10 +97,7 @@ public void addCompression(Compression compression) */ public CompressionConfig ensureConfiguration(PathSpec pathSpec) { - return pathConfigs.computeIfAbsent(pathSpec, (spec) -> - { - return CompressionConfig.builder().build(); - }); + return pathConfigs.computeIfAbsent(pathSpec, (spec) -> CompressionConfig.builder().build()); } /** @@ -202,7 +199,7 @@ public boolean handle(final Request request, final Response response, final Call String requestContentEncoding = null; // The `Accept-Encoding` request header indicating the supported list of compression encoding techniques. List requestAcceptEncoding = null; - // Tracks the `If-Match` or `If-None-Match` request headers contains a etag separator. + // Tracks the `If-Match` or `If-None-Match` request headers contains an etag separator. boolean etagMatches = false; HttpFields fields = request.getHeaders(); @@ -239,10 +236,7 @@ public boolean handle(final Request request, final Response response, final Call } } } - case IF_MATCH, IF_NONE_MATCH -> - { - etagMatches |= field.getValue().contains(EtagUtils.ETAG_SEPARATOR); - } + case IF_MATCH, IF_NONE_MATCH -> etagMatches |= field.getValue().contains(EtagUtils.ETAG_SEPARATOR); } } @@ -271,7 +265,7 @@ public boolean handle(final Request request, final Response response, final Call // We need to wrap the request IFF we are inflating or have seen etags with compression separators if (decompressEncoding != null || etagMatches) { - decompressionRequest = newDecompressionRequest(request, decompressEncoding, config); + decompressionRequest = newDecompressionRequest(request, decompressEncoding); } // Wrap the response and callback IFF we can be deflated and will try to deflate @@ -283,7 +277,7 @@ public boolean handle(final Request request, final Response response, final Call response.getHeaders().ensureField(config.getVary()); } - Response compression = newCompressionResponse(this, request, response, callback, compressEncoding, config); + Response compression = newCompressionResponse(request, response, callback, compressEncoding, config); compressionResponse = compression; if (compression instanceof Callback dynamicCallback) compressionCallback = dynamicCallback; @@ -346,13 +340,7 @@ protected void doStart() throws Exception protected void doStop() throws Exception { super.doStop(); - - supportedEncodings.values().forEach( - (codec) -> - { - removeBean(codec); - } - ); + supportedEncodings.values().forEach(this::removeBean); } private Compression getCompression(String encoding) @@ -368,7 +356,7 @@ private Compression getCompression(String encoding) return compression; } - private Response newCompressionResponse(CompressionHandler compressionHandler, Request request, Response response, Callback callback, String compressEncoding, CompressionConfig config) + private Response newCompressionResponse(Request request, Response response, Callback callback, String compressEncoding, CompressionConfig config) { Compression compression = getCompression(compressEncoding); if (compression == null) @@ -377,12 +365,12 @@ private Response newCompressionResponse(CompressionHandler compressionHandler, R return new CompressionResponse(compression, request, response, callback, config); } - private Request newDecompressionRequest(Request request, String decompressEncoding, CompressionConfig config) + private Request newDecompressionRequest(Request request, String decompressEncoding) { Compression compression = getCompression(decompressEncoding); if (compression == null) return request; - return new DecompressionRequest(compression, request, config); + return new DecompressionRequest(compression, request); } } diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java index a35f3831388a..6f0895074bbd 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/CompressionResponse.java @@ -39,8 +39,8 @@ enum State private final Callback callback; private final CompressionConfig config; private final Compression compression; + private final AtomicReference state = new AtomicReference<>(State.MIGHT_COMPRESS); private EncoderSink encoderSink; - private AtomicReference state = new AtomicReference<>(State.MIGHT_COMPRESS); private boolean last; public CompressionResponse(Compression compression, Request request, Response wrapped, Callback callback, CompressionConfig config) @@ -115,10 +115,7 @@ public void write(boolean last, ByteBuffer content, Callback callback) if (last) this.last = true; } - case NOT_COMPRESSING -> - { - super.write(last, content, callback); - } + case NOT_COMPRESSING -> super.write(last, content, callback); } } } diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java index f3eeac2b4296..c289b1a57998 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java @@ -32,10 +32,7 @@ public class DecompressionRequest extends Request.Wrapper implements Destroyable private final HttpFields fields; private final DecoderSource decoderSource; - public DecompressionRequest( - Compression compression, - Request request, - CompressionConfig config) + public DecompressionRequest(Compression compression, Request request) { super(request); this.compression = compression; diff --git a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/AbstractCompressionTest.java b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/AbstractCompressionTest.java index 92dbaa96163d..44c5a7b3c17f 100644 --- a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/AbstractCompressionTest.java +++ b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/AbstractCompressionTest.java @@ -182,7 +182,7 @@ protected void newCompression(String compressionType) throws Exception case "zstandard" -> newCompression(ZstandardCompression.class); case "gzip" -> newCompression(GzipCompression.class); default -> fail("Unrecognized compressionType: " + compressionType); - }; + } } protected void newCompression(Class compressionClass) throws Exception diff --git a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java index ba4915549d06..4393f33f78d1 100644 --- a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java +++ b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java @@ -115,7 +115,7 @@ public void testCompressEncodingsConfig(String compressionType, compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, resourceContentType); @@ -197,7 +197,7 @@ public void testCompressPathConfig(String compressionType, compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, resourceContentType); @@ -251,7 +251,7 @@ public void testDefaultCompressionConfiguration(Class compressionCl compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, "text/plain;charset=utf-8"); @@ -297,7 +297,7 @@ public void testDefaultCompressionConfigurationText(Class compressi compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, "text/plain;charset=utf-8"); @@ -333,7 +333,7 @@ public void testDefaultConfiguration() throws Exception compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, "text/plain;charset=utf-8"); @@ -400,7 +400,7 @@ public void testCompressMimeTypesConfig(String compressionType, compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, resourceContentType); @@ -582,7 +582,7 @@ public boolean handle(Request request, Response response, Callback callback) thr br, gzip | gzip, br | gzip | br, zstd | * | zstd, br, gzip | zstd - * | | + * | | """) public void testCompressPreferredEncoders( String acceptEncodingHeader, @@ -619,7 +619,7 @@ public void testCompressPreferredEncoders( compressionHandler.setHandler(new Handler.Abstract() { @Override - public boolean handle(Request request, Response response, Callback callback) throws Exception + public boolean handle(Request request, Response response, Callback callback) { response.setStatus(200); response.getHeaders().put(HttpHeader.CONTENT_TYPE, resourceContentType); diff --git a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/MaxBufferContentSource.java b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/MaxBufferContentSource.java index d89cffa5f291..b1998f32dc40 100644 --- a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/MaxBufferContentSource.java +++ b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/MaxBufferContentSource.java @@ -25,7 +25,6 @@ public class MaxBufferContentSource implements Content.Source private final int maxSize; private Content.Chunk activeChunk; private Throwable failed; - private boolean terminated = false; public MaxBufferContentSource(Content.Source source, int maxSize) { @@ -56,9 +55,6 @@ public Content.Chunk read() if (failed != null) return Content.Chunk.from(failed, true); - if (terminated) - return Content.Chunk.EOF; - Content.Chunk readChunk = readChunk(); if (readChunk == null) return null; diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java index 64e6af356738..89471af9c443 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardCompression.java @@ -35,8 +35,6 @@ import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * Compression for Zstandard. @@ -51,8 +49,6 @@ */ public class ZstandardCompression extends Compression { - private static final Logger LOG = LoggerFactory.getLogger(ZstandardCompression.class); - private static final String ENCODING_NAME = "zstd"; private static final HttpField X_CONTENT_ENCODING = new PreEncodedHttpField("X-Content-Encoding", ENCODING_NAME); private static final HttpField CONTENT_ENCODING = new PreEncodedHttpField(HttpHeader.CONTENT_ENCODING, ENCODING_NAME); @@ -108,7 +104,7 @@ public DecoderConfig getDefaultDecoderConfig() @Override public void setDefaultDecoderConfig(DecoderConfig config) { - ZstandardDecoderConfig zstandardDecoderConfig = ZstandardDecoderConfig.class.cast(config); + ZstandardDecoderConfig zstandardDecoderConfig = (ZstandardDecoderConfig)config; this.defaultDecoderConfig = Objects.requireNonNull(zstandardDecoderConfig); } @@ -121,7 +117,7 @@ public EncoderConfig getDefaultEncoderConfig() @Override public void setDefaultEncoderConfig(EncoderConfig config) { - ZstandardEncoderConfig zstandardEncoderConfig = ZstandardEncoderConfig.class.cast(config); + ZstandardEncoderConfig zstandardEncoderConfig = (ZstandardEncoderConfig)config; this.defaultEncoderConfig = Objects.requireNonNull(zstandardEncoderConfig); } @@ -158,7 +154,7 @@ public HttpField getXContentEncodingField() @Override public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) throws IOException { - ZstandardDecoderConfig zstandardDecoderConfig = ZstandardDecoderConfig.class.cast(config); + ZstandardDecoderConfig zstandardDecoderConfig = (ZstandardDecoderConfig)config; ZstdInputStreamNoFinalizer inputStream = new ZstdInputStreamNoFinalizer(in); config.setBufferSize(zstandardDecoderConfig.getBufferSize()); return inputStream; @@ -167,14 +163,14 @@ public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) t @Override public DecoderSource newDecoderSource(Content.Source source, DecoderConfig config) { - ZstandardDecoderConfig zstandardDecoderConfig = ZstandardDecoderConfig.class.cast(config); + ZstandardDecoderConfig zstandardDecoderConfig = (ZstandardDecoderConfig)config; return new ZstandardDecoderSource(this, source, zstandardDecoderConfig); } @Override public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig config) throws IOException { - ZstandardEncoderConfig zstandardEncoderConfig = ZstandardEncoderConfig.class.cast(config); + ZstandardEncoderConfig zstandardEncoderConfig = (ZstandardEncoderConfig)config; ZstdOutputStreamNoFinalizer outputStream = new ZstdOutputStreamNoFinalizer(out, zstandardEncoderConfig.getCompressionLevel()); if (zstandardEncoderConfig.getStrategy() >= 0) outputStream.setStrategy(zstandardEncoderConfig.getStrategy()); @@ -184,7 +180,7 @@ public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig confi @Override public EncoderSink newEncoderSink(Content.Sink sink, EncoderConfig config) { - ZstandardEncoderConfig zstandardEncoderConfig = ZstandardEncoderConfig.class.cast(config); + ZstandardEncoderConfig zstandardEncoderConfig = (ZstandardEncoderConfig)config; return new ZstandardEncoderSink(this, sink, zstandardEncoderConfig); } diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java index 076d9967c31f..271b4ba67eba 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java @@ -58,7 +58,7 @@ public int getBufferSize() @Override public void setBufferSize(int size) { - this.bufferSize = this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); + this.bufferSize = Math.max(MIN_BUFFER_SIZE, size); } public boolean isMagicless() diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java index ff513f07ebba..e4f70e3987f1 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java @@ -29,7 +29,7 @@ public class ZstandardEncoderConfig implements EncoderConfig */ public static final int DEFAULT_BUFFER_SIZE; public static final int MIN_BUFFER_SIZE = 32; - private static final Logger LOG = LoggerFactory.getLogger(ZstandardDecoderConfig.class); + private static final Logger LOG = LoggerFactory.getLogger(ZstandardEncoderConfig.class); static { diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java index da8d69e6c5cb..170d031994b8 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardDecoderSource.java @@ -26,7 +26,6 @@ public class ZstandardDecoderSource extends DecoderSource { private final ZstandardCompression compression; private final ZstdDecompressCtx decompressCtx; - private final int bufferSize; public ZstandardDecoderSource(ZstandardCompression compression, Content.Source src, ZstandardDecoderConfig config) { @@ -34,7 +33,6 @@ public ZstandardDecoderSource(ZstandardCompression compression, Content.Source s this.compression = compression; this.decompressCtx = new ZstdDecompressCtx(); this.decompressCtx.setMagicless(config.isMagicless()); - this.bufferSize = config.getBufferSize(); } @Override diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java index 98c38f46c194..13c6451c1706 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java @@ -97,7 +97,7 @@ protected WriteRecord encode(boolean last, ByteBuffer content) case CONTINUE -> continueOp(last, content); case END -> endOp(last); case FLUSH -> flushOp(last); - case FINISHED -> finishOp(last); + case FINISHED -> null; }; if (writeRecord != null) done = true; @@ -152,7 +152,7 @@ private WriteRecord continueOp(boolean last, ByteBuffer content) while (inputBuf.hasRemaining()) { outputBuf.getByteBuffer().clear(); - boolean flushed = compressCtx.compressDirectByteBufferStream(outputBuf.getByteBuffer(), inputBuf.getByteBuffer(), EndDirective.CONTINUE); + compressCtx.compressDirectByteBufferStream(outputBuf.getByteBuffer(), inputBuf.getByteBuffer(), EndDirective.CONTINUE); outputBuf.getByteBuffer().flip(); if (outputBuf.getByteBuffer().hasRemaining()) { @@ -196,12 +196,6 @@ private WriteRecord endOp(boolean last) return null; } - private WriteRecord finishOp(boolean last) - { - // do nothing - return null; - } - private WriteRecord flushOp(boolean last) { if (!last) From b068d446f8406967aeadf0aa8378108cf02ea0e0 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:39:06 -0600 Subject: [PATCH 06/24] Moving (include/exclude) verb to before noun --- .../compression/server/CompressionConfig.java | 271 +++++++++--------- .../compression/CompressionHandlerTest.java | 50 ++-- 2 files changed, 160 insertions(+), 161 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java index 0838e7c84463..e2d95e861d23 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java @@ -110,72 +110,72 @@ public static Builder builder() * Get the set of excluded HTTP methods for Response compression. * * @return the set of excluded HTTP methods - * @see #getCompressMethodIncludes() + * @see #getCompressIncludeMethods() */ @ManagedAttribute("Set of HTTP Method Exclusions") - public Set getCompressMethodExcludes() + public Set getCompressExcludeMethods() { Set excluded = compressMethods.getExcluded(); return Collections.unmodifiableSet(excluded); } /** - * Get the set of included HTTP methods for Response compression + * Get the set of excluded MIME types for Response compression. * - * @return the set of included HTTP methods - * @see #getCompressMethodExcludes() + * @return the set of excluded MIME types + * @see #getCompressIncludeMimeTypes() */ - @ManagedAttribute("Set of HTTP Method Inclusions") - public Set getCompressMethodIncludes() + @ManagedAttribute("Set of Mime-Types Excluded from Response compression") + public Set getCompressExcludeMimeTypes() { - Set includes = compressMethods.getIncluded(); - return Collections.unmodifiableSet(includes); + Set excluded = compressMimeTypes.getExcluded(); + return Collections.unmodifiableSet(excluded); } /** - * Get the set of excluded MIME types for Response compression. + * Get the set of excluded Path Specs for response compression. * - * @return the set of excluded MIME types - * @see #getCompressMimeTypeIncludes() + * @return the set of excluded Path Specs + * @see #getCompressPathIncludes() */ - @ManagedAttribute("Set of Mime-Types Excluded from Response compression") - public Set getCompressMimeTypeExcludes() + @ManagedAttribute("Set of Response Compression Path Exclusions") + public Set getCompressExcludePaths() { - Set excluded = compressMimeTypes.getExcluded(); + Set excluded = compressPaths.getExcluded(); return Collections.unmodifiableSet(excluded); } /** - * Get the set of included MIME types for Response compression. + * Get the set of included HTTP methods for Response compression * - * @return the filter list of included MIME types - * @see #getCompressMimeTypeExcludes() + * @return the set of included HTTP methods + * @see #getCompressExcludeMethods() */ - @ManagedAttribute("Set of Mime-Types Included in Response compression") - public Set getCompressMimeTypeIncludes() + @ManagedAttribute("Set of HTTP Method Inclusions") + public Set getCompressIncludeMethods() { - Set includes = compressMimeTypes.getIncluded(); + Set includes = compressMethods.getIncluded(); return Collections.unmodifiableSet(includes); } /** - * Get the set of excluded Path Specs for response compression. + * Get the set of included MIME types for Response compression. * - * @return the set of excluded Path Specs - * @see #getCompressPathIncludes() + * @return the filter list of included MIME types + * @see #getCompressExcludeMimeTypes() */ - @ManagedAttribute("Set of Response Compression Path Exclusions") - public Set getCompressPathExcludes() + @ManagedAttribute("Set of Mime-Types Included in Response compression") + public Set getCompressIncludeMimeTypes() { - Set excluded = compressPaths.getExcluded(); - return Collections.unmodifiableSet(excluded); + Set includes = compressMimeTypes.getIncluded(); + return Collections.unmodifiableSet(includes); } /** * Get the set of included Path Specs for response compression. * * @return the set of included Path Specs - * @see #getCompressPathExcludes() + * @see #getCompressExcludePaths() */ @ManagedAttribute("Set of Response Compression Path Exclusions") public Set getCompressPathIncludes() @@ -273,49 +273,49 @@ protected String selectEncoderMatch(List preferredEncoders) * Get the set of excluded HTTP methods for Request decompression. * * @return the set of excluded HTTP methods - * @see #getDecompressMethodIncludes() + * @see #getDecompressIncludeMethods() */ @ManagedAttribute("Set of HTTP Method Exclusions") - public Set getDecompressMethodExcludes() + public Set getDecompressExcludeMethods() { Set excluded = decompressMethods.getExcluded(); return Collections.unmodifiableSet(excluded); } /** - * Get the set of included HTTP methods for Request decompression + * Get the set of excluded Path Specs for request decompression. * - * @return the set of included HTTP methods - * @see #getDecompressMethodExcludes() + * @return the set of excluded Path Specs + * @see #getDecompressIncludePaths() */ - @ManagedAttribute("Set of HTTP Method Inclusions") - public Set getDecompressMethodIncludes() + @ManagedAttribute("Set of Request Decompression Path Exclusions") + public Set getDecompressExcludePaths() { - Set includes = decompressMethods.getIncluded(); - return Collections.unmodifiableSet(includes); + Set excluded = decompressPaths.getExcluded(); + return Collections.unmodifiableSet(excluded); } /** - * Get the set of excluded Path Specs for request decompression. + * Get the set of included HTTP methods for Request decompression * - * @return the set of excluded Path Specs - * @see #getDecompressPathIncludes() + * @return the set of included HTTP methods + * @see #getDecompressExcludeMethods() */ - @ManagedAttribute("Set of Request Decompression Path Exclusions") - public Set getDecompressPathExcludes() + @ManagedAttribute("Set of HTTP Method Inclusions") + public Set getDecompressIncludeMethods() { - Set excluded = decompressPaths.getExcluded(); - return Collections.unmodifiableSet(excluded); + Set includes = decompressMethods.getIncluded(); + return Collections.unmodifiableSet(includes); } /** * Get the set of included Path Specs for request decompression. * * @return the set of included Path Specs - * @see #getDecompressPathExcludes() + * @see #getDecompressExcludePaths() */ @ManagedAttribute("Set of Request Decompression Path Inclusions") - public Set getDecompressPathIncludes() + public Set getDecompressIncludePaths() { Set includes = decompressPaths.getIncluded(); return Collections.unmodifiableSet(includes); @@ -447,95 +447,95 @@ public CompressionConfig build() * @param encoding the encoding to exclude * @return this builder */ - public Builder compressEncodingExclude(String encoding) + public Builder compressExcludeEncoding(String encoding) { this.compressEncodings.exclude(encoding); return this; } /** - * A {@code Accept-Encoding} encoding to include. + * An HTTP method to exclude for Response compression. * - * @param encoding the encoding to include + * @param method the method to exclude * @return this builder */ - public Builder compressEncodingInclude(String encoding) + public Builder compressExcludeMethod(String method) { - this.compressEncodings.include(encoding); + this.compressMethods.exclude(method); return this; } /** - * An HTTP method to exclude for Response compression. + * A non-compressible mimetype to exclude for Response compression. * - * @param method the method to exclude + *

+ * The response {@code Content-Type} is evaluated. + *

+ * + * @param mimetype the mimetype to exclude * @return this builder */ - public Builder compressMethodExclude(String method) + public Builder compressExcludeMimeType(String mimetype) { - this.compressMethods.exclude(method); + this.compressMimeTypes.exclude(mimetype); return this; } /** - * An HTTP method to include for Response compression. + * A path that does not support response content compression. * - * @param method the method to include - * @return this builder + *

+ * See {@link Builder} for details on PathSpec string. + *

+ * + * @param pathSpecString the path spec string to exclude. The pathInContext + * is used to match against this path spec. + * @return this builder. + * @see #compressIncludePath(String) */ - public Builder compressMethodInclude(String method) + public Builder compressExcludePath(String pathSpecString) { - this.compressMethods.include(method); + this.compressPaths.exclude(pathSpecString); return this; } /** - * A non-compressible mimetype to exclude for Response compression. - * - *

- * The response {@code Content-Type} is evaluated. - *

+ * A {@code Accept-Encoding} encoding to include. * - * @param mimetype the mimetype to exclude + * @param encoding the encoding to include * @return this builder */ - public Builder compressMimeTypeExclude(String mimetype) + public Builder compressIncludeEncoding(String encoding) { - this.compressMimeTypes.exclude(mimetype); + this.compressEncodings.include(encoding); return this; } /** - * A compressible mimetype to include for Response compression. - * - *

- * The response {@code Content-Type} is evaluated. - *

+ * An HTTP method to include for Response compression. * - * @param mimetype the mimetype to include + * @param method the method to include * @return this builder */ - public Builder compressMimeTypeInclude(String mimetype) + public Builder compressIncludeMethod(String method) { - this.compressMimeTypes.include(mimetype); + this.compressMethods.include(method); return this; } /** - * A path that does not support response content compression. + * A compressible mimetype to include for Response compression. * *

- * See {@link Builder} for details on PathSpec string. + * The response {@code Content-Type} is evaluated. *

* - * @param pathSpecString the path spec string to exclude. The pathInContext - * is used to match against this path spec. - * @return this builder. - * @see #compressPathInclude(String) + * @param mimetype the mimetype to include + * @return this builder */ - public Builder compressPathExclude(String pathSpecString) + public Builder compressIncludeMimeType(String mimetype) { - this.compressPaths.exclude(pathSpecString); + this.compressMimeTypes.include(mimetype); return this; } @@ -549,9 +549,9 @@ public Builder compressPathExclude(String pathSpecString) * @param pathSpecString the path spec string to include. The pathInContext * is used to match against this path spec. * @return this builder. - * @see #compressPathExclude(String) + * @see #compressExcludePath(String) */ - public Builder compressPathInclude(String pathSpecString) + public Builder compressIncludePath(String pathSpecString) { this.compressPaths.include(pathSpecString); return this; @@ -638,95 +638,95 @@ public Builder compressPreferredEncoderOrder(List encoders) * @param encoding the encoding to exclude * @return this builder */ - public Builder decompressEncodingExclude(String encoding) + public Builder decompressExcludeEncoding(String encoding) { this.decompressEncodings.exclude(encoding); return this; } /** - * A {@code Content-Encoding} encoding to include. + * An HTTP method to exclude for Request decompression. * - * @param encoding the encoding to include + * @param method the method to exclude * @return this builder */ - public Builder decompressEncodingInclude(String encoding) + public Builder decompressExcludeMethod(String method) { - this.decompressEncodings.include(encoding); + this.decompressMethods.exclude(method); return this; } /** - * An HTTP method to exclude for Request decompression. + * A non-compressed mimetype to exclude for Request decompression. * - * @param method the method to exclude + *

+ * The Request {@code Content-Type} is evaluated. + *

+ * + * @param mimetype the mimetype to exclude * @return this builder */ - public Builder decompressMethodExclude(String method) + public Builder decompressExcludeMimeType(String mimetype) { - this.decompressMethods.exclude(method); + this.decompressMimeTypes.exclude(mimetype); return this; } /** - * An HTTP method to include for Request decompression. + * A path that does not support request content decompression. * - * @param method the method to include - * @return this builder + *

+ * See {@link Builder} for details on PathSpec string. + *

+ * + * @param pathSpecString the path spec string to exclude. The pathInContext + * is used to match against this path spec. + * @return this builder. + * @see #decompressIncludePath(String) */ - public Builder decompressMethodInclude(String method) + public Builder decompressExcludePath(String pathSpecString) { - this.decompressMethods.include(method); + this.decompressPaths.exclude(pathSpecString); return this; } /** - * A non-compressed mimetype to exclude for Request decompression. - * - *

- * The Request {@code Content-Type} is evaluated. - *

+ * A {@code Content-Encoding} encoding to include. * - * @param mimetype the mimetype to exclude + * @param encoding the encoding to include * @return this builder */ - public Builder decompressMimeTypeExclude(String mimetype) + public Builder decompressIncludeEncoding(String encoding) { - this.decompressMimeTypes.exclude(mimetype); + this.decompressEncodings.include(encoding); return this; } /** - * A compressed mimetype to include for Request decompression. - * - *

- * The request {@code Content-Type} is evaluated. - *

+ * An HTTP method to include for Request decompression. * - * @param mimetype the mimetype to include + * @param method the method to include * @return this builder */ - public Builder decompressMimeTypeInclude(String mimetype) + public Builder decompressIncludeMethod(String method) { - this.decompressMimeTypes.include(mimetype); + this.decompressMethods.include(method); return this; } /** - * A path that does not support request content decompression. + * A compressed mimetype to include for Request decompression. * *

- * See {@link Builder} for details on PathSpec string. + * The request {@code Content-Type} is evaluated. *

* - * @param pathSpecString the path spec string to exclude. The pathInContext - * is used to match against this path spec. - * @return this builder. - * @see #decompressPathInclude(String) + * @param mimetype the mimetype to include + * @return this builder */ - public Builder decompressPathExclude(String pathSpecString) + public Builder decompressIncludeMimeType(String mimetype) { - this.decompressPaths.exclude(pathSpecString); + this.decompressMimeTypes.include(mimetype); return this; } @@ -740,9 +740,9 @@ public Builder decompressPathExclude(String pathSpecString) * @param pathSpecString the path spec string to include. The pathInContext * is used to match against this path spec. * @return this builder. - * @see #decompressPathExclude(String) + * @see #decompressExcludePath(String) */ - public Builder decompressPathInclude(String pathSpecString) + public Builder decompressIncludePath(String pathSpecString) { this.decompressPaths.include(pathSpecString); return this; @@ -760,17 +760,17 @@ public Builder from(MimeTypes mimeTypes) { if ("image/svg+xml".equals(type)) { - compressMimeTypeExclude(type); - decompressMimeTypeExclude(type); - compressPathExclude("*.svgz"); - decompressPathExclude("*.svgz"); + compressExcludeMimeType(type); + decompressExcludeMimeType(type); + compressExcludePath("*.svgz"); + decompressExcludePath("*.svgz"); } else if (type.startsWith("image/") || type.startsWith("audio/") || type.startsWith("video/")) { - compressMimeTypeExclude(type); - decompressMimeTypeExclude(type); + compressExcludeMimeType(type); + decompressExcludeMimeType(type); } } @@ -788,8 +788,8 @@ else if (type.startsWith("image/") || "text/event-stream" ).forEach((type) -> { - compressMimeTypeExclude(type); - decompressMimeTypeExclude(type); + compressExcludeMimeType(type); + decompressExcludeMimeType(type); }); return this; @@ -831,7 +831,6 @@ public Builder varyHeader(HttpField vary) return this; } - // TODO: preference order of compressions. // TODO: compression specific config (eg: compression level, strategy, etc) // TODO: dictionary support diff --git a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java index 4393f33f78d1..4488fd9f17e4 100644 --- a/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java +++ b/jetty-core/jetty-compression/jetty-compression-tests/src/test/java/org/eclipse/jetty/compression/CompressionHandlerTest.java @@ -106,9 +106,9 @@ public void testCompressEncodingsConfig(String compressionType, CompressionHandler compressionHandler = new CompressionHandler(); compressionHandler.addCompression(compression); CompressionConfig config = CompressionConfig.builder() - .compressEncodingInclude("br") - .compressEncodingInclude("gzip") - .compressEncodingExclude("zstd") + .compressIncludeEncoding("br") + .compressIncludeEncoding("gzip") + .compressExcludeEncoding("zstd") .build(); compressionHandler.putConfiguration("/", config); @@ -155,7 +155,8 @@ public boolean handle(Request request, Response response, Callback callback) /** * Testing how CompressionHandler acts with a single compression implementation added. - * Configuration is only using {@code compressPath} excluding {@code *.png} paths, and including {@code /path/*} + * Configuration is only using {@code compressMimeTypes} excluding {@code image/png}, and including both + * {@code text/plain} and {@code image/svg+xml} */ @ParameterizedTest @CsvSource(textBlock = """ @@ -176,11 +177,11 @@ public boolean handle(Request request, Response response, Callback callback) gzip, images/logo.png, image/png, /images/logo.png, false gzip, images/logo.png, image/png, /path/deep/images/logo.png, false """) - public void testCompressPathConfig(String compressionType, - String resourceName, - String resourceContentType, - String requestedPath, - boolean expectedIsCompressed) throws Exception + public void testCompressMimeTypesConfig(String compressionType, + String resourceName, + String resourceContentType, + String requestedPath, + boolean expectedIsCompressed) throws Exception { newCompression(compressionType); Path resourcePath = MavenPaths.findTestResourceFile(resourceName); @@ -189,8 +190,9 @@ public void testCompressPathConfig(String compressionType, CompressionHandler compressionHandler = new CompressionHandler(); compressionHandler.addCompression(compression); CompressionConfig config = CompressionConfig.builder() - .compressPathInclude("/path/*") - .compressPathExclude("*.png") + .compressIncludeMimeType("text/plain") + .compressIncludeMimeType("image/svg+xml") + .compressExcludeMimeType("image/png") .build(); compressionHandler.putConfiguration("/", config); @@ -356,8 +358,7 @@ public boolean handle(Request request, Response response, Callback callback) /** * Testing how CompressionHandler acts with a single compression implementation added. - * Configuration is only using {@code compressMimeTypes} excluding {@code image/png}, and including both - * {@code text/plain} and {@code image/svg+xml} + * Configuration is only using {@code compressPath} excluding {@code *.png} paths, and including {@code /path/*} */ @ParameterizedTest @CsvSource(textBlock = """ @@ -378,11 +379,11 @@ public boolean handle(Request request, Response response, Callback callback) gzip, images/logo.png, image/png, /images/logo.png, false gzip, images/logo.png, image/png, /path/deep/images/logo.png, false """) - public void testCompressMimeTypesConfig(String compressionType, - String resourceName, - String resourceContentType, - String requestedPath, - boolean expectedIsCompressed) throws Exception + public void testCompressPathConfig(String compressionType, + String resourceName, + String resourceContentType, + String requestedPath, + boolean expectedIsCompressed) throws Exception { newCompression(compressionType); Path resourcePath = MavenPaths.findTestResourceFile(resourceName); @@ -391,9 +392,8 @@ public void testCompressMimeTypesConfig(String compressionType, CompressionHandler compressionHandler = new CompressionHandler(); compressionHandler.addCompression(compression); CompressionConfig config = CompressionConfig.builder() - .compressMimeTypeInclude("text/plain") - .compressMimeTypeInclude("image/svg+xml") - .compressMimeTypeExclude("image/png") + .compressIncludePath("/path/*") + .compressExcludePath("*.png") .build(); compressionHandler.putConfiguration("/", config); @@ -469,10 +469,10 @@ public void testDecompressMethodsConfig(String compressionType, CompressionHandler compressionHandler = new CompressionHandler(); compressionHandler.addCompression(compression); CompressionConfig config = CompressionConfig.builder() - .decompressMethodInclude("GET") - .decompressMethodInclude("POST") - .decompressMethodExclude("PUT") - .compressEncodingExclude(compression.getEncodingName()) // don't compress the responses + .decompressIncludeMethod("GET") + .decompressIncludeMethod("POST") + .decompressExcludeMethod("PUT") + .compressExcludeEncoding(compression.getEncodingName()) // don't compress the responses .build(); compressionHandler.putConfiguration("/", config); From 78921e6e17ff69d7c5b7af289ffbad0cf5f31757 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:46:30 -0600 Subject: [PATCH 07/24] Renaming jetty-compression-api to jetty-compression-common --- .../jetty-compression-brotli/pom.xml | 2 +- .../brotli/BrotliDecoderConfig.java | 4 +- .../brotli/BrotliEncoderConfig.java | 7 ++-- .../pom.xml | 38 +++++++++---------- .../main/config/modules/compression-api.mod | 2 +- .../src/main/java/module-info.java | 0 .../jetty/compression/Compression.java | 2 - .../jetty/compression/DecoderConfig.java | 0 .../jetty/compression/DecoderSource.java | 0 .../jetty/compression/EncoderConfig.java | 0 .../jetty/compression/EncoderSink.java | 0 .../jetty-compression-gzip/pom.xml | 2 +- .../compression/gzip/GzipDecoderConfig.java | 5 +-- .../compression/gzip/GzipEncoderConfig.java | 4 +- .../jetty-compression-server/pom.xml | 2 +- .../jetty-compression-zstandard/pom.xml | 2 +- .../zstandard/ZstandardDecoderConfig.java | 4 +- .../zstandard/ZstandardEncoderConfig.java | 4 +- jetty-core/jetty-compression/pom.xml | 2 +- 19 files changed, 38 insertions(+), 42 deletions(-) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/pom.xml (90%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/config/modules/compression-api.mod (75%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/module-info.java (100%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/org/eclipse/jetty/compression/Compression.java (99%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/org/eclipse/jetty/compression/DecoderConfig.java (100%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/org/eclipse/jetty/compression/DecoderSource.java (100%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/org/eclipse/jetty/compression/EncoderConfig.java (100%) rename jetty-core/jetty-compression/{jetty-compression-api => jetty-compression-common}/src/main/java/org/eclipse/jetty/compression/EncoderSink.java (100%) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml index a3bbb5b61e94..4d0d53bc2b0b 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml @@ -25,7 +25,7 @@
org.eclipse.jetty.compression - jetty-compression-api + jetty-compression-common ${project.version} diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java index 81984465995c..e72e2097729a 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliDecoderConfig.java @@ -20,8 +20,8 @@ public class BrotliDecoderConfig implements DecoderConfig /** * Default Buffer Size as found in Brotli4j. */ - public static final int DEFAULT_BUFFER_SIZE = 16384; - public static final int MIN_BUFFER_SIZE = 32; + private static final int DEFAULT_BUFFER_SIZE = 16384; + private static final int MIN_BUFFER_SIZE = 32; private int bufferSize = DEFAULT_BUFFER_SIZE; @Override diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java index dfa4a6d3d456..76f3da7421f7 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliEncoderConfig.java @@ -24,15 +24,14 @@ public class BrotliEncoderConfig implements EncoderConfig * * @see Encoder Defaults */ - public static final int DEFAULT_QUALITY = 11; + private static final int DEFAULT_QUALITY = 11; /** * Default Brotli Window. * * @see Encoder Defaults */ - public static final int DEFAULT_WINDOW = 22; - - public static final int MIN_BUFFER_SIZE = 32; + private static final int DEFAULT_WINDOW = 22; + private static final int MIN_BUFFER_SIZE = 32; private int bufferSize = 4096; private int strategy = 0; diff --git a/jetty-core/jetty-compression/jetty-compression-api/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml similarity index 90% rename from jetty-core/jetty-compression/jetty-compression-api/pom.xml rename to jetty-core/jetty-compression/jetty-compression-common/pom.xml index c8c5a1ac0031..3cd835428258 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -1,38 +1,38 @@ - 4.0.0 - - org.eclipse.jetty.compression - jetty-compression - 12.1.0-SNAPSHOT - - jetty-compression-api - jar - Core :: Compression :: API - Jetty Core Compression API - - - ${project.groupId}.api - - + jetty-compression-common - org.eclipse.jetty jetty-http + org.eclipse.jetty - org.eclipse.jetty jetty-io + org.eclipse.jetty - org.eclipse.jetty jetty-util + org.eclipse.jetty - org.eclipse.jetty jetty-slf4j-impl + org.eclipse.jetty test + Jetty Core Compression API + 4.0.0 + Core :: Compression :: API + jar + + + jetty-compression + org.eclipse.jetty.compression + 12.1.0-SNAPSHOT + + + + ${project.groupId} + diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/config/modules/compression-api.mod b/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod similarity index 75% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/config/modules/compression-api.mod rename to jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod index cbf304b33574..b15abeb985c9 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/src/main/config/modules/compression-api.mod +++ b/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod @@ -13,6 +13,6 @@ experimental server [lib] -lib/compression/jetty-compression-api-${jetty.version}.jar +lib/compression/jetty-compression-common-${jetty.version}.jar diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/module-info.java similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/module-info.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/module-info.java diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java similarity index 99% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java index 5a2905db07a9..b589aee8e44b 100644 --- a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/Compression.java +++ b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java @@ -20,8 +20,6 @@ import org.eclipse.jetty.http.EtagUtils; import org.eclipse.jetty.http.HttpField; -import org.eclipse.jetty.http.HttpFields; -import org.eclipse.jetty.http.HttpHeader; import org.eclipse.jetty.io.ByteBufferPool; import org.eclipse.jetty.io.Content; import org.eclipse.jetty.io.RetainableByteBuffer; diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/DecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/DecoderConfig.java similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/DecoderConfig.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/DecoderConfig.java diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/DecoderSource.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/DecoderSource.java similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/DecoderSource.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/DecoderSource.java diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderConfig.java similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderConfig.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderConfig.java diff --git a/jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-api/src/main/java/org/eclipse/jetty/compression/EncoderSink.java rename to jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml b/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml index c72b1b3dfeb4..77b493848994 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml @@ -19,7 +19,7 @@ org.eclipse.jetty.compression - jetty-compression-api + jetty-compression-common ${project.version} diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java index e130b2b3be28..70c8a4826cc2 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipDecoderConfig.java @@ -20,12 +20,11 @@ public class GzipDecoderConfig implements DecoderConfig /** * Default Buffer Size as found in {@link java.util.zip.GZIPInputStream}. */ - public static final int DEFAULT_BUFFER_SIZE = 512; + private static final int DEFAULT_BUFFER_SIZE = 512; /** * Minimum buffer size to avoid issues with JDK-8133170 */ - public static final int MIN_BUFFER_SIZE = 32; - + private static final int MIN_BUFFER_SIZE = 32; private int bufferSize = DEFAULT_BUFFER_SIZE; @Override diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java index 06ccb7001e82..eef7560f46ba 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java @@ -22,11 +22,11 @@ public class GzipEncoderConfig implements EncoderConfig /** * Default Buffer Size as found in {@link java.util.zip.GZIPOutputStream}. */ - public static final int DEFAULT_BUFFER_SIZE = 512; + private static final int DEFAULT_BUFFER_SIZE = 512; /** * Minimum buffer size to avoid issues with JDK-8133170 */ - public static final int MIN_BUFFER_SIZE = 8; + private static final int MIN_BUFFER_SIZE = 8; private int bufferSize = DEFAULT_BUFFER_SIZE; private int level = Deflater.DEFAULT_COMPRESSION; diff --git a/jetty-core/jetty-compression/jetty-compression-server/pom.xml b/jetty-core/jetty-compression/jetty-compression-server/pom.xml index dc4e7fbc4567..daa8592e87af 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-server/pom.xml @@ -23,7 +23,7 @@ org.eclipse.jetty.compression - jetty-compression-api + jetty-compression-common ${project.version} diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml b/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml index 10a5cabedcde..f79371f1a7b1 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml @@ -25,7 +25,7 @@ org.eclipse.jetty.compression - jetty-compression-api + jetty-compression-common ${project.version} diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java index 271b4ba67eba..873ea3f0943d 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardDecoderConfig.java @@ -26,8 +26,8 @@ public class ZstandardDecoderConfig implements DecoderConfig /** * Default Buffer Size as found in zstd-jni. */ - public static final int DEFAULT_BUFFER_SIZE; - public static final int MIN_BUFFER_SIZE = 32; + private static final int DEFAULT_BUFFER_SIZE; + private static final int MIN_BUFFER_SIZE = 32; private static final Logger LOG = LoggerFactory.getLogger(ZstandardDecoderConfig.class); static diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java index e4f70e3987f1..1b6ed3bdf4a2 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/ZstandardEncoderConfig.java @@ -27,8 +27,8 @@ public class ZstandardEncoderConfig implements EncoderConfig /** * Default Buffer Size as found in zstd-jni. */ - public static final int DEFAULT_BUFFER_SIZE; - public static final int MIN_BUFFER_SIZE = 32; + private static final int DEFAULT_BUFFER_SIZE; + private static final int MIN_BUFFER_SIZE = 32; private static final Logger LOG = LoggerFactory.getLogger(ZstandardEncoderConfig.class); static diff --git a/jetty-core/jetty-compression/pom.xml b/jetty-core/jetty-compression/pom.xml index 408154bb0dfe..72d59cc617c6 100644 --- a/jetty-core/jetty-compression/pom.xml +++ b/jetty-core/jetty-compression/pom.xml @@ -15,7 +15,7 @@ Jetty Core Compression - jetty-compression-api + jetty-compression-common jetty-compression-server jetty-compression-gzip jetty-compression-brotli From a95c78097f15418c90f113206527f31793ecb76a Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:51:32 -0600 Subject: [PATCH 08/24] Renaming module compression-api to commpression-common --- .../src/main/config/modules/compression-brotli.mod | 2 +- .../modules/{compression-api.mod => compression-common.mod} | 2 +- .../src/main/config/modules/compression-gzip.mod | 2 +- .../src/main/config/modules/compression-zstandard.mod | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/{compression-api.mod => compression-common.mod} (82%) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod index a77500ac038b..11bc1b7a5205 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod @@ -10,7 +10,7 @@ compression experimental [depend] -compression-api +compression-common compression [files] diff --git a/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod b/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod similarity index 82% rename from jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod rename to jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod index b15abeb985c9..7aa4196f2a87 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-api.mod +++ b/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod @@ -1,7 +1,7 @@ # DO NOT EDIT THIS FILE - See: https://jetty.org/docs/ [description] -Enables Experimental Common Compression API. +Enables Experimental Common Compression. [tags] server diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod index e1085aff98ed..6d2dd430489a 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod @@ -10,7 +10,7 @@ compression experimental [depend] -compression-api +compression-common compression [lib] diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod index adc4d2ffba99..40e2b9bd3e0d 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod @@ -10,7 +10,7 @@ compression experimental [depend] -compression-api +compression-common compression [files] From af163a1948ad092eecc7b249ee01ae1962b64a6c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:58:59 -0600 Subject: [PATCH 09/24] Removing class.cast(obj) usages --- .../compression/brotli/BrotliCompression.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java index 9c86e4124f4f..bd9f4bd37ccf 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/java/org/eclipse/jetty/compression/brotli/BrotliCompression.java @@ -101,10 +101,10 @@ public DecoderConfig getDefaultDecoderConfig() } @Override - public void setDefaultDecoderConfig(DecoderConfig config) + public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) throws IOException { - BrotliDecoderConfig brotliDecoderConfig = BrotliDecoderConfig.class.cast(config); - this.defaultDecoderConfig = brotliDecoderConfig; + BrotliDecoderConfig brotliDecoderConfig = (BrotliDecoderConfig)config; + return new BrotliInputStream(in, brotliDecoderConfig.getBufferSize()); } @Override @@ -114,10 +114,10 @@ public EncoderConfig getDefaultEncoderConfig() } @Override - public void setDefaultEncoderConfig(EncoderConfig config) + public DecoderSource newDecoderSource(Content.Source source, DecoderConfig config) { - BrotliEncoderConfig brotliEncoderConfig = BrotliEncoderConfig.class.cast(config); - this.defaultEncoderConfig = Objects.requireNonNull(brotliEncoderConfig); + BrotliDecoderConfig brotliDecoderConfig = (BrotliDecoderConfig)config; + return new BrotliDecoderSource(source, brotliDecoderConfig); } @Override @@ -151,31 +151,30 @@ public HttpField getXContentEncodingField() } @Override - public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) throws IOException + public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig config) throws IOException { - BrotliDecoderConfig brotliDecoderConfig = BrotliDecoderConfig.class.cast(config); - return new BrotliInputStream(in, config.getBufferSize()); + BrotliEncoderConfig brotliEncoderConfig = (BrotliEncoderConfig)config; + return new BrotliOutputStream(out, brotliEncoderConfig.asEncoderParams()); } @Override - public DecoderSource newDecoderSource(Content.Source source, DecoderConfig config) + public EncoderSink newEncoderSink(Content.Sink sink, EncoderConfig config) { - BrotliDecoderConfig brotliDecoderConfig = BrotliDecoderConfig.class.cast(config); - return new BrotliDecoderSource(source, brotliDecoderConfig); + BrotliEncoderConfig brotliEncoderConfig = (BrotliEncoderConfig)config; + return new BrotliEncoderSink(sink, brotliEncoderConfig); } @Override - public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig config) throws IOException + public void setDefaultDecoderConfig(DecoderConfig config) { - BrotliEncoderConfig brotliEncoderConfig = BrotliEncoderConfig.class.cast(config); - return new BrotliOutputStream(out, brotliEncoderConfig.asEncoderParams()); + this.defaultDecoderConfig = (BrotliDecoderConfig)config; } @Override - public EncoderSink newEncoderSink(Content.Sink sink, EncoderConfig config) + public void setDefaultEncoderConfig(EncoderConfig config) { - BrotliEncoderConfig brotliEncoderConfig = BrotliEncoderConfig.class.cast(config); - return new BrotliEncoderSink(sink, brotliEncoderConfig); + BrotliEncoderConfig brotliEncoderConfig = (BrotliEncoderConfig)config; + this.defaultEncoderConfig = Objects.requireNonNull(brotliEncoderConfig); } private ByteOrder getByteOrder() From fa9745626f40e648ac65c53f5dc333db7badb8fd Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:59:14 -0600 Subject: [PATCH 10/24] Fix typo --- .../main/java/org/eclipse/jetty/compression/EncoderSink.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java index 208975bb8867..7d3426dbf87d 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/EncoderSink.java @@ -79,7 +79,7 @@ private class EncodeBufferCallback extends IteratingNestedCallback { private enum State { - // Intial state, nothing has been attempted yet + // Initial state, nothing has been attempted yet INITIAL, // We have started compressing COMPRESSING, From a6cf5a692fdcbc641426c3f6859e4b4b34b9dd1b Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:59:26 -0600 Subject: [PATCH 11/24] always add bean --- .../org/eclipse/jetty/compression/gzip/GzipCompression.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java index dc0400e780cd..b2501d580e50 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java @@ -188,14 +188,14 @@ protected void doStart() throws Exception if (deflaterPool == null) { deflaterPool = DeflaterPool.ensurePool(getContainer()); - addBean(deflaterPool); } + addBean(deflaterPool); if (inflaterPool == null) { inflaterPool = InflaterPool.ensurePool(getContainer()); - addBean(inflaterPool); } + addBean(inflaterPool); } @Override From 242c62ac778b1751dbcf88a6a217f32602c98300 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:59:38 -0600 Subject: [PATCH 12/24] use modern switch/case --- .../jetty/compression/gzip/GzipEncoderConfig.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java index eef7560f46ba..745b72f85f75 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipEncoderConfig.java @@ -73,13 +73,10 @@ public void setStrategy(int strategy) { switch (strategy) { - case Deflater.DEFAULT_STRATEGY: - case Deflater.FILTERED: - case Deflater.HUFFMAN_ONLY: - this.strategy = strategy; - break; - default: - throw new IllegalArgumentException("Unrecognized strategy: " + strategy); + case Deflater.DEFAULT_STRATEGY, + Deflater.FILTERED, + Deflater.HUFFMAN_ONLY -> this.strategy = strategy; + default -> throw new IllegalArgumentException("Unrecognized strategy: " + strategy); } } From dc8b219429fa9842e81580b26d3daf942300e084 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 10:59:52 -0600 Subject: [PATCH 13/24] cleanup unused source --- .../main/java/org/eclipse/jetty/compression/Compression.java | 3 --- .../compression/server/internal/DecompressionRequest.java | 1 - 2 files changed, 4 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java index b589aee8e44b..98d8f02b175c 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java +++ b/jetty-core/jetty-compression/jetty-compression-common/src/main/java/org/eclipse/jetty/compression/Compression.java @@ -26,12 +26,9 @@ import org.eclipse.jetty.util.StringUtil; import org.eclipse.jetty.util.component.Container; import org.eclipse.jetty.util.component.ContainerLifeCycle; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public abstract class Compression extends ContainerLifeCycle { - private static final Logger LOG = LoggerFactory.getLogger(Compression.class); private final String encodingName; private final String etagSuffix; private final String etagSuffixQuote; diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java index c289b1a57998..0c4aa994a534 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/internal/DecompressionRequest.java @@ -17,7 +17,6 @@ import org.eclipse.jetty.compression.Compression; import org.eclipse.jetty.compression.DecoderSource; -import org.eclipse.jetty.compression.server.CompressionConfig; import org.eclipse.jetty.compression.server.CompressionHandler; import org.eclipse.jetty.http.HttpField; import org.eclipse.jetty.http.HttpFields; From 232a12f124d552173e4c4e35a72277c6f12e202f Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 11:01:49 -0600 Subject: [PATCH 14/24] configurable gzip (input|output) stream --- .../compression/gzip/GzipCompression.java | 8 ++++---- ....java => ConfigurableGzipInputStream.java} | 4 ++-- ...java => ConfigurableGzipOutputStream.java} | 20 ++----------------- .../gzip/ConfiguredGzipOutputStreamTest.java | 4 ++-- 4 files changed, 10 insertions(+), 26 deletions(-) rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/{ConfiguredGzipInputStream.java => ConfigurableGzipInputStream.java} (85%) rename jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/{ConfiguredGzipOutputStream.java => ConfigurableGzipOutputStream.java} (69%) diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java index b2501d580e50..8e62827a3c0f 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/GzipCompression.java @@ -24,8 +24,8 @@ import org.eclipse.jetty.compression.DecoderSource; import org.eclipse.jetty.compression.EncoderConfig; import org.eclipse.jetty.compression.EncoderSink; -import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipInputStream; -import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipOutputStream; +import org.eclipse.jetty.compression.gzip.internal.ConfigurableGzipInputStream; +import org.eclipse.jetty.compression.gzip.internal.ConfigurableGzipOutputStream; import org.eclipse.jetty.compression.gzip.internal.GzipDecoderSource; import org.eclipse.jetty.compression.gzip.internal.GzipEncoderSink; import org.eclipse.jetty.http.HttpField; @@ -156,7 +156,7 @@ public HttpField getXContentEncodingField() public InputStream newDecoderInputStream(InputStream in, DecoderConfig config) throws IOException { GzipDecoderConfig gzipDecoderConfig = (GzipDecoderConfig)config; - return new ConfiguredGzipInputStream(in, gzipDecoderConfig); + return new ConfigurableGzipInputStream(in, gzipDecoderConfig); } @Override @@ -170,7 +170,7 @@ public DecoderSource newDecoderSource(Content.Source source, DecoderConfig confi public OutputStream newEncoderOutputStream(OutputStream out, EncoderConfig config) throws IOException { GzipEncoderConfig gzipEncoderConfig = (GzipEncoderConfig)config; - return new ConfiguredGzipOutputStream(out, gzipEncoderConfig); + return new ConfigurableGzipOutputStream(out, gzipEncoderConfig); } @Override diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipInputStream.java similarity index 85% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipInputStream.java index f8f06b8a7be0..4ad7f2222117 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipInputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipInputStream.java @@ -22,9 +22,9 @@ /** * A {@link GZIPInputStream} that you can configure, unlike the JVM default provided one. */ -public class ConfiguredGzipInputStream extends GZIPInputStream +public class ConfigurableGzipInputStream extends GZIPInputStream { - public ConfiguredGzipInputStream(InputStream in, GzipDecoderConfig config) throws IOException + public ConfigurableGzipInputStream(InputStream in, GzipDecoderConfig config) throws IOException { super(in, config.getBufferSize()); } diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipOutputStream.java similarity index 69% rename from jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java rename to jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipOutputStream.java index c5d38b24d015..479e97ec89fd 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfiguredGzipOutputStream.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/java/org/eclipse/jetty/compression/gzip/internal/ConfigurableGzipOutputStream.java @@ -23,23 +23,15 @@ /** * A {@link GZIPOutputStream} that you can configure, unlike the JVM default provided one. */ -public class ConfiguredGzipOutputStream extends GZIPOutputStream +public class ConfigurableGzipOutputStream extends GZIPOutputStream { - public ConfiguredGzipOutputStream(OutputStream outputStream, GzipEncoderConfig config) throws IOException + public ConfigurableGzipOutputStream(OutputStream outputStream, GzipEncoderConfig config) throws IOException { super(outputStream, config.getBufferSize(), config.isSyncFlush()); def.setStrategy(config.getStrategy()); def.setLevel(config.getCompressionLevel()); } - /** - * @see java.util.zip.Deflater#setDictionary(byte[]) - */ - public void setDictionary(byte[] dictionary) - { - def.setDictionary(dictionary); - } - /** * @see java.util.zip.Deflater#setDictionary(ByteBuffer) */ @@ -47,12 +39,4 @@ public void setDictionary(ByteBuffer dictionary) { def.setDictionary(dictionary); } - - /** - * @see java.util.zip.Deflater#setDictionary(byte[], int, int) - */ - public void setDictionary(byte[] dictionary, int off, int len) - { - def.setDictionary(dictionary, off, len); - } } diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java b/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java index a25e233c1328..ab4d3d448931 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/test/java/org/eclipse/jetty/compression/gzip/ConfiguredGzipOutputStreamTest.java @@ -18,7 +18,7 @@ import java.util.List; import java.util.zip.Deflater; -import org.eclipse.jetty.compression.gzip.internal.ConfiguredGzipOutputStream; +import org.eclipse.jetty.compression.gzip.internal.ConfigurableGzipOutputStream; import org.junit.jupiter.api.Test; import static java.nio.charset.StandardCharsets.UTF_8; @@ -36,7 +36,7 @@ public void testGzipOutputStreamParts() throws IOException GzipEncoderConfig config = new GzipEncoderConfig(); config.setCompressionLevel(Deflater.BEST_COMPRESSION); try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ConfiguredGzipOutputStream gzipOutputStream = new ConfiguredGzipOutputStream(baos, config)) + ConfigurableGzipOutputStream gzipOutputStream = new ConfigurableGzipOutputStream(baos, config)) { List entries = List.of("Hello", " World", "!"); for (String entry : entries) From 9d8b1e79d33c334cddcbb8f2668eae2a295b3bae Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 11:02:41 -0600 Subject: [PATCH 15/24] simplify if statement --- .../compression/zstandard/internal/ZstandardEncoderSink.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java index 13c6451c1706..9557018eba37 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/java/org/eclipse/jetty/compression/zstandard/internal/ZstandardEncoderSink.java @@ -71,10 +71,7 @@ protected boolean canEncode(boolean last, ByteBuffer content) // skip if progress not yet started. // this allows for empty body contents to not cause errors. ZstdFrameProgression frameProgression = compressCtx.getFrameProgression(); - if (frameProgression.getConsumed() <= 0) - { - return false; - } + return frameProgression.getConsumed() > 0; } return true; From 2974ba92a1662c28d48dc197cf9aaa1bd54b5bcc Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 12:44:19 -0600 Subject: [PATCH 16/24] follow jetty style for mod+xml naming --- .../{jetty-compression-handler.xml => jetty-compression.xml} | 0 .../src/main/config/modules/compression.mod | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename jetty-core/jetty-compression/jetty-compression-server/src/main/config/etc/{jetty-compression-handler.xml => jetty-compression.xml} (100%) diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/config/etc/jetty-compression-handler.xml b/jetty-core/jetty-compression/jetty-compression-server/src/main/config/etc/jetty-compression.xml similarity index 100% rename from jetty-core/jetty-compression/jetty-compression-server/src/main/config/etc/jetty-compression-handler.xml rename to jetty-core/jetty-compression/jetty-compression-server/src/main/config/etc/jetty-compression.xml diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod b/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod index 78e34fee085a..99ae851173fa 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod @@ -17,5 +17,5 @@ server lib/compression/jetty-compression-server-${jetty.version}.jar [xml] -etc/jetty-compression-handler.xml +etc/jetty-compression.xml From 2f9a788928463c98e625939f8a13efb6bc35b63c Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 12:44:29 -0600 Subject: [PATCH 17/24] fix pom syntax --- .../jetty-compression-common/pom.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml index 3cd835428258..18f756b2de75 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -1,27 +1,28 @@ - - jetty-compression-common - jetty-http org.eclipse.jetty + jetty-http - jetty-io org.eclipse.jetty + jetty-io - jetty-util org.eclipse.jetty + jetty-util - jetty-slf4j-impl org.eclipse.jetty + jetty-slf4j-impl test + Jetty Core Compression API + + jetty-compression-common 4.0.0 Core :: Compression :: API jar @@ -31,7 +32,6 @@ org.eclipse.jetty.compression 12.1.0-SNAPSHOT - ${project.groupId} From 6f28e1f856248ed08f84c8606ce11a574a8510a4 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 13:11:10 -0600 Subject: [PATCH 18/24] fix pom syntax --- .../jetty-compression-common/pom.xml | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml index 18f756b2de75..da0b595dc1d5 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -1,5 +1,21 @@ + jetty-compression-common + + Jetty Core Compression Common + + 4.0.0 + Core :: Compression :: Common + jar + + + jetty-compression + org.eclipse.jetty.compression + 12.1.0-SNAPSHOT + + + ${project.groupId} + org.eclipse.jetty @@ -19,20 +35,4 @@ test - - Jetty Core Compression API - - jetty-compression-common - 4.0.0 - Core :: Compression :: API - jar - - - jetty-compression - org.eclipse.jetty.compression - 12.1.0-SNAPSHOT - - - ${project.groupId} - From 9588513fc6de1a33af8f4e29af45a5dfe3de811a Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 13:14:49 -0600 Subject: [PATCH 19/24] fix pom syntax --- .../jetty-compression/jetty-compression-common/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml index da0b595dc1d5..72d058952dc5 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -1,16 +1,16 @@ - jetty-compression-common - - Jetty Core Compression Common 4.0.0 + + jetty-compression-common + Jetty Core Compression Common Core :: Compression :: Common jar - jetty-compression org.eclipse.jetty.compression + jetty-compression 12.1.0-SNAPSHOT From bfe4293f1479d580eaee190d396bbffa8ec077bd Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 15 Nov 2024 13:35:01 -0600 Subject: [PATCH 20/24] fix pom syntax --- .../jetty-compression/jetty-compression-common/pom.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-common/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml index 72d058952dc5..fe105c09b111 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -3,16 +3,16 @@ 4.0.0 - jetty-compression-common - Jetty Core Compression Common - Core :: Compression :: Common - jar - org.eclipse.jetty.compression jetty-compression 12.1.0-SNAPSHOT + + jetty-compression-common + jar + Core :: Compression :: Common + Jetty Core Compression Common ${project.groupId} From c4e1c169a87b6638af484d174860e1c2eef3bf9e Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 18 Nov 2024 11:06:48 -0600 Subject: [PATCH 21/24] Changes from review --- .../jetty-compression-brotli/pom.xml | 1 - .../config/modules/compression-brotli.mod | 2 +- .../jetty-compression-common/pom.xml | 2 +- .../config/modules/compression-common.mod | 18 ------------- .../jetty-compression-gzip/pom.xml | 1 - .../main/config/modules/compression-gzip.mod | 2 +- .../jetty-compression-server/pom.xml | 1 - .../src/main/config/modules/compression.mod | 1 + .../compression/server/CompressionConfig.java | 4 +-- .../jetty-compression-tests/pom.xml | 4 --- .../jetty-compression-zstandard/pom.xml | 1 - .../config/modules/compression-zstandard.mod | 2 +- pom.xml | 25 +++++++++++++++++++ 13 files changed, 32 insertions(+), 32 deletions(-) delete mode 100644 jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml index 4d0d53bc2b0b..39c3cf19d485 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-brotli/pom.xml @@ -26,7 +26,6 @@ org.eclipse.jetty.compression jetty-compression-common - ${project.version} org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod index 11bc1b7a5205..deaea4e40216 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod @@ -10,13 +10,13 @@ compression experimental [depend] -compression-common compression [files] maven://com.aayushatharva.brotli4j/brotli4j/${brotli4j.version}|lib/compression/brotli4j-${brotli4j.version}.jar [lib] +lib/compression/jetty-compression-common-${jetty.version}.jar lib/compression/brotli4j-${brotli4j.version}.jar [xml] diff --git a/jetty-core/jetty-compression/jetty-compression-common/pom.xml b/jetty-core/jetty-compression/jetty-compression-common/pom.xml index fe105c09b111..a814d9e020d0 100644 --- a/jetty-core/jetty-compression/jetty-compression-common/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-common/pom.xml @@ -14,7 +14,7 @@ Core :: Compression :: Common Jetty Core Compression Common - ${project.groupId} + ${project.groupId}.common diff --git a/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod b/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod deleted file mode 100644 index 7aa4196f2a87..000000000000 --- a/jetty-core/jetty-compression/jetty-compression-common/src/main/config/modules/compression-common.mod +++ /dev/null @@ -1,18 +0,0 @@ -# DO NOT EDIT THIS FILE - See: https://jetty.org/docs/ - -[description] -Enables Experimental Common Compression. - -[tags] -server -handler -compression -experimental - -[depend] -server - -[lib] -lib/compression/jetty-compression-common-${jetty.version}.jar - - diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml b/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml index 77b493848994..80ff82d414e5 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-gzip/pom.xml @@ -20,7 +20,6 @@ org.eclipse.jetty.compression jetty-compression-common - ${project.version} org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod index 6d2dd430489a..b9e980e4c38f 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod @@ -10,10 +10,10 @@ compression experimental [depend] -compression-common compression [lib] +lib/compression/jetty-compression-common-${jetty.version}.jar lib/compression/jetty-compression-gzip-${jetty.version}.jar [xml] diff --git a/jetty-core/jetty-compression/jetty-compression-server/pom.xml b/jetty-core/jetty-compression/jetty-compression-server/pom.xml index daa8592e87af..299ce6206087 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-server/pom.xml @@ -24,7 +24,6 @@ org.eclipse.jetty.compression jetty-compression-common - ${project.version} org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod b/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod index 99ae851173fa..7198ffe1c662 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/config/modules/compression.mod @@ -14,6 +14,7 @@ experimental server [lib] +lib/compression/jetty-compression-common-${jetty.version}.jar lib/compression/jetty-compression-server-${jetty.version}.jar [xml] diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java index e2d95e861d23..e1c931acc87a 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java @@ -136,7 +136,7 @@ public Set getCompressExcludeMimeTypes() * Get the set of excluded Path Specs for response compression. * * @return the set of excluded Path Specs - * @see #getCompressPathIncludes() + * @see #getCompressIncludesPath() */ @ManagedAttribute("Set of Response Compression Path Exclusions") public Set getCompressExcludePaths() @@ -178,7 +178,7 @@ public Set getCompressIncludeMimeTypes() * @see #getCompressExcludePaths() */ @ManagedAttribute("Set of Response Compression Path Exclusions") - public Set getCompressPathIncludes() + public Set getCompressIncludesPath() { Set includes = compressPaths.getIncluded(); return Collections.unmodifiableSet(includes); diff --git a/jetty-core/jetty-compression/jetty-compression-tests/pom.xml b/jetty-core/jetty-compression/jetty-compression-tests/pom.xml index b6067fd709bc..871a3e8a76ba 100644 --- a/jetty-core/jetty-compression/jetty-compression-tests/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-tests/pom.xml @@ -20,22 +20,18 @@ org.eclipse.jetty.compression jetty-compression-brotli - ${project.version} org.eclipse.jetty.compression jetty-compression-gzip - ${project.version} org.eclipse.jetty.compression jetty-compression-server - ${project.version} org.eclipse.jetty.compression jetty-compression-zstandard - ${project.version} org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml b/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml index f79371f1a7b1..3fee9449194a 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/pom.xml @@ -26,7 +26,6 @@ org.eclipse.jetty.compression jetty-compression-common - ${project.version} org.eclipse.jetty diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod index 40e2b9bd3e0d..4edb3141dcfe 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod @@ -10,13 +10,13 @@ compression experimental [depend] -compression-common compression [files] maven://com.github.luben/zstd-jni/${zstd-jni.version}|lib/compression/zstd-jni-${zstd-jni.version}.jar [lib] +lib/compression/jetty-compression-common-${jetty.version}.jar lib/compression/zstd-jni-${zstd-jni.version}.jar [xml] diff --git a/pom.xml b/pom.xml index dd2cde2decab..4c1e16af2d61 100644 --- a/pom.xml +++ b/pom.xml @@ -954,6 +954,31 @@ jetty-xml ${project.version} + + jetty-compression-brotli + org.eclipse.jetty.compression + ${project.version} + + + jetty-compression-common + org.eclipse.jetty.compression + ${project.version} + + + jetty-compression-gzip + org.eclipse.jetty.compression + ${project.version} + + + jetty-compression-server + org.eclipse.jetty.compression + ${project.version} + + + jetty-compression-zstandard + org.eclipse.jetty.compression + ${project.version} + org.eclipse.jetty.fcgi jetty-fcgi-client From 29343db2f033558b6e4cd5f8a6fce6b42cf1e090 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 18 Nov 2024 12:41:35 -0600 Subject: [PATCH 22/24] Fixing typo on method name (plural) --- .../eclipse/jetty/compression/server/CompressionConfig.java | 4 ++-- .../jetty/compression/server/CompressionConfigTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java index e1c931acc87a..b366f84472bf 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java @@ -136,7 +136,7 @@ public Set getCompressExcludeMimeTypes() * Get the set of excluded Path Specs for response compression. * * @return the set of excluded Path Specs - * @see #getCompressIncludesPath() + * @see #getCompressIncludePaths() */ @ManagedAttribute("Set of Response Compression Path Exclusions") public Set getCompressExcludePaths() @@ -178,7 +178,7 @@ public Set getCompressIncludeMimeTypes() * @see #getCompressExcludePaths() */ @ManagedAttribute("Set of Response Compression Path Exclusions") - public Set getCompressIncludesPath() + public Set getCompressIncludePaths() { Set includes = compressPaths.getIncluded(); return Collections.unmodifiableSet(includes); diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/test/java/org/eclipse/jetty/compression/server/CompressionConfigTest.java b/jetty-core/jetty-compression/jetty-compression-server/src/test/java/org/eclipse/jetty/compression/server/CompressionConfigTest.java index b503bb25e135..56c296681643 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/test/java/org/eclipse/jetty/compression/server/CompressionConfigTest.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/test/java/org/eclipse/jetty/compression/server/CompressionConfigTest.java @@ -40,7 +40,7 @@ private static List qcsv(String rawheadervalue) br, gzip | gzip, br | br, gzip zstd, br | gzip, br, zstd | zstd, br zstd, br, gzip | * | zstd, br, gzip - | * | + | * | """) public void testCalcPreferredEncoders(String preferredEncoderOrderCsv, String acceptEncodingHeaderValuesCsv, String expectedEncodersCsv) { From 5ad683c21aeb1ee8f1b416039cd0f9e535702680 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 18 Nov 2024 14:30:05 -0600 Subject: [PATCH 23/24] Fix module lib references --- .../src/main/config/modules/compression-brotli.mod | 2 +- .../src/main/config/modules/compression-gzip.mod | 1 - .../src/main/config/modules/compression-zstandard.mod | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod index deaea4e40216..1e6f74b2a693 100644 --- a/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod +++ b/jetty-core/jetty-compression/jetty-compression-brotli/src/main/config/modules/compression-brotli.mod @@ -16,7 +16,7 @@ compression maven://com.aayushatharva.brotli4j/brotli4j/${brotli4j.version}|lib/compression/brotli4j-${brotli4j.version}.jar [lib] -lib/compression/jetty-compression-common-${jetty.version}.jar +lib/compression/jetty-compression-brotli-${jetty.version}.jar lib/compression/brotli4j-${brotli4j.version}.jar [xml] diff --git a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod index b9e980e4c38f..43e23d02ee40 100644 --- a/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod +++ b/jetty-core/jetty-compression/jetty-compression-gzip/src/main/config/modules/compression-gzip.mod @@ -13,7 +13,6 @@ experimental compression [lib] -lib/compression/jetty-compression-common-${jetty.version}.jar lib/compression/jetty-compression-gzip-${jetty.version}.jar [xml] diff --git a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod index 4edb3141dcfe..4ecce18e384a 100644 --- a/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod +++ b/jetty-core/jetty-compression/jetty-compression-zstandard/src/main/config/modules/compression-zstandard.mod @@ -16,7 +16,7 @@ compression maven://com.github.luben/zstd-jni/${zstd-jni.version}|lib/compression/zstd-jni-${zstd-jni.version}.jar [lib] -lib/compression/jetty-compression-common-${jetty.version}.jar +lib/compression/jetty-compression-zstandard-${jetty.version}.jar lib/compression/zstd-jni-${zstd-jni.version}.jar [xml] From cc61b4329e4578fffada3b0a42ccd6ba7a54f587 Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Mon, 18 Nov 2024 14:33:48 -0600 Subject: [PATCH 24/24] ManagedAttribute typos --- .../eclipse/jetty/compression/server/CompressionConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java index b366f84472bf..02367a4543b3 100644 --- a/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java +++ b/jetty-core/jetty-compression/jetty-compression-server/src/main/java/org/eclipse/jetty/compression/server/CompressionConfig.java @@ -177,7 +177,7 @@ public Set getCompressIncludeMimeTypes() * @return the set of included Path Specs * @see #getCompressExcludePaths() */ - @ManagedAttribute("Set of Response Compression Path Exclusions") + @ManagedAttribute("Set of Response Compression Path Inclusions") public Set getCompressIncludePaths() { Set includes = compressPaths.getIncluded(); @@ -196,7 +196,7 @@ public Set getCompressIncludePaths() * @return the preferred order of encoders. * @see Builder#compressPreferredEncoderOrder(List) */ - @ManagedAttribute() + @ManagedAttribute("Preferred Compression Encoder Order") public List getCompressPreferredEncoderOrder() { return Collections.unmodifiableList(compressPreferredEncoderOrder);