From: <bra...@us...> - 2009-07-17 23:58:00
|
Revision: 2769 http://archive-access.svn.sourceforge.net/archive-access/?rev=2769&view=rev Author: bradtofel Date: 2009-07-17 23:57:57 +0000 (Fri, 17 Jul 2009) Log Message: ----------- BUGFIX(ACC-63): charset extraction from HTTP headers is now case-insensitive BUGFIX(ACC-65): no longer adding content to HTML pages with FrameSet tags, as they were being broken. Modified Paths: -------------- branches/wayback-1_4_2/wayback-core/src/main/java/org/archive/wayback/replay/TextDocument.java Modified: branches/wayback-1_4_2/wayback-core/src/main/java/org/archive/wayback/replay/TextDocument.java =================================================================== --- branches/wayback-1_4_2/wayback-core/src/main/java/org/archive/wayback/replay/TextDocument.java 2009-07-17 23:53:43 UTC (rev 2768) +++ branches/wayback-1_4_2/wayback-core/src/main/java/org/archive/wayback/replay/TextDocument.java 2009-07-17 23:57:57 UTC (rev 2769) @@ -31,6 +31,7 @@ import java.nio.charset.Charset; import java.nio.charset.IllegalCharsetNameException; import java.text.ParseException; +import java.util.Iterator; import java.util.Map; import javax.servlet.ServletException; @@ -102,7 +103,9 @@ } private String contentTypeToCharset(final String contentType) { - int offset = contentType.indexOf(CHARSET_TOKEN); + int offset = + contentType.toUpperCase().indexOf(CHARSET_TOKEN.toUpperCase()); + if (offset != -1) { String cs = contentType.substring(offset + CHARSET_TOKEN.length()); if(isCharsetSupported(cs)) { @@ -135,7 +138,16 @@ String charsetName = null; Map<String,String> httpHeaders = resource.getHttpHeaders(); - String ctype = httpHeaders.get(HTTP_CONTENT_TYPE_HEADER); + Iterator<String> keys = httpHeaders.keySet().iterator(); + String ctype = null; + while(keys.hasNext()) { + String headerKey = keys.next(); + String keyCmp = headerKey.toUpperCase().trim(); + if(keyCmp.equals(HTTP_CONTENT_TYPE_HEADER.toUpperCase())) { + ctype = httpHeaders.get(headerKey); + break; + } + } if (ctype != null) { charsetName = contentTypeToCharset(ctype); } @@ -423,9 +435,15 @@ public void insertAtStartOfBody(String toInsert) { int insertPoint = TagMagix.getEndOfFirstTag(sb,"body"); if (-1 == insertPoint) { - insertPoint = 0; + // see if there's a frameset, and don't insert if there is. + int framesetPoint = TagMagix.getEndOfFirstTag(sb,"frameset"); + if(-1 == framesetPoint) { + insertPoint = 0; + } } - sb.insert(insertPoint,toInsert); + if (-1 != insertPoint) { + sb.insert(insertPoint,toInsert); + } } /** * @param jspPath This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |