I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit 0533aa7f authored by zzz's avatar zzz
Browse files

* RFC822Date: Synchronization fix

parent 568e2d50
No related branches found
No related tags found
No related merge requests found
...@@ -11,20 +11,24 @@ import java.util.Locale; ...@@ -11,20 +11,24 @@ import java.util.Locale;
*/ */
public abstract class RFC822Date { public abstract class RFC822Date {
// SimpleDateFormat is not thread-safe, methods must be synchronized
private static final SimpleDateFormat OUTPUT_FORMAT = new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US);
/** /**
* http://jimyjoshi.com/blog/2007/08/rfc822dateparsinginjava.html * http://jimyjoshi.com/blog/2007/08/rfc822dateparsinginjava.html
* Apparently public domain * Apparently public domain
* Probably don't need all of these... * Probably don't need all of these...
*/ */
private static final SimpleDateFormat rfc822DateFormats[] = new SimpleDateFormat[] { private static final SimpleDateFormat rfc822DateFormats[] = new SimpleDateFormat[] {
OUTPUT_FORMAT,
new SimpleDateFormat("EEE, d MMM yy HH:mm:ss z", Locale.US), new SimpleDateFormat("EEE, d MMM yy HH:mm:ss z", Locale.US),
new SimpleDateFormat("EEE, d MMM yy HH:mm z", Locale.US), new SimpleDateFormat("EEE, d MMM yy HH:mm z", Locale.US),
new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US), new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US),
new SimpleDateFormat("EEE, d MMM yyyy HH:mm z", Locale.US), new SimpleDateFormat("EEE, d MMM yyyy HH:mm z", Locale.US),
new SimpleDateFormat("d MMM yy HH:mm z", Locale.US), new SimpleDateFormat("d MMM yy HH:mm z", Locale.US),
new SimpleDateFormat("d MMM yy HH:mm:ss z", Locale.US), new SimpleDateFormat("d MMM yy HH:mm:ss z", Locale.US),
new SimpleDateFormat("d MMM yyyy HH:mm z", Locale.US), new SimpleDateFormat("d MMM yyyy HH:mm z", Locale.US)
new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US)
}; };
/** /**
...@@ -33,7 +37,7 @@ public abstract class RFC822Date { ...@@ -33,7 +37,7 @@ public abstract class RFC822Date {
* @param s non-null * @param s non-null
* @return -1 on failure * @return -1 on failure
*/ */
public static long parse822Date(String s) { public synchronized static long parse822Date(String s) {
for (int i = 0; i < rfc822DateFormats.length; i++) { for (int i = 0; i < rfc822DateFormats.length; i++) {
try { try {
Date date = rfc822DateFormats[i].parse(s); Date date = rfc822DateFormats[i].parse(s);
...@@ -44,8 +48,12 @@ public abstract class RFC822Date { ...@@ -44,8 +48,12 @@ public abstract class RFC822Date {
return -1; return -1;
} }
/** @since 0.8.2 */ /**
public static String to822Date(long t) { * Format is "d MMM yyyy HH:mm:ss z"
return (new SimpleDateFormat("d MMM yyyy HH:mm:ss z", Locale.US)).format(new Date(t)); *
* @since 0.8.2
*/
public synchronized static String to822Date(long t) {
return OUTPUT_FORMAT.format(new Date(t));
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment