Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 491321790A for ; Sun, 6 Sep 2015 18:09:53 +0000 (UTC) Received: (qmail 19576 invoked by uid 500); 6 Sep 2015 18:09:53 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 19520 invoked by uid 500); 6 Sep 2015 18:09:53 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 19511 invoked by uid 99); 6 Sep 2015 18:09:53 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 06 Sep 2015 18:09:53 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id F22D1DFC8B; Sun, 6 Sep 2015 18:09:52 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sergeyb@apache.org To: commits@cxf.apache.org Message-Id: <73eb523a9f0142a995c03fa6b6e78a38@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: cxf git commit: [CXF-6579] Making deflate level configurable Date: Sun, 6 Sep 2015 18:09:52 +0000 (UTC) Repository: cxf Updated Branches: refs/heads/master 56b99bada -> 76cbcf803 [CXF-6579] Making deflate level configurable Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/76cbcf80 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/76cbcf80 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/76cbcf80 Branch: refs/heads/master Commit: 76cbcf803d09f5669cabb1d31d110c902673c74c Parents: 56b99ba Author: Sergey Beryozkin Authored: Sun Sep 6 19:09:38 2015 +0100 Committer: Sergey Beryozkin Committed: Sun Sep 6 19:09:38 2015 +0100 ---------------------------------------------------------------------- .../cxf/common/util/CompressionUtils.java | 6 +++- .../rs/security/saml/DeflateEncoderDecoder.java | 30 +++++++++++++++++++- .../saml/DeflateEncoderDecoderTest.java | 21 +++++++++++++- 3 files changed, 54 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/76cbcf80/core/src/main/java/org/apache/cxf/common/util/CompressionUtils.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/cxf/common/util/CompressionUtils.java b/core/src/main/java/org/apache/cxf/common/util/CompressionUtils.java index 6b48aa7..c80352e 100644 --- a/core/src/main/java/org/apache/cxf/common/util/CompressionUtils.java +++ b/core/src/main/java/org/apache/cxf/common/util/CompressionUtils.java @@ -72,7 +72,11 @@ public final class CompressionUtils { } public static byte[] deflate(byte[] tokenBytes, boolean nowrap) { - Deflater compresser = new Deflater(Deflater.DEFLATED, nowrap); + return deflate(tokenBytes, Deflater.DEFLATED, nowrap); + } + + public static byte[] deflate(byte[] tokenBytes, int level, boolean nowrap) { + Deflater compresser = new Deflater(level, nowrap); compresser.setInput(tokenBytes); compresser.finish(); http://git-wip-us.apache.org/repos/asf/cxf/blob/76cbcf80/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoder.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoder.java b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoder.java index 0b2925e..c1b20c8 100644 --- a/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoder.java +++ b/rt/rs/security/xml/src/main/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoder.java @@ -20,8 +20,12 @@ package org.apache.cxf.rs.security.saml; import java.io.InputStream; import java.util.zip.DataFormatException; +import java.util.zip.Deflater; import org.apache.cxf.common.util.CompressionUtils; +import org.apache.cxf.common.util.PropertyUtils; +import org.apache.cxf.message.Message; +import org.apache.cxf.phase.PhaseInterceptorChain; public class DeflateEncoderDecoder { public InputStream inflateToken(byte[] deflatedToken) @@ -30,6 +34,30 @@ public class DeflateEncoderDecoder { } public byte[] deflateToken(byte[] tokenBytes) { - return CompressionUtils.deflate(tokenBytes); + + return deflateToken(tokenBytes, true); + } + + public byte[] deflateToken(byte[] tokenBytes, boolean nowrap) { + + return deflateToken(tokenBytes, getDeflateLevel(), nowrap); + } + + public byte[] deflateToken(byte[] tokenBytes, int level, boolean nowrap) { + + return CompressionUtils.deflate(tokenBytes, level, nowrap); + } + + private static int getDeflateLevel() { + Integer level = null; + + Message m = PhaseInterceptorChain.getCurrentMessage(); + if (m != null) { + level = PropertyUtils.getInteger(m, "deflate.level"); + } + if (level == null) { + level = Deflater.DEFLATED; + } + return level; } } http://git-wip-us.apache.org/repos/asf/cxf/blob/76cbcf80/rt/rs/security/xml/src/test/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoderTest.java ---------------------------------------------------------------------- diff --git a/rt/rs/security/xml/src/test/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoderTest.java b/rt/rs/security/xml/src/test/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoderTest.java index 47de912..15a2512 100644 --- a/rt/rs/security/xml/src/test/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoderTest.java +++ b/rt/rs/security/xml/src/test/java/org/apache/cxf/rs/security/saml/DeflateEncoderDecoderTest.java @@ -18,8 +18,11 @@ */ package org.apache.cxf.rs.security.saml; +import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.zip.DataFormatException; +import java.util.zip.Inflater; +import java.util.zip.InflaterInputStream; import org.apache.cxf.common.util.Base64Utility; import org.apache.cxf.helpers.IOUtils; @@ -62,5 +65,21 @@ public class DeflateEncoderDecoderTest extends Assert { assertNotNull(is); assertEquals("valid_grant", IOUtils.readStringFromStream(is)); } - + @Test + public void testInflateDeflateWithTokenDuplication() throws Exception { + String token = "valid_grant valid_grant valid_grant valid_grant valid_grant valid_grant"; + + DeflateEncoderDecoder deflateEncoderDecoder = new DeflateEncoderDecoder(); + byte[] deflatedToken = deflateEncoderDecoder.deflateToken(token.getBytes(), 0, true); + + String cxfInflatedToken = IOUtils + .toString(deflateEncoderDecoder.inflateToken(deflatedToken)); + + String streamInflatedToken = IOUtils.toString( + new InflaterInputStream(new ByteArrayInputStream(deflatedToken), + new Inflater(true))); + + assertEquals(streamInflatedToken, token); + assertEquals(cxfInflatedToken, token); + } }