From: <bra...@us...> - 2008-06-24 22:52:30
|
Revision: 2304 http://archive-access.svn.sourceforge.net/archive-access/?rev=2304&view=rev Author: bradtofel Date: 2008-06-24 15:52:35 -0700 (Tue, 24 Jun 2008) Log Message: ----------- REFACTOR: moved renderException from QueryRenderer and ReplayDispatcher to ExceptionRenderer. REFACTOR: changed interface of ReplayDispatcher to return a ReplayRenderer. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/QueryRenderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/ReplayDispatcher.java 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/domainprefix/DomainPrefixReplayDispatcher.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayDispatcher.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/QueryRenderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/QueryRenderer.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/QueryRenderer.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -32,7 +32,6 @@ import org.archive.wayback.core.SearchResults; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.WaybackException; /** * @@ -42,20 +41,6 @@ */ public interface QueryRenderer { - /** - * Render the contents of a WaybackException in either xml or html format. - * - * @param httpRequest - * @param httpResponse - * @param wbRequest - * @param exception - * @throws ServletException - * @throws IOException - */ - public void renderException(HttpServletRequest httpRequest, - HttpServletResponse httpResponse, WaybackRequest wbRequest, - WaybackException exception) throws ServletException, IOException; - /** Show the SearchResults of the request for this particular URL * * @param httpRequest the HttpServletRequest Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/ReplayDispatcher.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/ReplayDispatcher.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/ReplayDispatcher.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -24,14 +24,9 @@ */ package org.archive.wayback; -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - +import org.archive.wayback.core.Resource; +import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.WaybackException; /** * @@ -39,21 +34,16 @@ * @author brad * @version $Date$, $Revision$ */ -public interface ReplayDispatcher extends ReplayRenderer { +public interface ReplayDispatcher { /** - * Render the contents of a WaybackException in either html, javascript, or - * css format, depending on the guessed context, so errors in embedded - * documents do not cause unneeded errors in the embedding document. * - * @param httpRequest - * @param httpResponse + * Return a ReplayRenderer appropriate for the Resource. + * * @param wbRequest - * @param exception - * @throws ServletException - * @throws IOException + * @param result + * @param resource + * @return the correct ReplayRenderer for the Resource */ - public void renderException(HttpServletRequest httpRequest, - HttpServletResponse httpResponse, WaybackRequest wbRequest, - WaybackException exception) throws ServletException, IOException; - + public ReplayRenderer getRenderer(WaybackRequest wbRequest, + SearchResult result, Resource resource); } Modified: 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-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/ArchivalUrlReplayDispatcher.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -26,12 +26,12 @@ import java.util.List; +import org.archive.wayback.ReplayDispatcher; import org.archive.wayback.ReplayRenderer; import org.archive.wayback.WaybackConstants; import org.archive.wayback.core.Resource; import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.replay.BaseReplayDispatcher; import org.archive.wayback.replay.DateRedirectReplayRenderer; /** @@ -40,8 +40,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class ArchivalUrlReplayDispatcher - extends BaseReplayDispatcher { +public class ArchivalUrlReplayDispatcher implements ReplayDispatcher { /** * MIME type of documents which should be marked up with javascript to @@ -69,9 +68,8 @@ new ArchivalUrlASXReplayRenderer(); /* (non-Javadoc) - * @see org.archive.wayback.replay.ReplayRendererDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) + * @see org.archive.wayback.ReplayDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) */ - @Override public ReplayRenderer getRenderer(WaybackRequest wbRequest, SearchResult result, Resource resource) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayDispatcher.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayDispatcher.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/domainprefix/DomainPrefixReplayDispatcher.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -24,12 +24,12 @@ */ package org.archive.wayback.domainprefix; +import org.archive.wayback.ReplayDispatcher; import org.archive.wayback.ReplayRenderer; import org.archive.wayback.WaybackConstants; import org.archive.wayback.core.Resource; import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.replay.BaseReplayDispatcher; import org.archive.wayback.replay.DateRedirectReplayRenderer; import org.archive.wayback.replay.TransparentReplayRenderer; @@ -39,7 +39,7 @@ * @author brad * @version $Date$, $Revision$ */ -public class DomainPrefixReplayDispatcher extends BaseReplayDispatcher { +public class DomainPrefixReplayDispatcher implements ReplayDispatcher { private final static String TEXT_HTML_MIME = "text/html"; private final static String TEXT_XHTML_MIME = "application/xhtml"; @@ -53,9 +53,8 @@ private DomainPrefixReplayRenderer html = new DomainPrefixReplayRenderer(); /* (non-Javadoc) - * @see org.archive.wayback.replay.BaseReplayDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) + * @see org.archive.wayback.ReplayDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) */ - @Override public ReplayRenderer getRenderer(WaybackRequest wbRequest, SearchResult result, Resource resource) { // if the result is not for the exact date requested, redirect to the Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayDispatcher.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayDispatcher.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyReplayDispatcher.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -24,27 +24,27 @@ */ package org.archive.wayback.proxy; +import org.archive.wayback.ReplayDispatcher; import org.archive.wayback.ReplayRenderer; import org.archive.wayback.core.Resource; import org.archive.wayback.core.SearchResult; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.replay.BaseReplayDispatcher; import org.archive.wayback.replay.TransparentReplayRenderer; /** + * Trivial Replay dispatcher implementation, generally used in Proxy mode, that + * sends all documents back as-is. * - * * @author brad * @version $Date$, $Revision$ */ -public class ProxyReplayDispatcher extends BaseReplayDispatcher { +public class ProxyReplayDispatcher implements ReplayDispatcher { private ReplayRenderer renderer = new TransparentReplayRenderer(); - + /* (non-Javadoc) - * @see org.archive.wayback.replay.ReplayRendererDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) + * @see org.archive.wayback.ReplayDispatcher#getRenderer(org.archive.wayback.core.WaybackRequest, org.archive.wayback.core.SearchResult, org.archive.wayback.core.Resource) */ - @Override public ReplayRenderer getRenderer(WaybackRequest wbRequest, SearchResult result, Resource resource) { // always use the transparent: Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/query/Renderer.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -35,20 +35,18 @@ import org.archive.wayback.ResultURIConverter; import org.archive.wayback.WaybackConstants; import org.archive.wayback.core.SearchResults; -import org.archive.wayback.core.UIResults; import org.archive.wayback.core.WaybackRequest; -import org.archive.wayback.exception.WaybackException; /** + * Brain-dead simple QueryRenderer implementation, which shunts all the work off + * to a .jsp file as defined by administrators. Also has basic logic to switch + * to a different .jsp to format request asking for XML data. * - * * @author brad * @version $Date$, $Revision$ */ public class Renderer implements QueryRenderer { - private String errorJsp = "/jsp/HTMLError.jsp"; - private String xmlErrorJsp = "/jsp/XMLError.jsp"; private String captureJsp = "/jsp/HTMLResults.jsp"; private String urlJsp = "/jsp/HTMLResults.jsp"; private String xmlJsp = "/jsp/XMLResults.jsp"; @@ -68,21 +66,6 @@ dispatcher.forward(request, response); } - public void renderException(HttpServletRequest httpRequest, - HttpServletResponse httpResponse, WaybackRequest wbRequest, - WaybackException exception) throws ServletException, IOException { - - httpRequest.setAttribute("exception", exception); - UIResults uiResults = new UIResults(wbRequest); - String jsp = errorJsp; - if(wbRequest.containsKey(WaybackConstants.REQUEST_XML_DATA)) { - jsp = xmlErrorJsp; - } - uiResults.storeInRequest(httpRequest,jsp); - - proxyRequest(httpRequest,httpResponse,jsp); - } - public void renderUrlResults(HttpServletRequest httpRequest, HttpServletResponse httpResponse, WaybackRequest wbRequest, SearchResults results, ResultURIConverter uriConverter) @@ -121,20 +104,6 @@ } /** - * @return the errorJsp - */ - public String getErrorJsp() { - return errorJsp; - } - - /** - * @param errorJsp the errorJsp to set - */ - public void setErrorJsp(String errorJsp) { - this.errorJsp = errorJsp; - } - - /** * @return the captureJsp */ public String getCaptureJsp() { @@ -161,4 +130,18 @@ public void setUrlJsp(String urlJsp) { this.urlJsp = urlJsp; } + + /** + * @return the xmlJsp + */ + public String getXmlJsp() { + return xmlJsp; + } + + /** + * @param xmlJsp the xmlJsp to set + */ + public void setXmlJsp(String xmlJsp) { + this.xmlJsp = xmlJsp; + } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java 2008-06-24 22:50:52 UTC (rev 2303) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/webapp/AccessPoint.java 2008-06-24 22:52:35 UTC (rev 2304) @@ -33,8 +33,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.archive.wayback.ExceptionRenderer; import org.archive.wayback.QueryRenderer; import org.archive.wayback.ReplayDispatcher; +import org.archive.wayback.ReplayRenderer; import org.archive.wayback.RequestParser; import org.archive.wayback.ResultURIConverter; import org.archive.wayback.WaybackConstants; @@ -46,7 +48,7 @@ import org.archive.wayback.core.UIResults; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.AuthenticationControlException; -import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.exception.BaseExceptionRenderer; import org.archive.wayback.exception.ResourceNotAvailableException; import org.archive.wayback.exception.ResourceNotInArchiveException; import org.archive.wayback.exception.WaybackException; @@ -76,6 +78,7 @@ private String contextName = null; private WaybackCollection collection = null; private ReplayDispatcher replay = null; + private ExceptionRenderer exception = new BaseExceptionRenderer(); private QueryRenderer query = null; private RequestParser parser = null; private ResultURIConverter uriConverter = null; @@ -287,10 +290,9 @@ handled = dispatchLocal(httpRequest,httpResponse); } - } catch (BadQueryException e) { - query.renderException(httpRequest, httpResponse, wbRequest, e); - } catch (AuthenticationControlException e) { - query.renderException(httpRequest, httpResponse, wbRequest, e); + } catch(WaybackException e) { + logNotInArchive(e,wbRequest); + exception.renderException(httpRequest, httpResponse, wbRequest, e); } return handled; @@ -298,7 +300,7 @@ private void handleReplay(WaybackRequest wbRequest, HttpServletRequest httpRequest, HttpServletResponse httpResponse) - throws IOException, ServletException { + throws IOException, ServletException, WaybackException { Resource resource = null; try { SearchResults results = collection.getResourceIndex().query(wbRequest); @@ -310,12 +312,9 @@ // TODO: check which versions are actually accessible right now? SearchResult closest = captureResults.getClosest(wbRequest); resource = collection.getResourceStore().retrieveResource(closest); - - replay.renderResource(httpRequest, httpResponse, wbRequest, + ReplayRenderer renderer = replay.getRenderer(wbRequest, closest, resource); + renderer.renderResource(httpRequest, httpResponse, wbRequest, closest, resource, uriConverter, captureResults); - } catch(WaybackException e) { - logNotInArchive(e,wbRequest); - replay.renderException(httpRequest, httpResponse, wbRequest, e); } finally { if(resource != null) { resource.close(); @@ -325,26 +324,21 @@ private void handleQuery(WaybackRequest wbRequest, HttpServletRequest httpRequest, HttpServletResponse httpResponse) - throws ServletException, IOException { + throws ServletException, IOException, WaybackException { - try { - SearchResults results = collection.getResourceIndex().query(wbRequest); - if(results.getResultsType().equals( - WaybackConstants.RESULTS_TYPE_CAPTURE)) { - CaptureSearchResults cResults = (CaptureSearchResults) results; - SearchResult closest = cResults.getClosest(wbRequest); - closest.put(WaybackConstants.RESULT_CLOSEST_INDICATOR, - WaybackConstants.RESULT_CLOSEST_VALUE); - query.renderUrlResults(httpRequest,httpResponse,wbRequest, - results,uriConverter); + SearchResults results = collection.getResourceIndex().query(wbRequest); + if(results.getResultsType().equals( + WaybackConstants.RESULTS_TYPE_CAPTURE)) { + CaptureSearchResults cResults = (CaptureSearchResults) results; + SearchResult closest = cResults.getClosest(wbRequest); + closest.put(WaybackConstants.RESULT_CLOSEST_INDICATOR, + WaybackConstants.RESULT_CLOSEST_VALUE); + query.renderUrlResults(httpRequest,httpResponse,wbRequest, + results,uriConverter); - } else { - query.renderUrlPrefixResults(httpRequest,httpResponse,wbRequest, - results,uriConverter); - } - } catch(WaybackException e) { - logNotInArchive(e,wbRequest); - query.renderException(httpRequest, httpResponse, wbRequest, e); + } else { + query.renderUrlPrefixResults(httpRequest,httpResponse,wbRequest, + results,uriConverter); } } @@ -355,6 +349,7 @@ } private void logNotInArchive(WaybackException e, WaybackRequest r) { + // TODO: move this into ResourceNotInArchiveException constructor if(e instanceof ResourceNotInArchiveException) { String url = r.get(WaybackConstants.REQUEST_URL); StringBuilder sb = new StringBuilder(100); @@ -468,4 +463,12 @@ public void setCollection(WaybackCollection collection) { this.collection = collection; } + + public ExceptionRenderer getException() { + return exception; + } + + public void setException(ExceptionRenderer exception) { + this.exception = exception; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |