[Freemail] r19272 - in trunk/apps/Freemail/src/freemail: . fcp imap smtp utils

dbkr at freenetproject.org dbkr at freenetproject.org
Sun Apr 13 21:39:22 UTC 2008


Author: dbkr
Date: 2008-04-13 21:39:22 +0000 (Sun, 13 Apr 2008)
New Revision: 19272

Modified:
   trunk/apps/Freemail/src/freemail/AckProcrastinator.java
   trunk/apps/Freemail/src/freemail/Freemail.java
   trunk/apps/Freemail/src/freemail/InboundContact.java
   trunk/apps/Freemail/src/freemail/MailLog.java
   trunk/apps/Freemail/src/freemail/MailMessage.java
   trunk/apps/Freemail/src/freemail/MailSite.java
   trunk/apps/Freemail/src/freemail/MessageBank.java
   trunk/apps/Freemail/src/freemail/MessageSender.java
   trunk/apps/Freemail/src/freemail/NIMContact.java
   trunk/apps/Freemail/src/freemail/OutboundContact.java
   trunk/apps/Freemail/src/freemail/RTSFetcher.java
   trunk/apps/Freemail/src/freemail/RTSLog.java
   trunk/apps/Freemail/src/freemail/SingleAccountWatcher.java
   trunk/apps/Freemail/src/freemail/SlotManager.java
   trunk/apps/Freemail/src/freemail/fcp/HighLevelFCPClient.java
   trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
   trunk/apps/Freemail/src/freemail/imap/IMAPMessageFlags.java
   trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java
   trunk/apps/Freemail/src/freemail/utils/DateStringFactory.java
Log:
Some fixes from FindBugs


Modified: trunk/apps/Freemail/src/freemail/AckProcrastinator.java
===================================================================
--- trunk/apps/Freemail/src/freemail/AckProcrastinator.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/AckProcrastinator.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -52,13 +52,11 @@
 	private static final int RANDOM_ACK_SIZE = 512;
 	
 	private static File ackdir;
-	private static Random rnd;
+	private static Random rnd = new Random();
 	
