From: <bra...@us...> - 2008-07-15 01:18:47
|
Revision: 2443 http://archive-access.svn.sourceforge.net/archive-access/?rev=2443&view=rev Author: bradtofel Date: 2008-07-14 18:18:56 -0700 (Mon, 14 Jul 2008) Log Message: ----------- REFACTOR: moved proxy mode timestamp association from Timestamp to BDBMap. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/BDBMap.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -21,6 +21,7 @@ import java.io.File; import java.io.UnsupportedEncodingException; +import java.util.Properties; import com.sleepycat.je.Database; import com.sleepycat.je.DatabaseConfig; @@ -39,6 +40,12 @@ */ public class BDBMap { + // Acts as a mapping between an ID and a timestamp to surf at. + // The dir should probably be configurable somehow. + private static String BDB_DIR = System.getProperty("java.io.tmpdir") + + "/wayback/bdb"; + private static Properties bdbMaps = new Properties(); + protected Environment env = null; protected Database db = null; protected String name; @@ -116,4 +123,47 @@ return result; } + /** + * @param context + * @return singleton BDBMap for the context + */ + public static BDBMap getContextMap(String context) { + if(context == null) context = ""; + if(context.startsWith("/")) { + context = context.substring(1); + } + BDBMap map = null; + synchronized(Timestamp.class) { + if(!bdbMaps.containsKey(context)) { + File bdbDir = new File(BDB_DIR,context); + bdbMaps.put(context,new BDBMap(context, + bdbDir.getAbsolutePath())); + } + map = (BDBMap) bdbMaps.get(context); + } + return map; + } + /** + * return the timestamp associated with the identifier argument, or now + * if no value is associated or something goes wrong. + * @param context + * @param ip + * @return timestamp string value + */ + public static String getTimestampForId(String context, String ip) { + BDBMap bdbMap = getContextMap(context); + String dateStr = bdbMap.get(ip); + return (dateStr != null) ? dateStr : Timestamp.currentTimestamp().getDateStr(); + } + + /** + * associate timestamp time with idenfier ip persistantly + * @param context + * @param ip + * @param time + */ + public static void addTimestampForId(String context, String ip, String time) { + BDBMap bdbMap = getContextMap(context); + bdbMap.put(ip, time); + } } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/core/Timestamp.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -23,11 +23,9 @@ package org.archive.wayback.core; -import java.io.File; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; -import java.util.Properties; import java.util.SimpleTimeZone; import java.util.TimeZone; @@ -59,13 +57,7 @@ private final static String[] months = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - - // Acts as a mapping between an ID and a timestamp to surf at. - // The dir should probably be configurable somehow. - private static String BDB_DIR = System.getProperty("java.io.tmpdir") + - "/wayback/bdb"; - private static Properties bdbMaps = new Properties(); - + private String dateStr = null; private Date date = null; @@ -464,49 +456,4 @@ public static Timestamp earliestTimestamp() { return new Timestamp(SSE_1996); } - - /** - * @param context - * @return singleton BDBMap for the context - */ - public static BDBMap getContextMap(String context) { - if(context == null) context = ""; - if(context.startsWith("/")) { - context = context.substring(1); - } - BDBMap map = null; - synchronized(Timestamp.class) { - if(!bdbMaps.containsKey(context)) { - File bdbDir = new File(BDB_DIR,context); - bdbMaps.put(context,new BDBMap(context, - bdbDir.getAbsolutePath())); - } - map = (BDBMap) bdbMaps.get(context); - } - return map; - } - /** - * return the timestamp associated with the identifier argument, or now - * if no value is associated or something goes wrong. - * @param context - * @param ip - * @return timestamp string value - */ - public static String getTimestampForId(String context, String ip) { - BDBMap bdbMap = getContextMap(context); - String dateStr = bdbMap.get(ip); - return (dateStr != null) ? dateStr : currentTimestamp().getDateStr(); - } - - /** - * associate timestamp time with idenfier ip persistantly - * @param context - * @param ip - * @param time - */ - public static void addTimestampForId(String context, String ip, String time) { - BDBMap bdbMap = getContextMap(context); - bdbMap.put(ip, time); - } - } Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/proxy/ProxyRequestParser.java 2008-07-15 01:18:56 UTC (rev 2443) @@ -29,7 +29,7 @@ import javax.servlet.http.HttpServletRequest; import org.archive.wayback.RequestParser; -import org.archive.wayback.core.Timestamp; +import org.archive.wayback.core.BDBMap; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; import org.archive.wayback.requestparser.CompositeRequestParser; @@ -71,7 +71,7 @@ if (id == null) id = httpRequest.getRemoteAddr(); // TODO: This is hacky. - String replayDateStr = Timestamp.getTimestampForId( + String replayDateStr = BDBMap.getTimestampForId( httpRequest.getContextPath(), id); wbRequest.setReplayTimestamp(replayDateStr); wbRequest.fixup(httpRequest); Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-14 23:19:40 UTC (rev 2442) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/replay/Redirect.jsp 2008-07-15 01:18:56 UTC (rev 2443) @@ -1,4 +1,4 @@ -<%@ page import="org.archive.wayback.core.Timestamp" %> +<%@ page import="org.archive.wayback.core.BDBMap" %> <% String url = request.getParameter("url"); @@ -7,7 +7,7 @@ // Put time-mapping for this id, or if no id, the ip-addr. String id = request.getHeader("Proxy-Id"); if(id == null) id = request.getRemoteAddr(); - Timestamp.addTimestampForId(request.getContextPath(),id, time); + BDBMap.addTimestampForId(request.getContextPath(),id, time); // Now redirect to the page the user wanted. response.sendRedirect(url); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |