From: <bra...@us...> - 2008-07-22 02:45:26
|
Revision: 2480 http://archive-access.svn.sourceforge.net/archive-access/?rev=2480&view=rev Author: bradtofel Date: 2008-07-22 02:45:34 +0000 (Tue, 22 Jul 2008) Log Message: ----------- REFACTOR: SelectorDispatcher now used instead of hard-coded old Dispatcher, split old HTML ReplayRenderer into ClientSide and ServerSide HTMLReplayRenderer, refactored ASX and CSS ReplayRenderers to inherit from Common TextReplayRenderer base class. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlASXReplayRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlCSSReplayRenderer.java Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ClientSideHTMLReplayRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ServerSideHTMLReplayRenderer.java Removed Paths: ------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayDispatcher.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlTransparentReplayRenderer.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlASXReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlASXReplayRenderer.java 2008-07-22 02:42:56 UTC (rev 2479) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlASXReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -1,7 +1,6 @@ package org.archive.wayback.archivalurl; import java.io.IOException; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -12,39 +11,28 @@ import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.BadContentException; -import org.archive.wayback.replay.HTMLPage; -import org.archive.wayback.replay.HttpHeaderOperation; +import org.archive.wayback.replay.TextDocument; +import org.archive.wayback.replay.TextReplayRenderer; +import org.archive.wayback.replay.HttpHeaderProcessor; -public class ArchivalUrlASXReplayRenderer extends ArchivalUrlReplayRenderer { +public class ArchivalUrlASXReplayRenderer extends TextReplayRenderer { + + /** + * @param httpHeaderProcessor + */ + public ArchivalUrlASXReplayRenderer(HttpHeaderProcessor httpHeaderProcessor) { + super(httpHeaderProcessor); + } + /* (non-Javadoc) - * @see org.archive.wayback.ReplayRenderer#renderResource(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResults) + * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#updatePage(org.archive.wayback.replay.HTMLPage, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.CaptureSearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.CaptureSearchResults) */ - public void renderResource(HttpServletRequest httpRequest, + @Override + protected void updatePage(TextDocument page, HttpServletRequest httpRequest, HttpServletResponse httpResponse, WaybackRequest wbRequest, CaptureSearchResult result, Resource resource, ResultURIConverter uriConverter, CaptureSearchResults results) - throws ServletException, IOException, BadContentException { - - - HttpHeaderOperation.copyHTTPMessageHeader(resource, httpResponse); - - Map<String,String> headers = HttpHeaderOperation.processHeaders( - resource, result, uriConverter, this); - - // Load content into an HTML page, and resolve embedded HREF urls: - HTMLPage page = new HTMLPage(resource,result,uriConverter); - page.readFully(); - + throws ServletException, IOException { page.resolveASXRefUrls(); - - // set the corrected length: - int bytes = page.getBytes().length; - headers.put(HTTP_LENGTH_HEADER, String.valueOf(bytes)); - - // send back the headers: - HttpHeaderOperation.sendHeaders(headers, httpResponse); - - page.writeToOutputStream(httpResponse.getOutputStream()); } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlCSSReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlCSSReplayRenderer.java 2008-07-22 02:42:56 UTC (rev 2479) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlCSSReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -1,7 +1,6 @@ package org.archive.wayback.archivalurl; import java.io.IOException; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -12,37 +11,29 @@ import org.archive.wayback.core.CaptureSearchResult; import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.BadContentException; -import org.archive.wayback.replay.HTMLPage; -import org.archive.wayback.replay.HttpHeaderOperation; +import org.archive.wayback.replay.TextDocument; +import org.archive.wayback.replay.TextReplayRenderer; +import org.archive.wayback.replay.HttpHeaderProcessor; -public class ArchivalUrlCSSReplayRenderer extends ArchivalUrlReplayRenderer { +public class ArchivalUrlCSSReplayRenderer extends TextReplayRenderer { + + /** + * @param httpHeaderProcessor + */ + public ArchivalUrlCSSReplayRenderer(HttpHeaderProcessor httpHeaderProcessor) { + super(httpHeaderProcessor); + } + /* (non-Javadoc) - * @see org.archive.wayback.ReplayRenderer#renderResource(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResults) + * @see org.archive.wayback.replay.HTMLReplayRenderer#updatePage(org.archive.wayback.replay.HTMLPage, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.CaptureSearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.CaptureSearchResults) */ - public void renderResource(HttpServletRequest httpRequest, + @Override + protected void updatePage(TextDocument page, HttpServletRequest httpRequest, HttpServletResponse httpResponse, WaybackRequest wbRequest, CaptureSearchResult result, Resource resource, ResultURIConverter uriConverter, CaptureSearchResults results) - throws ServletException, IOException, BadContentException { - HttpHeaderOperation.copyHTTPMessageHeader(resource, httpResponse); + throws ServletException, IOException { - Map<String,String> headers = HttpHeaderOperation.processHeaders( - resource, result, uriConverter, this); - - // Load content into an HTML page, and resolve @import URLs: - HTMLPage page = new HTMLPage(resource,result,uriConverter); - page.readFully(); - page.resolveCSSUrls(); - - // set the corrected length: - int bytes = page.getBytes().length; - headers.put(HTTP_LENGTH_HEADER, String.valueOf(bytes)); - - // send back the headers: - HttpHeaderOperation.sendHeaders(headers, httpResponse); - - page.writeToOutputStream(httpResponse.getOutputStream()); } } Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayDispatcher.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayDispatcher.java 2008-07-22 02:42:56 UTC (rev 2479) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayDispatcher.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -1,165 +0,0 @@ -/* ArchivalUrlReplayRendererDispatcher - * - * $Id$ - * - * Created on 11:38:02 AM Aug 9, 2007. - * - * Copyright (C) 2007 Internet Archive. - * - * This file is part of wayback-core. - * - * wayback-core is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback-core is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback-core; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.archivalurl; - -import java.util.List; - -import org.archive.wayback.ReplayDispatcher; -import org.archive.wayback.ReplayRenderer; -import org.archive.wayback.core.Resource; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.replay.DateRedirectReplayRenderer; - -/** - * - * - * @author brad - * @version $Date$, $Revision$ - */ -public class ArchivalUrlReplayDispatcher implements ReplayDispatcher { - - /** - * MIME type of documents which should be marked up with javascript to - * rewrite URLs inside document - */ - private final static String TEXT_HTML_MIME = "text/html"; - private final static String TEXT_XHTML_MIME = "application/xhtml"; - private final static String TEXT_CSS_MIME = "text/css"; - private final static String ASX_MIME = "video/x-ms-asf"; - private final static String ASX_EXTENSION = ".asx"; - - - // TODO: make this configurable - private final static long MAX_HTML_MARKUP_LENGTH = 1024 * 1024 * 5; - - private ReplayRenderer transparent = - new ArchivalUrlTransparentReplayRenderer(); - - private ReplayRenderer redirect = new DateRedirectReplayRenderer(); - private ArchivalUrlReplayRenderer archivalHTML = - new ArchivalUrlReplayRenderer(); - private ArchivalUrlCSSReplayRenderer archivalCSS = - new ArchivalUrlCSSReplayRenderer(); - private ArchivalUrlASXReplayRenderer archivalASX = - new ArchivalUrlASXReplayRenderer(); - - /* (non-Javadoc) - * @see org.archive.wayback.ReplayDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) - */ - public ReplayRenderer getRenderer(WaybackRequest wbRequest, - CaptureSearchResult result, Resource resource) { - - // if the result is not for the exact date requested, redirect to the - // exact date. some capture dates are not 14 digits, only compare as - // many digits as are in the result date: - String reqDateStr = wbRequest.getReplayTimestamp(); - String resDateStr = result.getCaptureTimestamp(); - if(!resDateStr.equals(reqDateStr.substring(0, resDateStr.length()))) { - return redirect; - } - - // only bother attempting markup on pages smaller than some size: - if (resource.getRecordLength() < MAX_HTML_MARKUP_LENGTH) { - - String resultMime = result.getMimeType(); - // HTML and XHTML docs get marked up as HTML - if (-1 != resultMime.indexOf(TEXT_HTML_MIME)) { - return archivalHTML; - } - if (-1 != resultMime.indexOf(TEXT_XHTML_MIME)) { - return archivalHTML; - } - // CSS docs get marked up as CSS - if (-1 != resultMime.indexOf(TEXT_CSS_MIME)) { - return archivalCSS; - } - if (-1 != resultMime.indexOf(ASX_MIME)) { - return archivalASX; - } - String resultPath = result.getUrlKey(); - resultPath = resultPath.substring(resultPath.indexOf('/')); - int queryIdx = resultPath.indexOf('?'); - if(queryIdx > 0) { - resultPath = resultPath.substring(0,queryIdx-1); - } - if(resultPath.endsWith(ASX_EXTENSION)) { - return archivalASX; - } - } - - // everything else goes transparently: - return transparent; - } - - /** - * @return - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#getJsInserts() - */ - public List<String> getJsInserts() { - return archivalHTML.getJsInserts(); - } - - /** - * @return - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#getJspInserts() - */ - public List<String> getJspInserts() { - return archivalHTML.getJspInserts(); - } - - /** - * @param jsInserts - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#setJsInserts(java.util.List) - */ - public void setJsInserts(List<String> jsInserts) { - archivalHTML.setJsInserts(jsInserts); - } - - /** - * @param jspInserts - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#setJspInserts(java.util.List) - */ - public void setJspInserts(List<String> jspInserts) { - archivalHTML.setJspInserts(jspInserts); - } - - /** - * @return - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#isServerSideRendering() - */ - public boolean isServerSideRendering() { - return archivalHTML.isServerSideRendering(); - } - - /** - * @param isServerSideRendering - * @see org.archive.wayback.archivalurl.ArchivalUrlReplayRenderer#setServerSideRendering(boolean) - */ - public void setServerSideRendering(boolean isServerSideRendering) { - archivalHTML.setServerSideRendering(isServerSideRendering); - archivalCSS.setServerSideRendering(isServerSideRendering); - } -} Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayRenderer.java 2008-07-22 02:42:56 UTC (rev 2479) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -1,202 +0,0 @@ -/* ArchivalUrlReplayRenderer - * - * $Id$ - * - * Created on 6:11:00 PM Aug 8, 2007. - * - * Copyright (C) 2007 Internet Archive. - * - * This file is part of wayback-core. - * - * wayback-core is free software; you can redistribute it and/or modify - * it under the terms of the GNU Lesser Public License as published by - * the Free Software Foundation; either version 2.1 of the License, or - * any later version. - * - * wayback-core is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser Public License for more details. - * - * You should have received a copy of the GNU Lesser Public License - * along with wayback-core; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -package org.archive.wayback.archivalurl; - -import java.io.IOException; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.archive.wayback.ReplayRenderer; -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.Resource; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.CaptureSearchResults; -import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.BadContentException; -import org.archive.wayback.replay.HTMLPage; -import org.archive.wayback.replay.HttpHeaderProcessor; -import org.archive.wayback.replay.HttpHeaderOperation; -import org.archive.wayback.util.url.UrlOperations; - -/** - * ReplayRenderer responsible for marking up HTML pages so they replay in - * ArchivalUrl context: - * resolve in page URLs - * add HTML comment and javascript to modify URLs client-side to point back - * to this context - * - * @author brad - * @version $Date$, $Revision$ - */ -public class ArchivalUrlReplayRenderer implements ReplayRenderer, HttpHeaderProcessor { - - - private List<String> jsInserts = null; - private List<String> jspInserts = null; - private boolean serverSideRendering = false; - - /* (non-Javadoc) - * @see org.archive.wayback.ReplayRenderer#renderResource(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResults) - */ - public void renderResource(HttpServletRequest httpRequest, - HttpServletResponse httpResponse, WaybackRequest wbRequest, - CaptureSearchResult result, Resource resource, - ResultURIConverter uriConverter, CaptureSearchResults results) - throws ServletException, IOException, BadContentException { - - StringBuilder toInsert = new StringBuilder(300); - - HttpHeaderOperation.copyHTTPMessageHeader(resource, httpResponse); - - Map<String,String> headers = HttpHeaderOperation.processHeaders( - resource, result, uriConverter, this); - - - // Load content into an HTML page, and resolve load-time URLs: - HTMLPage page = new HTMLPage(resource,result,uriConverter); - page.readFully(); - - if(serverSideRendering) { - page.resolveAllPageUrls(); - } else { - page.resolvePageUrls(); - } - if(jsInserts != null) { - Iterator<String> itr = jsInserts.iterator(); - while(itr.hasNext()) { - toInsert.append(page.getJSIncludeString(itr.next())); - } - } - if(jspInserts != null) { - Iterator<String> itr = jspInserts.iterator(); - while(itr.hasNext()) { - toInsert.append(page.includeJspString(itr.next(), httpRequest, - httpResponse, wbRequest, results, result, resource)); - } - } - - // insert the new content: - if(serverSideRendering) { - page.insertAtStartOfBody(toInsert.toString()); - } else { - page.insertAtEndOfBody(toInsert.toString()); - } - - // set the corrected length: - int bytes = page.getBytes().length; - headers.put(HTTP_LENGTH_HEADER, String.valueOf(bytes)); - // 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: - httpResponse.setCharacterEncoding(page.getCharSet()); - - // send back the headers: - HttpHeaderOperation.sendHeaders(headers, httpResponse); - - page.writeToOutputStream(httpResponse.getOutputStream()); - } - - /* (non-Javadoc) - * @see org.archive.wayback.replay.HttpHeaderProcessor#filter(java.util.Map, java.lang.String, java.lang.String, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResult) - */ - public void filter(Map<String, String> output, String key, String value, - ResultURIConverter uriConverter, CaptureSearchResult result) { - - String keyUp = key.toUpperCase(); - - // omit Content-Length header - if (keyUp.equals(HTTP_LENGTH_HEADER_UP)) { - return; - } - - // rewrite Location header URLs - if (keyUp.startsWith(HTTP_LOCATION_HEADER_UP) || - keyUp.startsWith(HTTP_CONTENT_BASE_HEADER_UP)) { - - String baseUrl = result.getOriginalUrl(); - String cd = result.getCaptureTimestamp(); - // by the spec, these should be absolute already, but just in case: - String u = UrlOperations.resolveUrl(baseUrl, value); - - output.put(key, uriConverter.makeReplayURI(cd,u)); - } else if(keyUp.startsWith(HTTP_CONTENT_TYPE_HEADER_UP)) { - output.put("X-Wayback-Orig-" + key,value); - output.put(key,value); - } else { - // others go out as-is: - - output.put(key, value); - } - } - - /** - * @return the jsInserts - */ - public List<String> getJsInserts() { - return jsInserts; - } - - /** - * @param jsInserts the jsInserts to set - */ - public void setJsInserts(List<String> jsInserts) { - this.jsInserts = jsInserts; - } - - /** - * @return the jspInserts - */ - public List<String> getJspInserts() { - return jspInserts; - } - - /** - * @param jspInserts the jspInserts to set - */ - public void setJspInserts(List<String> jspInserts) { - this.jspInserts = jspInserts; - } - - /** - * @return the isServerSideRendering - */ - public boolean isServerSideRendering() { - return serverSideRendering; - } - - /** - * @param isServerSideRendering the isServerSideRendering to set - */ - public void setServerSideRendering(boolean serverSideRendering) { - this.serverSideRendering = serverSideRendering; - } -} Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlTransparentReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlTransparentReplayRenderer.java 2008-07-22 02:42:56 UTC (rev 2479) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlTransparentReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -1,45 +0,0 @@ -package org.archive.wayback.archivalurl; - -import java.util.Map; - -import org.archive.wayback.ResultURIConverter; -import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.replay.TransparentReplayRenderer; -import org.archive.wayback.util.url.UrlOperations; - -/** - * Slight extension to TransparentReplayRenderer, which rewrites Location and - * Content-Base HTTP headers as they go out. - * - * @author brad - * @version $Date$, $Revision$ - */ -public class ArchivalUrlTransparentReplayRenderer -extends TransparentReplayRenderer { - - /* (non-Javadoc) - * @see org.archive.wayback.replay.HeaderFilter#filter(java.util.Map, java.lang.String, java.lang.String, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.SearchResult) - */ - public void filter(Map<String, String> output, String key, String value, - ResultURIConverter uriConverter, CaptureSearchResult result) { - - String keyUp = key.toUpperCase(); - - // rewrite Location header URLs - if (keyUp.startsWith(HTTP_LOCATION_HEADER_UP) || - keyUp.startsWith(HTTP_CONTENT_BASE_HEADER_UP)) { - - String baseUrl = result.getOriginalUrl(); - String cd = result.getCaptureTimestamp(); - // by the spec, these should be absolute already, but just in case: - String u = UrlOperations.resolveUrl(baseUrl, value); - - output.put(key, uriConverter.makeReplayURI(cd,u)); - - } else { - // others go out as-is: - - output.put(key, value); - } - } -} Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ClientSideHTMLReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ClientSideHTMLReplayRenderer.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ClientSideHTMLReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -0,0 +1,86 @@ +/* ClientSideHTMLReplayRenderer + * + * $Id$ + * + * Created on 2:23:03 PM Jul 18, 2008. + * + * Copyright (C) 2008 Internet Archive. + * + * This file is part of wayback. + * + * wayback is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * wayback is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with wayback; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.archive.wayback.archivalurl; + +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.archive.wayback.ResultURIConverter; +import org.archive.wayback.core.CaptureSearchResult; +import org.archive.wayback.core.CaptureSearchResults; +import org.archive.wayback.core.Resource; +import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.replay.TextDocument; +import org.archive.wayback.replay.TextReplayRenderer; +import org.archive.wayback.replay.HttpHeaderProcessor; + +/** + * + * + * @author brad + * @version $Date$, $Revision$ + */ +public class ClientSideHTMLReplayRenderer extends TextReplayRenderer { + /** + * @param httpHeaderProcessor + */ + public ClientSideHTMLReplayRenderer(HttpHeaderProcessor httpHeaderProcessor) { + super(httpHeaderProcessor); + } + + /* (non-Javadoc) + * @see org.archive.wayback.replay.HTMLReplayRenderer#updatePage(org.archive.wayback.replay.HTMLPage, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.CaptureSearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.CaptureSearchResults) + */ + @Override + protected void updatePage(TextDocument page, HttpServletRequest httpRequest, + HttpServletResponse httpResponse, WaybackRequest wbRequest, + CaptureSearchResult result, Resource resource, + ResultURIConverter uriConverter, CaptureSearchResults results) + throws ServletException, IOException { + + List<String> jspInserts = getJspInserts(); + + StringBuilder toInsert = new StringBuilder(300); + + page.resolvePageUrls(); + + // hope we're configured to use ClientSideJSInsert.jsp! + if(jspInserts != null) { + Iterator<String> itr = jspInserts.iterator(); + while(itr.hasNext()) { + toInsert.append(page.includeJspString(itr.next(), httpRequest, + httpResponse, wbRequest, results, result, resource)); + } + } + + // insert the new content: + page.insertAtEndOfBody(toInsert.toString()); + } +} Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ServerSideHTMLReplayRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ServerSideHTMLReplayRenderer.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ServerSideHTMLReplayRenderer.java 2008-07-22 02:45:34 UTC (rev 2480) @@ -0,0 +1,84 @@ +/* ServerSideHTMLReplayRenderer + * + * $Id$ + * + * Created on 2:21:16 PM Jul 18, 2008. + * + * Copyright (C) 2008 Internet Archive. + * + * This file is part of wayback. + * + * wayback is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser Public License as published by + * the Free Software Foundation; either version 2.1 of the License, or + * any later version. + * + * wayback is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser Public License for more details. + * + * You should have received a copy of the GNU Lesser Public License + * along with wayback; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package org.archive.wayback.archivalurl; + +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.archive.wayback.ResultURIConverter; +import org.archive.wayback.core.CaptureSearchResult; +import org.archive.wayback.core.CaptureSearchResults; +import org.archive.wayback.core.Resource; +import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.replay.TextDocument; +import org.archive.wayback.replay.TextReplayRenderer; +import org.archive.wayback.replay.HttpHeaderProcessor; + +/** + * + * + * @author brad + * @version $Date$, $Revision$ + */ +public class ServerSideHTMLReplayRenderer extends TextReplayRenderer { + /** + * @param httpHeaderProcessor + */ + public ServerSideHTMLReplayRenderer(HttpHeaderProcessor httpHeaderProcessor) { + super(httpHeaderProcessor); + } + + /* (non-Javadoc) + * @see org.archive.wayback.replay.HTMLReplayRenderer#updatePage(org.archive.wayback.replay.HTMLPage, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.CaptureSearchResult, org.archive.wayback.core.Resource, org.archive.wayback.ResultURIConverter, org.archive.wayback.core.CaptureSearchResults) + */ + @Override + protected void updatePage(TextDocument page, HttpServletRequest httpRequest, + HttpServletResponse httpResponse, WaybackRequest wbRequest, + CaptureSearchResult result, Resource resource, + ResultURIConverter uriConverter, CaptureSearchResults results) + throws ServletException, IOException { + + List<String> jspInserts = getJspInserts(); + + StringBuilder toInsert = new StringBuilder(300); + + page.resolveAllPageUrls(); + if(jspInserts != null) { + Iterator<String> itr = jspInserts.iterator(); + while(itr.hasNext()) { + toInsert.append(page.includeJspString(itr.next(), httpRequest, + httpResponse, wbRequest, results, result, resource)); + } + } + + // insert the new content: + page.insertAtStartOfBody(toInsert.toString()); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |