|
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.
|