You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2007/10/22 22:25:10 UTC
svn commit: r587236 -
/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java
Author: jmsnell
Date: Mon Oct 22 13:25:10 2007
New Revision: 587236
URL: http://svn.apache.org/viewvc?rev=587236&view=rev
Log:
Minor optimizations to AtomDate. Avoid creating a new SimpleDateFormat instance on every call to toString and parse. Create SDF instances lazily for each of the masks.
Modified:
incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java
Modified: incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java?rev=587236&r1=587235&r2=587236&view=diff
==============================================================================
--- incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java (original)
+++ incubator/abdera/java/trunk/core/src/main/java/org/apache/abdera/model/AtomDate.java Mon Oct 22 13:25:10 2007
@@ -17,11 +17,12 @@
*/
package org.apache.abdera.model;
-import java.text.FieldPosition;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
import java.util.TimeZone;
/**
@@ -213,6 +214,19 @@
"yyyy-MM",
"yyyy"
};
+
+ private static final Map<String,SimpleDateFormat> maskmap = new HashMap<String,SimpleDateFormat>();
+ private static SimpleDateFormat getSDF(String mask) {
+ SimpleDateFormat sdf = maskmap.get(mask);
+ if (sdf == null) {
+ synchronized (maskmap) {
+ sdf = new SimpleDateFormat(mask);
+ sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
+ maskmap.put(mask,sdf);
+ }
+ }
+ return sdf;
+ }
/**
* Parse the serialized string form into a java.util.Date
@@ -233,11 +247,9 @@
}
Date d = null;
- SimpleDateFormat sdf = new SimpleDateFormat();
for (int n = 0; n < masks.length; n++) {
+ SimpleDateFormat sdf = getSDF(masks[n]);
try {
- sdf.applyPattern(masks[n]);
- sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
sdf.setLenient(true);
d = sdf.parse(date, new ParsePosition(0));
if (d != null) break;
@@ -253,12 +265,8 @@
* @param d A java.util.Date
* @return The serialized string form of the date
*/
- public static String format (Date d) {
- StringBuffer iso8601 = new StringBuffer();
- SimpleDateFormat sdf = new SimpleDateFormat(masks[2]);
- sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
- sdf.format(d, iso8601, new FieldPosition(0));
- return iso8601.toString();
+ public static String format (Date d) {
+ return getSDF(masks[2]).format(d);
}
/**