You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2010/02/05 10:22:45 UTC
svn commit: r906866 - in /jackrabbit/trunk:
jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/
jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/
jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/...
Author: angela
Date: Fri Feb 5 09:22:44 2010
New Revision: 906866
URL: http://svn.apache.org/viewvc?rev=906866&view=rev
Log:
JCR-2013 - IOUtils - getCreated(...) - SimpleDateFormat is not threadsafe
Modified:
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/IOUtil.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/VersionItemCollection.java
jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/VersionResourceImpl.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java
jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/util/HttpDateFormat.java
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/IOUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/IOUtil.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/IOUtil.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/server/io/IOUtil.java Fri Feb 5 09:22:44 2010
@@ -18,8 +18,7 @@
import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.webdav.DavConstants;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.jackrabbit.webdav.util.HttpDateFormat;
import javax.jcr.Node;
import javax.jcr.RepositoryException;
@@ -36,8 +35,6 @@
*/
public class IOUtil {
- private static Logger log = LoggerFactory.getLogger(IOUtil.class);
-
/**
* Constant for undefined modification/creation time
*/
@@ -52,26 +49,26 @@
* Return the last modification time as formatted string.
*
* @return last modification time as string.
- * @see DavConstants#modificationDateFormat
+ * @see org.apache.jackrabbit.webdav.util.HttpDateFormat#modificationDateFormat()
*/
public static String getLastModified(long modificationTime) {
if (modificationTime <= IOUtil.UNDEFINED_TIME) {
modificationTime = new Date().getTime();
}
- return DavConstants.modificationDateFormat.format(new Date(modificationTime));
+ return HttpDateFormat.modificationDateFormat().format(new Date(modificationTime));
}
/**
* Return the creation time as formatted string.
*
* @return creation time as string.
- * @see DavConstants#creationDateFormat
+ * @see org.apache.jackrabbit.webdav.util.HttpDateFormat#creationDateFormat()
*/
public static String getCreated(long createdTime) {
if (createdTime <= IOUtil.UNDEFINED_TIME) {
createdTime = 0;
}
- return DavConstants.creationDateFormat.format(new Date(createdTime));
+ return HttpDateFormat.creationDateFormat().format(new Date(createdTime));
}
/**
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/AbstractResource.java Fri Feb 5 09:22:44 2010
@@ -17,7 +17,6 @@
package org.apache.jackrabbit.webdav.jcr;
import org.apache.jackrabbit.server.io.IOUtil;
-import org.apache.jackrabbit.webdav.DavConstants;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavLocatorFactory;
import org.apache.jackrabbit.webdav.DavResource;
@@ -28,6 +27,7 @@
import org.apache.jackrabbit.webdav.MultiStatus;
import org.apache.jackrabbit.webdav.MultiStatusResponse;
import org.apache.jackrabbit.webdav.DavCompliance;
+import org.apache.jackrabbit.webdav.util.HttpDateFormat;
import org.apache.jackrabbit.webdav.jcr.search.SearchResourceImpl;
import org.apache.jackrabbit.webdav.jcr.transaction.TxLockManagerImpl;
import org.apache.jackrabbit.webdav.jcr.version.report.NodeTypesReport;
@@ -557,7 +557,7 @@
properties.add(new DefaultDavProperty(DavPropertyName.GETLASTMODIFIED, lastModified));
// default creation time
- properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE, DavConstants.creationDateFormat.format(new Date(0))));
+ properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE, HttpDateFormat.creationDateFormat().format(new Date(0))));
// supported lock property
properties.add(supportedLock);
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/DefaultItemCollection.java Fri Feb 5 09:22:44 2010
@@ -52,7 +52,6 @@
import org.apache.jackrabbit.server.io.IOUtil;
import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.webdav.DavCompliance;
-import org.apache.jackrabbit.webdav.DavConstants;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavResource;
import org.apache.jackrabbit.webdav.DavResourceFactory;
@@ -61,6 +60,7 @@
import org.apache.jackrabbit.webdav.DavResourceLocator;
import org.apache.jackrabbit.webdav.DavServletResponse;
import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.util.HttpDateFormat;
import org.apache.jackrabbit.webdav.io.InputContext;
import org.apache.jackrabbit.webdav.io.OutputContext;
import org.apache.jackrabbit.webdav.jcr.lock.JcrActiveLock;
@@ -881,7 +881,7 @@
if (n.hasProperty(JcrConstants.JCR_CREATED)) {
long creationTime = n.getProperty(JcrConstants.JCR_CREATED).getValue().getLong();
properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE,
- DavConstants.creationDateFormat.format(new Date(creationTime))));
+ HttpDateFormat.creationDateFormat().format(new Date(creationTime))));
}
} catch (RepositoryException e) {
log.warn("Error while accessing jcr:created property");
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/VersionItemCollection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/VersionItemCollection.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/VersionItemCollection.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/version/VersionItemCollection.java Fri Feb 5 09:22:44 2010
@@ -17,11 +17,11 @@
package org.apache.jackrabbit.webdav.jcr.version;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.webdav.DavConstants;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavResourceFactory;
import org.apache.jackrabbit.webdav.DavResourceLocator;
import org.apache.jackrabbit.webdav.DavServletResponse;
+import org.apache.jackrabbit.webdav.util.HttpDateFormat;
import org.apache.jackrabbit.webdav.jcr.DefaultItemCollection;
import org.apache.jackrabbit.webdav.jcr.ItemResourceConstants;
import org.apache.jackrabbit.webdav.jcr.JcrDavException;
@@ -174,7 +174,7 @@
Version v = (Version)item;
// created and creationDate properties
try {
- String creationDate = DavConstants.creationDateFormat.format(v.getCreated().getTime());
+ String creationDate = HttpDateFormat.creationDateFormat().format(v.getCreated().getTime());
// replace dummy creation date from default collection
properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE, creationDate));
Modified: jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/VersionResourceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/VersionResourceImpl.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/VersionResourceImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/simple/VersionResourceImpl.java Fri Feb 5 09:22:44 2010
@@ -16,7 +16,6 @@
package org.apache.jackrabbit.webdav.simple;
import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.webdav.DavConstants;
import org.apache.jackrabbit.webdav.DavException;
import org.apache.jackrabbit.webdav.DavResource;
import org.apache.jackrabbit.webdav.DavResourceFactory;
@@ -26,6 +25,7 @@
import org.apache.jackrabbit.webdav.DavResourceIterator;
import org.apache.jackrabbit.webdav.DavResourceIteratorImpl;
import org.apache.jackrabbit.webdav.MultiStatusResponse;
+import org.apache.jackrabbit.webdav.util.HttpDateFormat;
import org.apache.jackrabbit.webdav.io.InputContext;
import org.apache.jackrabbit.webdav.jcr.JcrDavException;
import org.apache.jackrabbit.webdav.property.DavPropertyName;
@@ -237,7 +237,7 @@
super.initProperties();
Version v = (Version) getNode();
try {
- String creationDate = DavConstants.creationDateFormat.format(v.getCreated().getTime());
+ String creationDate = HttpDateFormat.creationDateFormat().format(v.getCreated().getTime());
// replace dummy creation date from default collection
properties.add(new DefaultDavProperty(DavPropertyName.CREATIONDATE, creationDate));
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java Fri Feb 5 09:22:44 2010
@@ -141,12 +141,14 @@
public static long UNDEFINED_TIME = -1;
/**
- * modificationDate date format per RFC 1123
+ * modificationDate date format per RFC 1123.<br>
+ * NOTE: Access to <code>DateFormat</code> isn't thread save.
*/
- public static DateFormat modificationDateFormat = new HttpDateFormat("EEE, dd MMM yyyy HH:mm:ss z");
+ public static DateFormat modificationDateFormat = HttpDateFormat.modificationDateFormat();
/**
- * Simple date format for the creation date ISO representation (partial).
+ * Simple date format for the creation date ISO representation (partial).<br>
+ * NOTE: Access to <code>DateFormat</code> isn't thread save.
*/
- public static DateFormat creationDateFormat = new HttpDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+ public static DateFormat creationDateFormat = HttpDateFormat.creationDateFormat();
}
Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/util/HttpDateFormat.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/util/HttpDateFormat.java?rev=906866&r1=906865&r2=906866&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/util/HttpDateFormat.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/util/HttpDateFormat.java Fri Feb 5 09:22:44 2010
@@ -27,8 +27,38 @@
private static final TimeZone GMT_TIMEZONE = TimeZone.getTimeZone("GMT");
+ /**
+ * Pattern for the modification date as defined by RFC 1123
+ */
+ public static final String MODIFICATION_DATE_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";
+
+ /**
+ * Simple date format pattern for the creation date ISO representation (partial).
+ */
+ public static final String CREATION_DATE_PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
+
public HttpDateFormat(String pattern) {
super(pattern, Locale.ENGLISH);
super.setTimeZone(GMT_TIMEZONE);
}
+
+ /**
+ * Creates a new HttpDateFormat using the
+ * {@link #MODIFICATION_DATE_PATTERN modifcation date pattern}.
+ *
+ * @return a new HttpDateFormat.
+ */
+ public static HttpDateFormat modificationDateFormat() {
+ return new HttpDateFormat(MODIFICATION_DATE_PATTERN);
+ }
+
+ /**
+ * Creates a new HttpDateFormat using the
+ * {@link #CREATION_DATE_PATTERN creation date pattern}.
+ *
+ * @return a new HttpDateFormat.
+ */
+ public static HttpDateFormat creationDateFormat() {
+ return new HttpDateFormat(CREATION_DATE_PATTERN);
+ }
}
\ No newline at end of file