|
From: <bra...@us...> - 2010-08-16 23:00:43
|
Revision: 3230
http://archive-access.svn.sourceforge.net/archive-access/?rev=3230&view=rev
Author: bradtofel
Date: 2010-08-16 23:00:36 +0000 (Mon, 16 Aug 2010)
Log Message:
-----------
REFACTOR: changing names of RequestParser subclasses
Modified Paths:
--------------
trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoRequestParser.java
Added Paths:
-----------
trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleRequestParser.java
trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeGateRequestParser.java
Removed Paths:
-------------
trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoParser.java
trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleParser.java
Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoParser.java
===================================================================
--- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoParser.java 2010-08-16 22:57:47 UTC (rev 3229)
+++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoParser.java 2010-08-16 23:00:36 UTC (rev 3230)
@@ -1,157 +0,0 @@
-package org.archive.wayback.memento;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.log4j.Logger;
-import org.archive.wayback.core.WaybackRequest;
-import org.archive.wayback.exception.BadQueryException;
-import org.archive.wayback.exception.BetterRequestException;
-import org.archive.wayback.requestparser.BaseRequestParser;
-import org.archive.wayback.requestparser.WrappedRequestParser;
-import org.archive.wayback.webapp.AccessPoint;
-
-/**
- * RequestParser subclass which matches ".../timegate/URL" requests, and parses
- * the Accept-Datetime header
- *
- * @author Lyudmila Balakireva
- *
- */
-public class MementoParser extends WrappedRequestParser {
- private static final Logger LOGGER =
- Logger.getLogger(MementoParser.class.getName());
-
- String DTHEADER = "Accept-Datetime";
-
- List<SimpleDateFormat> dtsupportedformats =
- new ArrayList<SimpleDateFormat>();
-
- String MEMENTO_BASE = "timegate";
-
- /**
- * @param wrapped
- * BaseRequestParser with configuration
- */
- public MementoParser(BaseRequestParser wrapped) {
- super(wrapped);
-
- dtsupportedformats
- .add(new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"));
- dtsupportedformats.add(new SimpleDateFormat("E, dd MMM yyyy Z"));
- dtsupportedformats.add(new SimpleDateFormat("E, dd MMM yyyy"));
- }
-
- @Override
- public WaybackRequest parse(HttpServletRequest httpRequest,
- AccessPoint accessPoint) throws BadQueryException,
- BetterRequestException {
-
- String base = accessPoint.translateRequestPath(httpRequest);
- String requestPath = accessPoint.translateRequestPathQuery(httpRequest);
-
- LOGGER.trace("requestPath:" + requestPath);
- if (base.startsWith(MEMENTO_BASE)) {
-
- // strip leading "timegate/":
- String urlStr = base.substring(requestPath.indexOf("/") + 1);
-
- // get the "Accept-Datetime" header:
- String httpdate = getHttpDate(httpRequest);
- Date dtconnegdate = null;
- if (httpdate != null) {
- dtconnegdate = checkDateValidity(httpdate, dtsupportedformats);
- if (dtconnegdate == null) {
- return null;
- }
- } else {
- // TODO: should this return null her? no header..
- }
-
- WaybackRequest wbRequest = new WaybackRequest();
- if (wbRequest.getStartTimestamp() == null) {
- wbRequest.setStartTimestamp(getEarliestTimestamp());
- }
- if (dtconnegdate != null) {
- wbRequest.setAnchorDate(dtconnegdate);
- } else {
- wbRequest.setAnchorTimestamp(getLatestTimestamp());
- }
-
- wbRequest.put("dtconneg", httpdate);
-
- if (wbRequest.getEndTimestamp() == null) {
- wbRequest.setEndTimestamp(getLatestTimestamp());
- }
- wbRequest.setCaptureQueryRequest();
- wbRequest.setRequestUrl(urlStr);
- if (wbRequest != null) {
- wbRequest.setResultsPerPage(getMaxRecords());
- }
- return wbRequest;
- }
- return null;
- }
-
- /**
- * Extract the value of the "Accept-Datetime" HTTP request header, if
- * present, and further strips the date value from any surrounding "{","}"
- * @param req HttpServletRequest for this request
- * @return the raw String containing the date information, or null if no
- * such HTTP header exists.
- */
- public String getHttpDate(HttpServletRequest req) {
- String httpdate = req.getHeader(DTHEADER);
-
- if (httpdate != null) {
- int j = httpdate.indexOf("{", 0);
-
- if (j >= 0) {
-
- httpdate = httpdate.substring(httpdate.indexOf("{", 0) + 1);
-
- }
-
- if (httpdate.indexOf("}") > 0) {
- httpdate = httpdate.substring(0, httpdate.indexOf("}"));
-
- }
- }
- return httpdate;
- }
-
- /**
- * Attempt to parse the String httpdate argument using one of the
- * SimpleDateFormats provided.
- *
- * @param httpdate
- * String version of a Date
- * @param list
- * of SimpleDateFormats to parse the httpdate
- * @return Date object set to the time parsed, or null if not parsed
- */
- public Date checkDateValidity(String httpdate, List<SimpleDateFormat> list) {
-
- Date d = null;
- Iterator<SimpleDateFormat> it = list.iterator();
- while (it.hasNext()) {
- SimpleDateFormat formatter = it.next();
- try {
-
- d = formatter.parse(httpdate);
- break;
-
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
- return d;
- }
-}
Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoRequestParser.java
===================================================================
--- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoRequestParser.java 2010-08-16 22:57:47 UTC (rev 3229)
+++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoRequestParser.java 2010-08-16 23:00:36 UTC (rev 3230)
@@ -44,8 +44,8 @@
protected RequestParser[] getRequestParsers() {
RequestParser[] theParsers = {
new ReplayRequestParser(this),
- new MementoParser(this),
- new TimeBundleParser(this),
+ new TimeGateRequestParser(this),
+ new TimeBundleRequestParser(this),
new PathDatePrefixQueryRequestParser(this),
new PathDateRangeQueryRequestParser(this),
new PathPrefixDatePrefixQueryRequestParser(this),
Deleted: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleParser.java
===================================================================
--- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleParser.java 2010-08-16 22:57:47 UTC (rev 3229)
+++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleParser.java 2010-08-16 23:00:36 UTC (rev 3230)
@@ -1,90 +0,0 @@
-package org.archive.wayback.memento;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.log4j.Logger;
-import org.archive.wayback.core.WaybackRequest;
-import org.archive.wayback.exception.BadQueryException;
-import org.archive.wayback.exception.BetterRequestException;
-import org.archive.wayback.requestparser.BaseRequestParser;
-import org.archive.wayback.requestparser.WrappedRequestParser;
-import org.archive.wayback.webapp.AccessPoint;
-
-/**
- * RequestParser subclass which parses "timebundle/URL" and
- * "timemap/FORMAT/URL" requests
- *
- * @author Lyudmila Balakireva
- *
- */
-public class TimeBundleParser extends WrappedRequestParser {
- private static final Logger LOGGER =
- Logger.getLogger(TimeBundleParser.class.getName());
-
- String MEMENTO_BASE = "timegate";
-
- /**
- * @param wrapped BaseRequestParser holding config
- */
- public TimeBundleParser(BaseRequestParser wrapped) {
- super(wrapped);
- }
-
- @Override
- public WaybackRequest parse(HttpServletRequest httpRequest,
- AccessPoint accessPoint) throws BadQueryException,
- BetterRequestException {
-
- String requestPath = accessPoint.translateRequestPathQuery(httpRequest);
- LOGGER.trace("requestpath:" + requestPath);
-
- if (requestPath.startsWith("timebundle")) {
-
- WaybackRequest wbRequest = new WaybackRequest();
- String urlStr = requestPath.substring(requestPath.indexOf("/") + 1);
- if (wbRequest.getStartTimestamp() == null) {
- wbRequest.setStartTimestamp(getEarliestTimestamp());
- }
- if (wbRequest.getEndTimestamp() == null) {
- wbRequest.setEndTimestamp(getLatestTimestamp());
- }
- wbRequest.setCaptureQueryRequest();
- wbRequest.setRequestUrl(urlStr);
-
- // TODO: is it critical to return a 303 code, or will a 302 do?
- // if so, this and ORE.jsp can be simplified by throwing a
- // BetterRequestException here.
- wbRequest.put("redirect", "true");
- return wbRequest;
- }
-
- if (requestPath.startsWith("timemap")) {
-
- String urlStrplus = requestPath
- .substring(requestPath.indexOf("/") + 1);
- String format = urlStrplus.substring(0, urlStrplus.indexOf("/"));
-
- LOGGER.trace("format:" + format);
- String urlStr = urlStrplus.substring(urlStrplus.indexOf("/") + 1);
- LOGGER.trace("id:" + urlStr);
- WaybackRequest wbRequest = new WaybackRequest();
- if (wbRequest.getStartTimestamp() == null) {
- wbRequest.setStartTimestamp(getEarliestTimestamp());
- }
- wbRequest.setAnchorTimestamp(getLatestTimestamp());
- wbRequest.put("format", format);
- if (wbRequest.getEndTimestamp() == null) {
- wbRequest.setEndTimestamp(getLatestTimestamp());
- }
- wbRequest.setCaptureQueryRequest();
- wbRequest.setRequestUrl(urlStr);
- if (wbRequest != null) {
- wbRequest.setResultsPerPage(getMaxRecords());
- }
- return wbRequest;
-
- }
- return null;
- }
-
-}
Copied: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleRequestParser.java (from rev 3229, trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleParser.java)
===================================================================
--- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleRequestParser.java (rev 0)
+++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeBundleRequestParser.java 2010-08-16 23:00:36 UTC (rev 3230)
@@ -0,0 +1,90 @@
+package org.archive.wayback.memento;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
+import org.archive.wayback.core.WaybackRequest;
+import org.archive.wayback.exception.BadQueryException;
+import org.archive.wayback.exception.BetterRequestException;
+import org.archive.wayback.requestparser.BaseRequestParser;
+import org.archive.wayback.requestparser.WrappedRequestParser;
+import org.archive.wayback.webapp.AccessPoint;
+
+/**
+ * RequestParser subclass which parses "timebundle/URL" and
+ * "timemap/FORMAT/URL" requests
+ *
+ * @author Lyudmila Balakireva
+ *
+ */
+public class TimeBundleRequestParser extends WrappedRequestParser {
+ private static final Logger LOGGER =
+ Logger.getLogger(TimeBundleRequestParser.class.getName());
+
+ String MEMENTO_BASE = "timegate";
+
+ /**
+ * @param wrapped BaseRequestParser holding config
+ */
+ public TimeBundleRequestParser(BaseRequestParser wrapped) {
+ super(wrapped);
+ }
+
+ @Override
+ public WaybackRequest parse(HttpServletRequest httpRequest,
+ AccessPoint accessPoint) throws BadQueryException,
+ BetterRequestException {
+
+ String requestPath = accessPoint.translateRequestPathQuery(httpRequest);
+ LOGGER.trace("requestpath:" + requestPath);
+
+ if (requestPath.startsWith("timebundle")) {
+
+ WaybackRequest wbRequest = new WaybackRequest();
+ String urlStr = requestPath.substring(requestPath.indexOf("/") + 1);
+ if (wbRequest.getStartTimestamp() == null) {
+ wbRequest.setStartTimestamp(getEarliestTimestamp());
+ }
+ if (wbRequest.getEndTimestamp() == null) {
+ wbRequest.setEndTimestamp(getLatestTimestamp());
+ }
+ wbRequest.setCaptureQueryRequest();
+ wbRequest.setRequestUrl(urlStr);
+
+ // TODO: is it critical to return a 303 code, or will a 302 do?
+ // if so, this and ORE.jsp can be simplified by throwing a
+ // BetterRequestException here.
+ wbRequest.put("redirect", "true");
+ return wbRequest;
+ }
+
+ if (requestPath.startsWith("timemap")) {
+
+ String urlStrplus = requestPath
+ .substring(requestPath.indexOf("/") + 1);
+ String format = urlStrplus.substring(0, urlStrplus.indexOf("/"));
+
+ LOGGER.trace("format:" + format);
+ String urlStr = urlStrplus.substring(urlStrplus.indexOf("/") + 1);
+ LOGGER.trace("id:" + urlStr);
+ WaybackRequest wbRequest = new WaybackRequest();
+ if (wbRequest.getStartTimestamp() == null) {
+ wbRequest.setStartTimestamp(getEarliestTimestamp());
+ }
+ wbRequest.setAnchorTimestamp(getLatestTimestamp());
+ wbRequest.put("format", format);
+ if (wbRequest.getEndTimestamp() == null) {
+ wbRequest.setEndTimestamp(getLatestTimestamp());
+ }
+ wbRequest.setCaptureQueryRequest();
+ wbRequest.setRequestUrl(urlStr);
+ if (wbRequest != null) {
+ wbRequest.setResultsPerPage(getMaxRecords());
+ }
+ return wbRequest;
+
+ }
+ return null;
+ }
+
+}
Copied: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeGateRequestParser.java (from rev 3229, trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/MementoParser.java)
===================================================================
--- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeGateRequestParser.java (rev 0)
+++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/memento/TimeGateRequestParser.java 2010-08-16 23:00:36 UTC (rev 3230)
@@ -0,0 +1,157 @@
+package org.archive.wayback.memento;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
+import org.archive.wayback.core.WaybackRequest;
+import org.archive.wayback.exception.BadQueryException;
+import org.archive.wayback.exception.BetterRequestException;
+import org.archive.wayback.requestparser.BaseRequestParser;
+import org.archive.wayback.requestparser.WrappedRequestParser;
+import org.archive.wayback.webapp.AccessPoint;
+
+/**
+ * RequestParser subclass which matches ".../timegate/URL" requests, and parses
+ * the Accept-Datetime header
+ *
+ * @author Lyudmila Balakireva
+ *
+ */
+public class TimeGateRequestParser extends WrappedRequestParser {
+ private static final Logger LOGGER =
+ Logger.getLogger(TimeGateRequestParser.class.getName());
+
+ String DTHEADER = "Accept-Datetime";
+
+ List<SimpleDateFormat> dtsupportedformats =
+ new ArrayList<SimpleDateFormat>();
+
+ String MEMENTO_BASE = "timegate";
+
+ /**
+ * @param wrapped
+ * BaseRequestParser with configuration
+ */
+ public TimeGateRequestParser(BaseRequestParser wrapped) {
+ super(wrapped);
+
+ dtsupportedformats
+ .add(new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z"));
+ dtsupportedformats.add(new SimpleDateFormat("E, dd MMM yyyy Z"));
+ dtsupportedformats.add(new SimpleDateFormat("E, dd MMM yyyy"));
+ }
+
+ @Override
+ public WaybackRequest parse(HttpServletRequest httpRequest,
+ AccessPoint accessPoint) throws BadQueryException,
+ BetterRequestException {
+
+ String base = accessPoint.translateRequestPath(httpRequest);
+ String requestPath = accessPoint.translateRequestPathQuery(httpRequest);
+
+ LOGGER.trace("requestPath:" + requestPath);
+ if (base.startsWith(MEMENTO_BASE)) {
+
+ // strip leading "timegate/":
+ String urlStr = base.substring(requestPath.indexOf("/") + 1);
+
+ // get the "Accept-Datetime" header:
+ String httpdate = getHttpDate(httpRequest);
+ Date dtconnegdate = null;
+ if (httpdate != null) {
+ dtconnegdate = checkDateValidity(httpdate, dtsupportedformats);
+ if (dtconnegdate == null) {
+ return null;
+ }
+ } else {
+ // TODO: should this return null her? no header..
+ }
+
+ WaybackRequest wbRequest = new WaybackRequest();
+ if (wbRequest.getStartTimestamp() == null) {
+ wbRequest.setStartTimestamp(getEarliestTimestamp());
+ }
+ if (dtconnegdate != null) {
+ wbRequest.setAnchorDate(dtconnegdate);
+ } else {
+ wbRequest.setAnchorTimestamp(getLatestTimestamp());
+ }
+
+ wbRequest.put("dtconneg", httpdate);
+
+ if (wbRequest.getEndTimestamp() == null) {
+ wbRequest.setEndTimestamp(getLatestTimestamp());
+ }
+ wbRequest.setCaptureQueryRequest();
+ wbRequest.setRequestUrl(urlStr);
+ if (wbRequest != null) {
+ wbRequest.setResultsPerPage(getMaxRecords());
+ }
+ return wbRequest;
+ }
+ return null;
+ }
+
+ /**
+ * Extract the value of the "Accept-Datetime" HTTP request header, if
+ * present, and further strips the date value from any surrounding "{","}"
+ * @param req HttpServletRequest for this request
+ * @return the raw String containing the date information, or null if no
+ * such HTTP header exists.
+ */
+ public String getHttpDate(HttpServletRequest req) {
+ String httpdate = req.getHeader(DTHEADER);
+
+ if (httpdate != null) {
+ int j = httpdate.indexOf("{", 0);
+
+ if (j >= 0) {
+
+ httpdate = httpdate.substring(httpdate.indexOf("{", 0) + 1);
+
+ }
+
+ if (httpdate.indexOf("}") > 0) {
+ httpdate = httpdate.substring(0, httpdate.indexOf("}"));
+
+ }
+ }
+ return httpdate;
+ }
+
+ /**
+ * Attempt to parse the String httpdate argument using one of the
+ * SimpleDateFormats provided.
+ *
+ * @param httpdate
+ * String version of a Date
+ * @param list
+ * of SimpleDateFormats to parse the httpdate
+ * @return Date object set to the time parsed, or null if not parsed
+ */
+ public Date checkDateValidity(String httpdate, List<SimpleDateFormat> list) {
+
+ Date d = null;
+ Iterator<SimpleDateFormat> it = list.iterator();
+ while (it.hasNext()) {
+ SimpleDateFormat formatter = it.next();
+ try {
+
+ d = formatter.parse(httpdate);
+ break;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ }
+
+ return d;
+ }
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|