-	public AckProcrastinator() {
-		rnd = new Random();
-		File ackdir = getAckDir();
-		if (!ackdir.exists()) {
-			ackdir.mkdir();
+	public AckProcrastinator() throws IOException {
+		if (!ackdir.exists() && !ackdir.mkdir()) {
+			throw new IOException("Coudn't create ACK dir!");
 		}
 	}
 	

Modified: trunk/apps/Freemail/src/freemail/Freemail.java
===================================================================
--- trunk/apps/Freemail/src/freemail/Freemail.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/Freemail.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -45,7 +45,7 @@
 	private static final String GLOBALDATADIR = "globaldata";
 	private static final String ACKDIR = "delayedacks";
 	protected static final String CFGFILE = "globalconfig";
-	private static File datadir;
+	private File datadir;
 	private static File globaldatadir;
 	private static File tempdir;
 	protected static FCPConnection fcpconn = null;
@@ -72,27 +72,21 @@
 		configurator.register("loglevel", new Logger(), "normal|error");
 		
 		configurator.register("datadir", this, Freemail.DEFAULT_DATADIR);
-		if (!getDataDir().exists()) {
-			if (!getDataDir().mkdir()) {
-				Logger.error(this,"Freemail: Couldn't create data directory. Please ensure that the user you are running Freemail as has write access to its working directory");
-				throw new IOException("Couldn't create data dir");
-			}
+		if (!datadir.exists() && !datadir.mkdir()) {
+			Logger.error(this,"Freemail: Couldn't create data directory. Please ensure that the user you are running Freemail as has write access to its working directory");
+			throw new IOException("Couldn't create data dir");
 		}
 		
 		configurator.register("globaldatadir", this, GLOBALDATADIR);
-		if (!getGlobalDataDir().exists()) {
-			if (!getGlobalDataDir().mkdir()) {
-				Logger.error(this,"Freemail: Couldn't create global data directory. Please ensure that the user you are running Freemail as has write access to its working directory");
-				throw new IOException("Couldn't create data dir");
-			}
+		if (!globaldatadir.exists() && !globaldatadir.mkdir()) {
+			Logger.error(this,"Freemail: Couldn't create global data directory. Please ensure that the user you are running Freemail as has write access to its working directory");
+			throw new IOException("Couldn't create data dir");
 		}
 		
 		configurator.register("tempdir", this, Freemail.TEMPDIRNAME);
-		if (!getTempDir().exists()) {
-			if (!Freemail.getTempDir().mkdir()) {
-				Logger.error(this,"Freemail: Couldn't create temporary directory. Please ensure that the user you are running Freemail as has write access to its working directory");
-				throw new IOException("Couldn't create data dir");
-			}
+		if (!tempdir.exists() && !tempdir.mkdir()) {
+			Logger.error(this,"Freemail: Couldn't create temporary directory. Please ensure that the user you are running Freemail as has write access to its working directory");
+			throw new IOException("Couldn't create data dir");
 		}
 		
 		FCPContext fcpctx = new FCPContext();
@@ -105,7 +99,7 @@
 		
 		sender = new MessageSender(accountManager);
 		
-		File ackdir = new File(getGlobalDataDir(), ACKDIR);
+		File ackdir = new File(globaldatadir, ACKDIR);
 		AckProcrastinator.setAckDir(ackdir);
 		ackinserter = new AckProcrastinator();
 		
@@ -118,14 +112,6 @@
 		return Freemail.tempdir;
 	}
 	
-	protected static File getGlobalDataDir() {
-		return globaldatadir;
-	}
-	
-	public static File getDataDir() {
-		return datadir;
-	}
-	
 	public static FCPConnection getFCPConnection() {
 		return Freemail.fcpconn;
 	}
@@ -136,11 +122,11 @@
 
 	public void setConfigProp(String key, String val) {
 		if (key.equalsIgnoreCase("datadir")) {
-			Freemail.datadir = new File(val);
+			datadir = new File(val);
 		} else if (key.equalsIgnoreCase("tempdir")) {
-			Freemail.tempdir = new File(val);
+			tempdir = new File(val);
 		} else if (key.equalsIgnoreCase("globaldatadir")) {
-			Freemail.globaldatadir = new File(val);
+			globaldatadir = new File(val);
 		}
 	}
 	

Modified: trunk/apps/Freemail/src/freemail/InboundContact.java
===================================================================
--- trunk/apps/Freemail/src/freemail/InboundContact.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/InboundContact.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -244,7 +244,7 @@
 	}
 	
 	
-	private class MessageLog {
+	private static class MessageLog {
 		private static final String LOGFILE = "log";
 		private final File logfile;
 		
@@ -263,7 +263,10 @@
 			String line;
 			while ( (line = br.readLine()) != null) {
 				int curid = Integer.parseInt(line);
-				if (curid == targetid) return true;
+				if (curid == targetid) {
+					br.close();
+					return true;
+				}
 			}
 			
 			br.close();

Modified: trunk/apps/Freemail/src/freemail/MailLog.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MailLog.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/MailLog.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -69,6 +69,7 @@
 				this.messages.put(new Integer(thisnum), parts[1]);
 			}
 			
+			br.close();
 			frdr.close();
 		} catch (IOException ioe) {
 			return;
@@ -120,6 +121,7 @@
 		pw.flush();
 		
 		try {
+			pw.close();
 			fos.close();
 		} catch (IOException ioe) {
 			return;

Modified: trunk/apps/Freemail/src/freemail/MailMessage.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MailMessage.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/MailMessage.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -315,7 +315,7 @@
 		this.file.renameTo(new File(this.file.getParentFile(), newname));
 	}
 	
-	private class MailMessageHeader {
+	private static class MailMessageHeader {
 		public String name;
 		public String val;
 		

Modified: trunk/apps/Freemail/src/freemail/MailSite.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MailSite.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/MailSite.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -68,7 +68,7 @@
 		return buf.toString();
 	}
 	
-	public int Publish() {
+	public int publish() {
 		byte[] mailpage;
 		String mailsite_s = this.getMailPage();
 		if (mailsite_s == null) {
@@ -95,7 +95,7 @@
 		
 		int actualslot = -1;
 		try {
-			actualslot = cli.SlotInsert(mailpage, key, minslot, "/"+MAILPAGE);
+			actualslot = cli.slotInsert(mailpage, key, minslot, "/"+MAILPAGE);
 		} catch (ConnectionTerminatedException cte) {
 			return -1;
 		}

Modified: trunk/apps/Freemail/src/freemail/MessageBank.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MessageBank.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/MessageBank.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -246,7 +246,7 @@
 		}
 	}
 	
-	private class MessageFileNameFilter implements FilenameFilter {
+	private static class MessageFileNameFilter implements FilenameFilter {
 		public boolean accept(File dir, String name) {
 			if (name.startsWith(".")) return false;
 			if (!name.matches("[0-9]+(,.*)?")) return false;
@@ -255,7 +255,7 @@
 	}
 	
 	// compare to filenames by number leading up to ","
-	private class UIDComparator implements Comparator {
+	private static class UIDComparator implements Comparator {
 		public final int compare ( Object a, Object b ) {
 			int ia=Integer.parseInt(((File)a).getName().split(",",2)[0]);
 			int ib=Integer.parseInt(((File)b).getName().split(",",2)[0]);

Modified: trunk/apps/Freemail/src/freemail/MessageSender.java
===================================================================
--- trunk/apps/Freemail/src/freemail/MessageSender.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/MessageSender.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -138,8 +138,8 @@
 	}
 	
 	private void sendDir(FreemailAccount fromAccount, File dir) throws ConnectionTerminatedException {
+		if (dir == null) return;
 		File[] files = dir.listFiles();
-		if (dir == null) return;
 		for (int i = 0; i < files.length; i++) {
 			if (files[i].getName().startsWith("."))
 				continue;

Modified: trunk/apps/Freemail/src/freemail/NIMContact.java
===================================================================
--- trunk/apps/Freemail/src/freemail/NIMContact.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/NIMContact.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -44,6 +44,7 @@
 		FileReader frdr = new FileReader(this.keyfile);
 		BufferedReader br = new BufferedReader(frdr);
 		String key =  br.readLine();
+		br.close();
 		frdr.close();
 		return key;
 	}
@@ -59,7 +60,7 @@
 		for (i = 0; i< files.length; i++) {
 			if (!files[i].getName().startsWith(LOGFILE_PREFIX))
 				continue;
-			Date logdate = DateStringFactory.DateFromKeyString(files[i].getName().substring(LOGFILE_PREFIX.length()));
+			Date logdate = DateStringFactory.dateFromKeyString(files[i].getName().substring(LOGFILE_PREFIX.length()));
 			if (logdate == null) {
 				// couldn't parse the date... hmm
 				files[i].delete();

Modified: trunk/apps/Freemail/src/freemail/OutboundContact.java
===================================================================
--- trunk/apps/Freemail/src/freemail/OutboundContact.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/OutboundContact.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -91,12 +91,18 @@
 			throw new BadFreemailAddressException();
 		} else {
 			File contactsdir = new File(account.getAccountDir(), SingleAccountWatcher.CONTACTS_DIR);
-			if (!contactsdir.exists())
-				contactsdir.mkdir();
+			if (!contactsdir.exists()) {
+				if (!contactsdir.mkdir()) {
+					throw new IOException("Couldn't create contacts dir!");
+				}
+			}
 			File outbounddir = new File(contactsdir, SingleAccountWatcher.OUTBOUND_DIR);
 			
-			if (!outbounddir.exists())
-				outbounddir.mkdir();
+			if (!outbounddir.exists()) {
+				if (!outbounddir.mkdir()) {
+					throw new IOException("Couldn't create outbound dir!");
+				}
+			}
 			
 			if (!this.address.is_ssk_address()) {
 				String ssk_mailsite = this.fetchKSKRedirect(this.address.getMailpageKey());
@@ -115,17 +121,19 @@
 			
 			File obctdir = new File(outbounddir, this.address.getSubDomain().toLowerCase());
 			
-			if (!obctdir.exists())
-				obctdir.mkdir();
+			if (!obctdir.exists() && !obctdir.mkdir()) {
+				throw new IOException("Couldn't create outbound contact dir!");
+			}
 			
 			this.contactfile = new PropsFile(new File(obctdir, PROPSFILE_NAME));
 			this.ctoutbox = new File(obctdir, OUTBOX_DIR);
-			if (!this.ctoutbox.exists())
-				this.ctoutbox.mkdir();
+			if (!this.ctoutbox.exists() && !this.ctoutbox.mkdir()) {
+				throw new IOException("Couldn't create contact outbox!");
+			}
 		}
 	}
 	
-	public OutboundContact(FreemailAccount acc, File ctdir) {
+	public OutboundContact(FreemailAccount acc, File ctdir) throws IOException {
 		this.account = acc;
 		this.address = new EmailAddress();
 		this.address.domain = ctdir.getName()+".freemail";
@@ -133,14 +141,19 @@
 		this.contactfile = new PropsFile(new File(ctdir, PROPSFILE_NAME));
 		
 		this.ctoutbox = new File(ctdir, OUTBOX_DIR);
-		if (!this.ctoutbox.exists())
-			this.ctoutbox.mkdir();
+		if (!this.ctoutbox.exists()) {
+			if (!this.ctoutbox.mkdir()) {
+				throw new IOException("Couldn't create contact outbox dir!");
+			}
+		}
 	}
 	
 	public void checkCTS() throws OutboundContactFatalException, ConnectionTerminatedException {
 		String status = this.contactfile.get("status");
 		if (status == null) {
 			this.init();
+			status = this.contactfile.get("status");
+			if (status == null) return;
 		}
 		
 		if (status.equals("cts-received")) {
@@ -400,7 +413,7 @@
 		
 		// insert it!
 		HighLevelFCPClient cli = new HighLevelFCPClient();
-		if (cli.SlotInsert(encmsg, "KSK@"+rtsksk+"-"+DateStringFactory.getKeyString(), 1, "") < 0) {
+		if (cli.slotInsert(encmsg, "KSK@"+rtsksk+"-"+DateStringFactory.getKeyString(), 1, "") < 0) {
 			// safe to copy the message into the contact outbox though
 			return false;
 		}

Modified: trunk/apps/Freemail/src/freemail/RTSFetcher.java
===================================================================
--- trunk/apps/Freemail/src/freemail/RTSFetcher.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/RTSFetcher.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -133,7 +133,7 @@
 		log.pruneBefore(cal.getTime());
 	}
 	
-	private class MySlotSaveData {
+	private static class MySlotSaveData {
 		RTSLog log;
 		String date;
 	}

Modified: trunk/apps/Freemail/src/freemail/RTSLog.java
===================================================================
--- trunk/apps/Freemail/src/freemail/RTSLog.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/RTSLog.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -58,7 +58,7 @@
 	}
 	
 	private boolean isBeforeBirth(String daystr) {
-		Date day = DateStringFactory.DateFromKeyString(daystr);
+		Date day = DateStringFactory.dateFromKeyString(daystr);
 		String birth_s = this.logfile.get("birth");
 		Date birth;
 		if (birth_s == null) {
@@ -66,7 +66,7 @@
 			birth_s = DateStringFactory.getOffsetKeyString(0);
 			this.logfile.put("birth", birth_s);
 		} else {
-			birth = DateStringFactory.DateFromKeyString(birth_s);
+			birth = DateStringFactory.dateFromKeyString(birth_s);
 			if (birth.after(new Date())) {
 				Logger.error(this, "RTS log was created in the future! Resetting to now");
 				birth = new Date();
@@ -103,7 +103,7 @@
 				continue;
 			}
 			
-			Date logdate = DateStringFactory.DateFromKeyString(datestr);
+			Date logdate = DateStringFactory.dateFromKeyString(datestr);
 			if (logdate == null) {
 				// couldn't parse the date... hmm
 				hitlist.add(cur);

Modified: trunk/apps/Freemail/src/freemail/SingleAccountWatcher.java
===================================================================
--- trunk/apps/Freemail/src/freemail/SingleAccountWatcher.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/SingleAccountWatcher.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -23,6 +23,7 @@
 
 import java.io.File;
 import java.io.FilenameFilter;
+import java.io.IOException;
 import java.lang.InterruptedException;
 
 import freemail.fcp.ConnectionTerminatedException;
@@ -108,7 +109,7 @@
 				// is it time we inserted the mailsite?
 				if (System.currentTimeMillis() > this.mailsite_last_upload + MAILSITE_UPLOAD_INTERVAL) {
 					MailSite ms = new MailSite(account.getProps());
-					if (ms.Publish() > 0) {
+					if (ms.publish() > 0) {
 						this.mailsite_last_upload = System.currentTimeMillis();
 					}
 				}
@@ -120,9 +121,12 @@
 				if (obcontacts != null) {
 					int i;
 					for (i = 0; i < obcontacts.length; i++) {
-						OutboundContact obct = new OutboundContact(account, obcontacts[i]);
-						
-						obct.doComm();
+						try {
+							OutboundContact obct = new OutboundContact(account, obcontacts[i]);
+							obct.doComm();
+						} catch (IOException ioe) {
+							Logger.error(this, "Failed to create outbound contact - not sending mail");
+						}
 					}
 				}
 				if (this.nf != null) {
@@ -170,14 +174,14 @@
 		stopping = true;
 	}
 
-	private class outboundContactFilenameFilter implements FilenameFilter {
+	private static class outboundContactFilenameFilter implements FilenameFilter {
 		// check that each dir is a base32 encoded filename
 		public boolean accept(File dir, String name ) {
 			return name.matches("[A-Za-z2-7]+");
 		}
 	}
 
-	private class inboundContactFilenameFilter implements FilenameFilter {
+	private static class inboundContactFilenameFilter implements FilenameFilter {
 		// check that each dir is a freenet key
 		public boolean accept(File dir, String name ) {
 			return name.matches("[A-Za-z0-9~-]+,[A-Za-z0-9~-]+,[A-Za-z0-9~-]+");

Modified: trunk/apps/Freemail/src/freemail/SlotManager.java
===================================================================
--- trunk/apps/Freemail/src/freemail/SlotManager.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/SlotManager.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -175,7 +175,7 @@
 		return retval;
 	}
 	
-	private class Slot {
+	private static class Slot {
 		String slot;
 		long time_added;
 	}

Modified: trunk/apps/Freemail/src/freemail/fcp/HighLevelFCPClient.java
===================================================================
--- trunk/apps/Freemail/src/freemail/fcp/HighLevelFCPClient.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/fcp/HighLevelFCPClient.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -195,7 +195,7 @@
 		return -1;
 	}
 	
-	public int SlotInsert(byte[] data, String basekey, int minslot, String suffix) throws ConnectionTerminatedException {
+	public int slotInsert(byte[] data, String basekey, int minslot, String suffix) throws ConnectionTerminatedException {
 		int slot = minslot;
 		boolean carryon = true;
 		ByteArrayInputStream bis;

Modified: trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java
===================================================================
--- trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -191,10 +191,10 @@
 		}
 		
 		if (refname != null) refname = trimQuotes(refname);
-		if (refname.length() == 0) refname = null;
+		if (refname!= null && refname.length() == 0) refname = null;
 		
 		if (mbname != null) mbname = trimQuotes(mbname);
-		if (mbname.length() == 0) mbname = null;
+		if (mbname != null && mbname.length() == 0) mbname = null;
 		
 		if (mbname == null) {
 			// return hierarchy delimiter
@@ -1280,7 +1280,7 @@
 		
 		EmailAddress addr = new EmailAddress(address);
 		
-		String retval = new String("((");
+		String retval = "((";
 		retval += this.IMAPifyString(addr.realname)+" ";
 		// SMTP Source Route. Whatever this is, it's not relevant!
 		retval += "NIL ";

Modified: trunk/apps/Freemail/src/freemail/imap/IMAPMessageFlags.java
===================================================================
--- trunk/apps/Freemail/src/freemail/imap/IMAPMessageFlags.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/imap/IMAPMessageFlags.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -122,7 +122,7 @@
 	}
 	
 	public String getFlags() {
-		String retval = new String("");
+		String retval = "";
 		
 		for (int i = 0; i < allFlags.length; i++) {
 			if (this.flags.contains(allFlags[i])) {

Modified: trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java
===================================================================
--- trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/smtp/SMTPHandler.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -162,8 +162,6 @@
 			}
 			if (b64password == null) return;
                         
-                        password = new String(Base64.decode(b64password.getBytes()));
-			
 			uname = new String(Base64.decode(b64username.getBytes()));
 			password = new String(Base64.decode(b64password.getBytes()));
 		} else if (cmd.args[0].equalsIgnoreCase("plain")) {

Modified: trunk/apps/Freemail/src/freemail/utils/DateStringFactory.java
===================================================================
--- trunk/apps/Freemail/src/freemail/utils/DateStringFactory.java	2008-04-13 20:52:14 UTC (rev 19271)
+++ trunk/apps/Freemail/src/freemail/utils/DateStringFactory.java	2008-04-13 21:39:22 UTC (rev 19272)
@@ -30,12 +30,7 @@
 public class DateStringFactory {
 	private static final TimeZone gmt = TimeZone.getTimeZone("GMT");
 	private static final Calendar cal = Calendar.getInstance(gmt);
-	private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 
-	static {
-		sdf.setTimeZone(gmt);
-	}
-
 	public static String getKeyString() {
 		return getOffsetKeyString(0);
 	}
@@ -45,11 +40,17 @@
 		cal.setTime(new Date());
 		cal.add(Calendar.DAY_OF_MONTH, offset);
 		
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+		sdf.setTimeZone(gmt);
+		
 		return sdf.format(cal.getTime());
 	}
 	
-	public static Date DateFromKeyString(String str) {
+	public static Date dateFromKeyString(String str) {
 		try {
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+			sdf.setTimeZone(gmt);
+			
 			sdf.setLenient(false);
 			return sdf.parse(str);
 		} catch (ParseException pe) {




More information about the Freemail mailing list