From: <bra...@us...> - 2010-03-23 23:45:15
|
Revision: 3000 http://archive-access.svn.sourceforge.net/archive-access/?rev=3000&view=rev Author: bradtofel Date: 2010-03-23 23:45:07 +0000 (Tue, 23 Mar 2010) Log Message: ----------- INTERFACE: now passing AccessPoint reference into PathRequestParsers Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/PathRequestParser.java trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParserTest.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDatePrefixQueryRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -31,6 +31,7 @@ import org.archive.wayback.requestparser.BaseRequestParser; import org.archive.wayback.requestparser.PathRequestParser; import org.archive.wayback.util.Timestamp; +import org.archive.wayback.webapp.AccessPoint; /** * RequestParser implementation that extracts request info from an Archival Url @@ -54,7 +55,7 @@ private final static Pattern WB_QUERY_REGEX = Pattern .compile("^(\\d{0,13})\\*/(.*[^*])$"); - public WaybackRequest parse(String requestPath) { + public WaybackRequest parse(String requestPath, AccessPoint ap) { WaybackRequest wbRequest = null; Matcher matcher = WB_QUERY_REGEX.matcher(requestPath); Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathDateRangeQueryRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -31,6 +31,7 @@ import org.archive.wayback.requestparser.BaseRequestParser; import org.archive.wayback.requestparser.PathRequestParser; import org.archive.wayback.util.Timestamp; +import org.archive.wayback.webapp.AccessPoint; /** * RequestParser implementation that extracts request info from an Archival Url @@ -56,7 +57,7 @@ .compile("^(\\d{1,14})-(\\d{1,14})\\*/(.*[^*])$"); - public WaybackRequest parse(String requestPath) { + public WaybackRequest parse(String requestPath, AccessPoint ap) { WaybackRequest wbRequest = null; Matcher matcher = WB_QUERY2_REGEX.matcher(requestPath); if (matcher != null && matcher.matches()) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDatePrefixQueryRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -31,6 +31,7 @@ import org.archive.wayback.requestparser.BaseRequestParser; import org.archive.wayback.requestparser.PathRequestParser; import org.archive.wayback.util.Timestamp; +import org.archive.wayback.webapp.AccessPoint; /** * RequestParser implementation that extracts request info from an Archival Url @@ -54,7 +55,7 @@ private final static Pattern WB_PATH_QUERY_REGEX = Pattern .compile("^(\\d{0,13})\\*/(.*)\\*$"); - public WaybackRequest parse(String requestPath) { + public WaybackRequest parse(String requestPath, AccessPoint ap) { WaybackRequest wbRequest = null; Matcher matcher = WB_PATH_QUERY_REGEX.matcher(requestPath); if (matcher != null && matcher.matches()) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/PathPrefixDateRangeQueryRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -31,6 +31,7 @@ import org.archive.wayback.requestparser.BaseRequestParser; import org.archive.wayback.requestparser.PathRequestParser; import org.archive.wayback.util.Timestamp; +import org.archive.wayback.webapp.AccessPoint; /** * RequestParser implementation that extracts request info from an Archival Url @@ -54,7 +55,7 @@ private final static Pattern WB_PATH_QUERY2_REGEX = Pattern .compile("^(\\d{1,14})-(\\d{1,14})\\*/(.*)\\*$"); - public WaybackRequest parse(String requestPath) { + public WaybackRequest parse(String requestPath, AccessPoint ap) { WaybackRequest wbRequest = null; Matcher matcher = WB_PATH_QUERY2_REGEX.matcher(requestPath); if (matcher != null && matcher.matches()) { Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -27,11 +27,17 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.httpclient.URIException; +import org.archive.net.UURIFactory; +import org.archive.wayback.ResultURIConverter; import org.archive.wayback.archivalurl.ArchivalUrlRequestParser; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.exception.BetterRequestException; import org.archive.wayback.requestparser.BaseRequestParser; import org.archive.wayback.requestparser.PathRequestParser; import org.archive.wayback.util.Timestamp; +import org.archive.wayback.util.url.UrlOperations; +import org.archive.wayback.webapp.AccessPoint; /** * RequestParser implementation that extracts request info from a Replay @@ -55,7 +61,8 @@ super(wrapped); } - public WaybackRequest parse(String requestPath) { + public WaybackRequest parse(String requestPath, AccessPoint ap) + throws BetterRequestException { WaybackRequest wbRequest = null; Matcher matcher = WB_REQUEST_REGEX.matcher(requestPath); String urlStr = null; @@ -105,6 +112,33 @@ wbRequest.setReplayRequest(); wbRequest.setRequestUrl(urlStr); + } else { + // see if the remainder looks like an URL: +// String scheme = UrlOperations.urlToScheme(requestPath); +// if(scheme != null) { +// // lets interpret this as a replay request missing the +// // timestamp: use "NOW" +// String nowTS = Timestamp.currentTimestamp().getDateStr(); +// ResultURIConverter conv = ap.getUriConverter(); +// +// String betterURI = conv.makeReplayURI(nowTS, requestPath); +// throw new BetterRequestException(betterURI); +// } else { +// // not obviously an URL... see if UURI can handle it: +// String httpUrl = UrlOperations.HTTP_SCHEME + requestPath; +// try { +// UURIFactory.getInstance(httpUrl); +// // that worked. use httpUrl: +// String nowTS = Timestamp.currentTimestamp().getDateStr(); +// ResultURIConverter conv = ap.getUriConverter(); +// +// String betterURI = conv.makeReplayURI(nowTS, requestPath); +// throw new BetterRequestException(betterURI); +// } catch (URIException e) { +// // oh well. lets just fail: +// } +// } + } return wbRequest; } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/PathRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/PathRequestParser.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/requestparser/PathRequestParser.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -28,6 +28,7 @@ import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.exception.BetterRequestException; import org.archive.wayback.webapp.AccessPoint; /** @@ -48,17 +49,21 @@ /** * @param requestPath + * @param acessPoint * @return WaybackRequest with information parsed from the requestPath, or * null if information could not be extracted. + * @throws BetterRequestException */ - public abstract WaybackRequest parse(String requestPath); + public abstract WaybackRequest parse(String requestPath, + AccessPoint acessPoint) throws BetterRequestException; /* (non-Javadoc) * @see org.archive.wayback.requestparser.BaseRequestParser#parse(javax.servlet.http.HttpServletRequest, org.archive.wayback.webapp.WaybackContext) */ @Override public WaybackRequest parse(HttpServletRequest httpRequest, - AccessPoint wbContext) throws BadQueryException { + AccessPoint acessPoint) + throws BadQueryException, BetterRequestException { String queryString = httpRequest.getQueryString(); String origRequestPath = httpRequest.getRequestURI(); @@ -66,13 +71,13 @@ if (queryString != null) { origRequestPath += "?" + queryString; } - String contextPath = wbContext.getContextPath(httpRequest); + String contextPath = acessPoint.getContextPath(httpRequest); if (!origRequestPath.startsWith(contextPath)) { return null; } String requestPath = origRequestPath.substring(contextPath.length()); - WaybackRequest wbRequest = parse(requestPath); + WaybackRequest wbRequest = parse(requestPath, acessPoint); if(wbRequest != null) { wbRequest.setResultsPerPage(getMaxRecords()); } Modified: trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParserTest.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParserTest.java 2010-03-23 23:40:36 UTC (rev 2999) +++ trunk/archive-access/projects/wayback/wayback-core/src/test/java/org/archive/wayback/archivalurl/requestparser/ReplayRequestParserTest.java 2010-03-23 23:45:07 UTC (rev 3000) @@ -26,7 +26,9 @@ import org.archive.wayback.archivalurl.ArchivalUrlRequestParser; import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.exception.BetterRequestException; import org.archive.wayback.requestparser.BaseRequestParser; +import org.archive.wayback.webapp.AccessPoint; import junit.framework.TestCase; @@ -41,87 +43,89 @@ /** * Test method for {@link org.archive.wayback.archivalurl.requestparser.ReplayRequestParser#parse(java.lang.String)}. + * @throws BetterRequestException */ - public void testParseString() { + public void testParseString() throws BetterRequestException { BaseRequestParser wrapped = new ArchivalUrlRequestParser(); ReplayRequestParser p = new ReplayRequestParser(wrapped); WaybackRequest r; - r = p.parse(""); + AccessPoint ap = null; + r = p.parse("",ap); assertNull("Should not parse empty string", r); - r = p.parse("20070101000000/foo.com"); + r = p.parse("20070101000000/foo.com",ap); assertNotNull("Should parse legit request sans scheme", r); assertEquals("parsed request Url",r.getRequestUrl(),"http://foo.com"); assertEquals("Parsed timestamp","20070101000000",r.getReplayTimestamp()); - r = p.parse("20070101000000/foo.com/"); + r = p.parse("20070101000000/foo.com/",ap); assertEquals("parsed request Url, maintaining trailing slash", "http://foo.com/",r.getRequestUrl()); - r = p.parse("200701010000/foo.com"); + r = p.parse("200701010000/foo.com",ap); assertEquals("parsed partial date", "http://foo.com",r.getRequestUrl()); assertEquals("Parsed partial timestamp to earliest", "20070101000000",r.getReplayTimestamp()); - r = p.parse("20070101000000/http://foo.com"); + r = p.parse("20070101000000/http://foo.com",ap); assertEquals("parsed request Url with scheme", "http://foo.com",r.getRequestUrl()); - r = p.parse("20070101000000/http://foo.com/"); + r = p.parse("20070101000000/http://foo.com/",ap); assertEquals("parsed request Url with scheme and trailing slash", "http://foo.com/",r.getRequestUrl()); - r = p.parse("20070101000000/ftp://foo.com/"); + r = p.parse("20070101000000/ftp://foo.com/",ap); assertEquals("parsed request Url with ftp scheme", "ftp://foo.com/",r.getRequestUrl()); - r = p.parse("20070101000000/https://foo.com/"); + r = p.parse("20070101000000/https://foo.com/",ap); assertEquals("parsed request Url with https scheme", "https://foo.com/",r.getRequestUrl()); - r = p.parse("20070101000000js_/http://foo.com/"); + r = p.parse("20070101000000js_/http://foo.com/",ap); assertEquals("parsed request Url with js_ flag", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed js_ flag",r.isJSContext()); assertFalse("css not set",r.isCSSContext()); - r = p.parse("20070101000000cs_/http://foo.com/"); + r = p.parse("20070101000000cs_/http://foo.com/",ap); assertEquals("parsed request Url with cs_ flag", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); assertFalse("js not set",r.isJSContext()); - r = p.parse("20070101000000cs_js_/http://foo.com/"); + r = p.parse("20070101000000cs_js_/http://foo.com/",ap); assertEquals("parsed request Url with cs_ and js_ flags", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); assertTrue("parsed js_ flag",r.isJSContext()); - r = p.parse("20070101000000js_cs_/http://foo.com/"); + r = p.parse("20070101000000js_cs_/http://foo.com/",ap); assertEquals("parsed request Url with cs_ and js_ flags, backvards", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); assertTrue("parsed js_ flag",r.isJSContext()); - r = p.parse("20070101000000un_/http://foo.com/"); + r = p.parse("20070101000000un_/http://foo.com/",ap); assertEquals("parsed request Url with unknown flag", "http://foo.com/",r.getRequestUrl()); assertFalse("no cs_ flag",r.isCSSContext()); assertFalse("no js_ flag",r.isJSContext()); - r = p.parse("20070101000000un_js_cs_/http://foo.com/"); + r = p.parse("20070101000000un_js_cs_/http://foo.com/",ap); assertEquals("parsed request Url with falgs and unknown flag", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); assertTrue("parsed js_ flag",r.isJSContext()); - r = p.parse("20070101000000js_cs_un_/http://foo.com/"); + r = p.parse("20070101000000js_cs_un_/http://foo.com/",ap); assertEquals("parsed request Url with falgs and unknown flag at end", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); assertTrue("parsed js_ flag",r.isJSContext()); - r = p.parse("20070101000000un_js_cs_un_/http://foo.com/"); + r = p.parse("20070101000000un_js_cs_un_/http://foo.com/",ap); assertEquals("parsed request Url with falgs and unknown flags", "http://foo.com/",r.getRequestUrl()); assertTrue("parsed cs_ flag",r.isCSSContext()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |