All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.dropwizard.jetty.GzipHandlerFactory Maven / Gradle / Ivy

There is a newer version: 1.3.5
Show newest version
package io.dropwizard.jetty;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.collect.Iterables;
import io.dropwizard.util.Size;
import org.eclipse.jetty.server.Handler;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.Deflater;

import static java.util.Objects.requireNonNull;

/**
 * Builds GZIP filters.
 *
 * 

* Configuration Parameters: *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
NameDefaultDescription
{@code enabled}trueIf true, all requests with `gzip` or `deflate` in the `Accept-Encoding` header will have their * response entities compressed and requests with `gzip` or `deflate` in the `Content-Encoding` * header will have their request entities decompressed.
{@code minimumEntitySize}256 bytesAll response entities under this size are not compressed.
{@code bufferSize}8KiBThe size of the buffer to use when compressing.
{@code excludedUserAgentPatterns}(none)The set of user agent patterns to exclude from compression.
{@code compressedMimeTypes}(Jetty's default)The list of mime types to compress. The default is all types apart the * commonly known image, video, audio and compressed types.
{@code includedMethods}(Jetty's default)The list list of HTTP methods to compress. The default is to compress * only GET responses.
{@code deflateCompressionLevel}-1The compression level used for ZLIB deflation(compression).
{@code gzipCompatibleInflation}trueIf true, then ZLIB inflation(decompression) will be performed in the GZIP-compatible mode.
*/ public class GzipHandlerFactory { private boolean enabled = true; @NotNull private Size minimumEntitySize = Size.bytes(256); @NotNull private Size bufferSize = Size.kilobytes(8); // By default compress responses for all user-agents private Set excludedUserAgentPatterns = new HashSet<>(); private Set compressedMimeTypes; private Set includedMethods; @Min(Deflater.DEFAULT_COMPRESSION) @Max(Deflater.BEST_COMPRESSION) private int deflateCompressionLevel = Deflater.DEFAULT_COMPRESSION; private boolean gzipCompatibleInflation = true; @JsonProperty public boolean isEnabled() { return enabled; } @JsonProperty public void setEnabled(boolean enabled) { this.enabled = enabled; } @JsonProperty public Size getMinimumEntitySize() { return minimumEntitySize; } @JsonProperty public void setMinimumEntitySize(Size size) { this.minimumEntitySize = requireNonNull(size); } @JsonProperty public Size getBufferSize() { return bufferSize; } @JsonProperty public void setBufferSize(Size size) { this.bufferSize = requireNonNull(size); } @JsonProperty public Set getCompressedMimeTypes() { return compressedMimeTypes; } @JsonProperty public void setCompressedMimeTypes(Set mimeTypes) { this.compressedMimeTypes = mimeTypes; } @JsonProperty public int getDeflateCompressionLevel() { return deflateCompressionLevel; } @JsonProperty public void setDeflateCompressionLevel(int level) { this.deflateCompressionLevel = level; } @JsonProperty public boolean isGzipCompatibleInflation() { return gzipCompatibleInflation; } @JsonProperty public void setGzipCompatibleInflation(boolean gzipCompatibleInflation) { this.gzipCompatibleInflation = gzipCompatibleInflation; } public Set getExcludedUserAgentPatterns() { return excludedUserAgentPatterns; } public void setExcludedUserAgentPatterns(Set excludedUserAgentPatterns) { this.excludedUserAgentPatterns = excludedUserAgentPatterns; } @JsonProperty public Set getIncludedMethods() { return includedMethods; } @JsonProperty public void setIncludedMethods(Set methods) { this.includedMethods = methods; } public BiDiGzipHandler build(Handler handler) { final BiDiGzipHandler gzipHandler = new BiDiGzipHandler(); gzipHandler.setHandler(handler); gzipHandler.setMinGzipSize((int) minimumEntitySize.toBytes()); gzipHandler.setInputBufferSize((int) bufferSize.toBytes()); gzipHandler.setCompressionLevel(deflateCompressionLevel); if (compressedMimeTypes != null) { gzipHandler.setIncludedMimeTypes(Iterables.toArray(compressedMimeTypes, String.class)); } if (includedMethods != null) { gzipHandler.setIncludedMethods(Iterables.toArray(includedMethods, String.class)); } gzipHandler.setExcludedAgentPatterns(Iterables.toArray(excludedUserAgentPatterns, String.class)); gzipHandler.setInflateNoWrap(gzipCompatibleInflation); return gzipHandler; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy