Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reworking jetty-compression for JPMS #12531

Merged
merged 27 commits into from
Nov 18, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
aa14b45
Reworking jetty-compression for JPMS
joakime Nov 13, 2024
0a1abb0
Fix pom
joakime Nov 13, 2024
0e6f50b
Merge remote-tracking branch 'origin/jetty-12.1.x' into fix/12.1.x/co…
joakime Nov 14, 2024
9c8c9aa
Changes from review
joakime Nov 14, 2024
713dfd9
Changes from review
joakime Nov 14, 2024
6244dbd
Cleaning up source
joakime Nov 14, 2024
177500b
Merge remote-tracking branch 'origin/jetty-12.1.x' into fix/12.1.x/co…
joakime Nov 15, 2024
b068d44
Moving (include/exclude) verb to before noun
joakime Nov 15, 2024
78921e6
Renaming jetty-compression-api to jetty-compression-common
joakime Nov 15, 2024
a95c780
Renaming module compression-api to commpression-common
joakime Nov 15, 2024
af163a1
Removing class.cast(obj) usages
joakime Nov 15, 2024
fa97456
Fix typo
joakime Nov 15, 2024
a6cf5a6
always add bean
joakime Nov 15, 2024
242c62a
use modern switch/case
joakime Nov 15, 2024
dc8b219
cleanup unused source
joakime Nov 15, 2024
232a12f
configurable gzip (input|output) stream
joakime Nov 15, 2024
9d8b1e7
simplify if statement
joakime Nov 15, 2024
2974ba9
follow jetty style for mod+xml naming
joakime Nov 15, 2024
2f9a788
fix pom syntax
joakime Nov 15, 2024
6f28e1f
fix pom syntax
joakime Nov 15, 2024
9588513
fix pom syntax
joakime Nov 15, 2024
bfe4293
fix pom syntax
joakime Nov 15, 2024
c4e1c16
Changes from review
joakime Nov 18, 2024
29343db
Fixing typo on method name (plural)
joakime Nov 18, 2024
5ad683c
Fix module lib references
joakime Nov 18, 2024
cc61b43
ManagedAttribute typos
joakime Nov 18, 2024
174a392
Merge remote-tracking branch 'origin/jetty-12.1.x' into fix/12.1.x/co…
joakime Nov 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion jetty-core/jetty-compression/jetty-compression-api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,15 @@
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<artifactId>jetty-http</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-io</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-util</artifactId>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -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
joakime marked this conversation as resolved.
Show resolved Hide resolved
{
requires transitive org.eclipse.jetty.http;
requires org.slf4j;

exports org.eclipse.jetty.compression;
}
4 changes: 2 additions & 2 deletions jetty-core/jetty-compression/jetty-compression-brotli/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@
<artifactId>brotli4j</artifactId>
<version>${brotli4j.version}</version>
</dependency>
<dependency>
<!--<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>${netty.version}</version>
</dependency>
</dependency>-->
joakime marked this conversation as resolved.
Show resolved Hide resolved
<dependency>
<groupId>org.eclipse.jetty.compression</groupId>
<artifactId>jetty-compression-api</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
joakime marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,6 @@ public class BrotliEncoderConfig implements EncoderConfig
* @see <a href="https://www.brotli.org/encode.html">Encoder Defaults</a>
*/
public static final int DEFAULT_QUALITY = 11;
/**
* Default Brotli Mode (Strategy).
*
* @see <a href="https://www.brotli.org/encode.html">Encoder Defaults</a>
*/
public static final Encoder.Mode DEFAULT_MODE = Encoder.Mode.GENERIC;
/**
* Default Brotli Window.
*
Expand All @@ -41,15 +35,15 @@ public class BrotliEncoderConfig implements EncoderConfig
public static final int MIN_BUFFER_SIZE = 32;
joakime marked this conversation as resolved.
Show resolved Hide resolved

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;
}
Expand Down Expand Up @@ -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;
}

/**
Expand All @@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -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;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
joakime marked this conversation as resolved.
Show resolved Hide resolved
{
public ConfiguredGzipInputStream(InputStream in, GzipDecoderConfig config) throws IOException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@
// ========================================================================
//

package org.eclipse.jetty.compression.gzip;
package org.eclipse.jetty.compression.gzip.internal;
joakime marked this conversation as resolved.
Show resolved Hide resolved

import java.nio.ByteBuffer;
import java.util.zip.DataFormatException;
import java.util.zip.Inflater;
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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
joakime marked this conversation as resolved.
Show resolved Hide resolved
// ========================================================================
// 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;
}
Original file line number Diff line number Diff line change
@@ -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;

joakime marked this conversation as resolved.
Show resolved Hide resolved
requires com.github.luben.zstd_jni;

exports org.eclipse.jetty.compression.zstandard;
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down
Loading