From: <bra...@us...> - 2010-04-30 21:15:53
|
Revision: 3084 http://archive-access.svn.sourceforge.net/archive-access/?rev=3084&view=rev Author: bradtofel Date: 2010-04-30 21:15:45 +0000 (Fri, 30 Apr 2010) Log Message: ----------- FEATURE: made HTTP Header guessedCharsetHeader field bean configurable, and changed it's default value. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TextReplayRenderer.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TextReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TextReplayRenderer.java 2010-04-30 02:16:27 UTC (rev 3083) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/replay/TextReplayRenderer.java 2010-04-30 21:15:45 UTC (rev 3084) @@ -50,6 +50,9 @@ */ public abstract class TextReplayRenderer implements ReplayRenderer { + private static String GUESSED_CHARSET_HEADER = "X-Archive-Guessed-Charset"; + + private String guessedCharsetHeader = GUESSED_CHARSET_HEADER; private List<String> jspInserts = null; private HttpHeaderProcessor httpHeaderProcessor; private CharsetDetector charsetDetector = new StandardCharsetDetector(); @@ -89,16 +92,20 @@ // set the corrected length: int bytes = page.getBytes().length; + headers.put(HttpHeaderOperation.HTTP_LENGTH_HEADER, String.valueOf(bytes)); + if(guessedCharsetHeader != null) { + headers.put(guessedCharsetHeader, page.getCharSet()); + } + + // send back the headers: + HttpHeaderOperation.sendHeaders(headers, httpResponse); + // Tomcat will always send a charset... It's trying to be smarter than // we are. If the original page didn't include a "charset" as part of // the "Content-Type" HTTP header, then Tomcat will use the default.. // who knows what that is, or what that will do to the page.. // let's try explicitly setting it to what we used: - headers.put("X-Wayback-Guessed-Charset", page.getCharSet()); - - // send back the headers: - HttpHeaderOperation.sendHeaders(headers, httpResponse); httpResponse.setCharacterEncoding(page.getCharSet()); page.writeToOutputStream(httpResponse.getOutputStream()); @@ -131,4 +138,21 @@ public void setCharsetDetector(CharsetDetector charsetDetector) { this.charsetDetector = charsetDetector; } + + /** + * @return the String HTTP Header used to indicate what Wayback determined + * was the pages original charset + */ + public String getGuessedCharsetHeader() { + return guessedCharsetHeader; + } + + /** + * @param guessedCharsetHeader the String HTTP Header value used to indicate + * to clients what Wayback determined was the pages original charset. If set + * to null, the header will be omitted. + */ + public void setGuessedCharsetHeader(String guessedCharsetHeader) { + this.guessedCharsetHeader = guessedCharsetHeader; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |