You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by ag...@apache.org on 2007/06/08 01:20:38 UTC
svn commit: r545344 - in
/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui:
core/filters/ core/util/ struts2/util/
Author: agilliland
Date: Thu Jun 7 16:20:37 2007
New Revision: 545344
URL: http://svn.apache.org/viewvc?view=rev&rev=545344
Log:
a slight bit of code cleanup.
- moved the core.util byte array response caching stuff directly into the CompressionFilter since that is the only thing using it.
- moved the UIUtils class into the ui.struts2.util package since it's really only used to support the struts2 ui.
Added:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java
- copied, changed from r544591, roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java
Removed:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/ByteArrayOutputStreamWrapper.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/ByteArrayResponseWrapper.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/package.html
Modified:
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java?view=diff&rev=545344&r1=545343&r2=545344
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/filters/CompressionFilter.java Thu Jun 7 16:20:37 2007
@@ -20,20 +20,23 @@
import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
import java.util.zip.GZIPOutputStream;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpServletResponseWrapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.config.RollerConfig;
-import org.apache.roller.weblogger.ui.core.util.ByteArrayOutputStreamWrapper;
-import org.apache.roller.weblogger.ui.core.util.ByteArrayResponseWrapper;
/**
@@ -42,13 +45,10 @@
* Taken from More Servlets and JavaServer Pages from Prentice Hall and
* Sun Microsystems Press, http://www.moreservlets.com/.
* © 2002 Marty Hall; may be freely used or adapted.
- *
- * @web.filter name="CompressionFilter"
*/
-
public class CompressionFilter implements Filter {
- private static Log mLogger = LogFactory.getLog(CompressionFilter.class);
+ private static Log log = LogFactory.getLog(CompressionFilter.class);
private boolean enabled = true;
@@ -82,7 +82,7 @@
ByteArrayOutputStream outputStream = responseWrapper.getByteArrayOutputStream();
// Get character array representing output.
- mLogger.debug("Pre-zip size:" + outputStream.size());
+ log.debug("Pre-zip size:" + outputStream.size());
// Make a writer that compresses data and puts
// it into a byte array.
@@ -95,7 +95,7 @@
// Gzip streams must be explicitly closed.
zipOut.close();
- mLogger.debug("Gzip size:" + byteStream.size());
+ log.debug("Gzip size:" + byteStream.size());
// Update the Content-Length header.
res.setContentLength(byteStream.size());
@@ -118,10 +118,10 @@
// is compression enabled?
if(RollerConfig.getBooleanProperty("compression.gzipResponse.enabled")) {
this.enabled = true;
- mLogger.info("Compressed Output ENABLED");
+ log.info("Compressed Output ENABLED");
} else {
this.enabled = false;
- mLogger.info("Compressed Output DISABLED");
+ log.info("Compressed Output DISABLED");
}
}
@@ -135,4 +135,110 @@
&& (browserEncodings.indexOf("gzip") != -1));
}
+
+ /**
+ * Implementation of HttpServletResponseWrapper that supports caching.
+ */
+ private class ByteArrayResponseWrapper extends HttpServletResponseWrapper {
+
+ private PrintWriter tpWriter;
+ private ByteArrayOutputStreamWrapper tpStream;
+
+
+ public ByteArrayResponseWrapper(ServletResponse inResp) throws IOException {
+ super((HttpServletResponse) inResp);
+ tpStream = new ByteArrayOutputStreamWrapper(inResp.getOutputStream());
+ tpWriter = new PrintWriter(new OutputStreamWriter(tpStream,"UTF-8"));
+ }
+
+
+ public ServletOutputStream getOutputStream() throws IOException {
+ return tpStream;
+ }
+
+ public PrintWriter getWriter() throws IOException {
+ return tpWriter;
+ }
+
+ /**
+ * Get a String representation of the entire buffer.
+ */
+ public String toString() {
+ return tpStream.getByteArrayStream().toString();
+ }
+
+ public ByteArrayOutputStream getByteArrayOutputStream() throws IOException {
+ return tpStream.getByteArrayStream();
+ }
+
+ }
+
+
+ /**
+ * Implementation of ServletOutputStream that allows the filter to hold the
+ * Response content for insertion into the cache.
+ */
+ private class ByteArrayOutputStreamWrapper extends ServletOutputStream {
+
+ protected OutputStream intStream;
+ protected ByteArrayOutputStream baStream;
+ protected boolean finallized = false;
+ protected boolean flushOnFinalizeOnly = true;
+
+
+ public ByteArrayOutputStreamWrapper(OutputStream outStream) {
+ intStream = outStream;
+ baStream = new ByteArrayOutputStream();
+ }
+
+ public ByteArrayOutputStreamWrapper() {
+ intStream = System.out;
+ baStream = new ByteArrayOutputStream();
+ }
+
+
+ public ByteArrayOutputStream getByteArrayStream() {
+ return baStream;
+ }
+
+ public void setFinallized() {
+ finallized = true;
+ }
+
+ public boolean isFinallized() {
+ return finallized;
+ }
+
+
+ public void write(int i) throws java.io.IOException {
+ baStream.write(i);
+ }
+
+ public void close() throws java.io.IOException {
+ if (finallized) {
+ processStream();
+ intStream.close();
+ }
+ }
+
+ public void flush() throws java.io.IOException {
+ if (baStream.size() != 0) {
+ if (!flushOnFinalizeOnly || finallized) {
+ processStream();
+ baStream = new ByteArrayOutputStream();
+ }
+ }
+ }
+
+ protected void processStream() throws java.io.IOException {
+ intStream.write(baStream.toByteArray());
+ intStream.flush();
+ }
+
+ public void clear() {
+ baStream = new ByteArrayOutputStream();
+ }
+
+ }
+
}
Modified: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java?view=diff&rev=545344&r1=545343&r2=545344
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java Thu Jun 7 16:20:37 2007
@@ -27,7 +27,7 @@
import org.apache.roller.weblogger.config.RollerRuntimeConfig;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.ui.core.util.UIUtils;
+import org.apache.roller.weblogger.ui.struts2.util.UIUtils;
import org.apache.roller.weblogger.ui.core.util.menu.Menu;
import org.apache.roller.weblogger.ui.core.util.menu.MenuHelper;
Copied: roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java (from r544591, roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java)
URL: http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java?view=diff&rev=545344&p1=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java&r1=544591&p2=roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java&r2=545344
==============================================================================
--- roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/util/UIUtils.java (original)
+++ roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/util/UIUtils.java Thu Jun 7 16:20:37 2007
@@ -16,7 +16,7 @@
* directory of this distribution.
*/
-package org.apache.roller.weblogger.ui.core.util;
+package org.apache.roller.weblogger.ui.struts2.util;
import java.util.Arrays;
import java.util.Collections;