You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/11/01 19:22:27 UTC
svn commit: r1404710 - in /cxf/branches/2.6.x-fixes/rt:
core/src/main/java/org/apache/cxf/transport/common/gzip/
transports/jms/src/main/java/org/apache/cxf/transport/jms/
Author: dkulp
Date: Thu Nov 1 18:22:26 2012
New Revision: 1404710
URL: http://svn.apache.org/viewvc?rev=1404710&view=rev
Log:
Merged revisions 1404700 via git cherry-pick from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1404700 | dkulp | 2012-11-01 14:09:08 -0400 (Thu, 01 Nov 2012) | 2 lines
[CXF-4572] Support a negotiation for the GZIP
........
Modified:
cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPFeature.java
cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPInInterceptor.java
cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPOutInterceptor.java
cxf/branches/2.6.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSUtils.java
Modified: cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPFeature.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPFeature.java?rev=1404710&r1=1404709&r2=1404710&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPFeature.java (original)
+++ cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPFeature.java Thu Nov 1 18:22:26 2012
@@ -57,15 +57,22 @@ public class GZIPFeature extends Abstrac
*/
int threshold = -1;
+ /**
+ * Force GZIP instead of negotiate
+ */
+ boolean force;
+
+
@Override
protected void initializeProvider(InterceptorProvider provider, Bus bus) {
provider.getInInterceptors().add(IN);
- if (threshold == -1) {
+ if (threshold == -1 && !force) {
provider.getOutInterceptors().add(OUT);
provider.getOutFaultInterceptors().add(OUT);
} else {
GZIPOutInterceptor out = new GZIPOutInterceptor();
out.setThreshold(threshold);
+ out.setForce(force);
remove(provider.getOutInterceptors());
remove(provider.getOutFaultInterceptors());
provider.getOutInterceptors().add(out);
@@ -89,5 +96,21 @@ public class GZIPFeature extends Abstrac
public int getThreshold() {
return threshold;
- }
+ }
+
+
+ /**
+ * Set if GZIP is always used without negotiation
+ * @param b
+ */
+ public void setForce(boolean b) {
+ force = b;
+ }
+
+ /**
+ * Retrieve the value set with {@link #setForce(boolean)}.
+ */
+ public boolean getForce() {
+ return force;
+ }
}
Modified: cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPInInterceptor.java?rev=1404710&r1=1404709&r2=1404710&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPInInterceptor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPInInterceptor.java Thu Nov 1 18:22:26 2012
@@ -28,6 +28,7 @@ import java.util.zip.GZIPInputStream;
import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.endpoint.Endpoint;
import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.helpers.HttpHeaderHelper;
import org.apache.cxf.interceptor.AttachmentInInterceptor;
@@ -91,6 +92,13 @@ public class GZIPInInterceptor extends A
break;
}
}
+
+ if (isRequestor(message)) {
+ //record the fact that is worked so future requests will
+ //automatically be FI enabled
+ Endpoint ep = message.getExchange().getEndpoint();
+ ep.put(GZIPOutInterceptor.USE_GZIP_KEY, GZIPOutInterceptor.UseGzip.YES);
+ }
} catch (IOException ex) {
throw new Fault(new org.apache.cxf.common.i18n.Message("COULD_NOT_UNZIP", BUNDLE), ex);
}
Modified: cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPOutInterceptor.java?rev=1404710&r1=1404709&r2=1404710&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPOutInterceptor.java (original)
+++ cxf/branches/2.6.x-fixes/rt/core/src/main/java/org/apache/cxf/transport/common/gzip/GZIPOutInterceptor.java Thu Nov 1 18:22:26 2012
@@ -112,6 +112,7 @@ public class GZIPOutInterceptor extends
* compressed.
*/
private int threshold = 1024;
+ private boolean force;
public GZIPOutInterceptor() {
super(Phase.PREPARE_SEND);
@@ -169,9 +170,16 @@ public class GZIPOutInterceptor extends
*/
private UseGzip gzipPermitted(Message message) throws Fault {
UseGzip permitted = UseGzip.NO;
- if (Boolean.TRUE.equals(message.get(Message.REQUESTOR_ROLE))) {
+ if (isRequestor(message)) {
LOG.fine("Requestor role, so gzip enabled");
- permitted = UseGzip.YES;
+ Object o = message.getContextualProperty(USE_GZIP_KEY);
+ if (o instanceof UseGzip) {
+ permitted = (UseGzip)o;
+ } else if (o instanceof String) {
+ permitted = UseGzip.valueOf((String)o);
+ } else {
+ permitted = force ? UseGzip.YES : UseGzip.NO;
+ }
message.put(GZIP_ENCODING_KEY, "gzip");
addHeader(message, "Accept-Encoding", "gzip;q=1.0, identity; q=0.5, *;q=0");
} else {
@@ -326,6 +334,9 @@ public class GZIPOutInterceptor extends
} else {
header.set(0, header.get(0) + "," + value);
}
+ }
+ public void setForce(boolean force) {
+ this.force = force;
}
}
Modified: cxf/branches/2.6.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSUtils.java?rev=1404710&r1=1404709&r2=1404710&view=diff
==============================================================================
--- cxf/branches/2.6.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSUtils.java (original)
+++ cxf/branches/2.6.x-fixes/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSUtils.java Thu Nov 1 18:22:26 2012
@@ -51,7 +51,6 @@ import org.apache.cxf.helpers.CastUtils;
import org.apache.cxf.helpers.HttpHeaderHelper;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.security.SecurityContext;
-import org.apache.cxf.transport.common.gzip.GZIPOutInterceptor;
import org.apache.cxf.transport.jms.spec.JMSSpecConstants;
import org.apache.cxf.transport.jms.uri.JMSEndpoint;
import org.apache.cxf.transport.jms.uri.JMSEndpointParser;
@@ -450,7 +449,15 @@ public final class JMSUtils {
}
public static String getContentEncoding(org.apache.cxf.message.Message message) {
- return (String)message.get(GZIPOutInterceptor.GZIP_ENCODING_KEY);
+ Map<String, List<String>> headers
+ = CastUtils.cast((Map<?, ?>)message.get(org.apache.cxf.message.Message.PROTOCOL_HEADERS));
+ if (headers != null) {
+ List<String> l = headers.get("Content-Encoding");
+ if (l != null && !l.isEmpty()) {
+ return l.get(0);
+ }
+ }
+ return null;
}
public static Message buildJMSMessageFromCXFMessage(JMSConfiguration jmsConfig,