diff options
Diffstat (limited to 'qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java')
-rw-r--r-- | qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java index ef0a68a42b..847ada3407 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagementUtil.java @@ -20,17 +20,24 @@ */ package org.apache.qpid.server.management.plugin; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.security.Principal; import java.security.PrivilegedAction; import java.security.cert.X509Certificate; import java.util.Collections; +import java.util.zip.GZIPOutputStream; import javax.security.auth.Subject; import javax.security.auth.x500.X500Principal; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.codec.binary.Base64; @@ -71,6 +78,10 @@ public class HttpManagementUtil private static final String ATTR_SUBJECT = "Qpid.subject"; private static final String ATTR_LOG_ACTOR = "Qpid.logActor"; + private static final String ACCEPT_ENCODING_HEADER = "Accept-Encoding"; + private static final String CONTENT_ENCODING_HEADER = "Content-Encoding"; + private static final String GZIP_CONTENT_ENCODING = "gzip"; + public static Broker<?> getBroker(ServletContext servletContext) { return (Broker<?>) servletContext.getAttribute(ATTR_BROKER); @@ -219,5 +230,42 @@ public class HttpManagementUtil return null; } + public static Writer getOutputWriter(final HttpServletRequest request, final HttpServletResponse response) + throws IOException + { + return getOutputWriter(request, response, getManagementConfiguration(request.getServletContext())); + } + + public static Writer getOutputWriter(final HttpServletRequest request, final HttpServletResponse response, HttpManagementConfiguration managementConfiguration) + throws IOException + { + Writer writer; + writer = new BufferedWriter(new OutputStreamWriter(getOutputStream(request,response, managementConfiguration))); + return writer; + } + + public static OutputStream getOutputStream(final HttpServletRequest request, final HttpServletResponse response) + throws IOException + { + return getOutputStream(request, response, getManagementConfiguration(request.getServletContext())); + } + + public static OutputStream getOutputStream(final HttpServletRequest request, final HttpServletResponse response, HttpManagementConfiguration managementConfiguration) + throws IOException + { + OutputStream outputStream; + if(managementConfiguration.isCompressResponses() + && Collections.list(request.getHeaderNames()).contains(ACCEPT_ENCODING_HEADER) + && request.getHeader(ACCEPT_ENCODING_HEADER).contains(GZIP_CONTENT_ENCODING)) + { + outputStream = new GZIPOutputStream(response.getOutputStream()); + response.setHeader(CONTENT_ENCODING_HEADER, GZIP_CONTENT_ENCODING); + } + else + { + outputStream = response.getOutputStream(); + } + return outputStream; + } } |