You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ma...@apache.org on 2012/08/20 23:58:12 UTC

svn commit: r1375271 - in /ant/ivy/core/branches/2.3.x: ./ src/java/org/apache/ivy/ src/java/org/apache/ivy/ant/ src/java/org/apache/ivy/plugins/parser/xml/ src/java/org/apache/ivy/plugins/report/ src/java/org/apache/ivy/util/

Author: maartenc
Date: Mon Aug 20 21:58:12 2012
New Revision: 1375271

URL: http://svn.apache.org/viewvc?rev=1375271&view=rev
Log:
FIX: SimpleDateFormat is not thread safe (IVY-1373) (merged from trunk)

Added:
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/util/DateUtil.java
      - copied unchanged from r1375250, ant/ivy/core/trunk/src/java/org/apache/ivy/util/DateUtil.java
Modified:
    ant/ivy/core/branches/2.3.x/   (props changed)
    ant/ivy/core/branches/2.3.x/CHANGES.txt
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/Ivy.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyDeliver.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyPublish.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
    ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java

Propchange: ant/ivy/core/branches/2.3.x/
------------------------------------------------------------------------------
  Merged /ant/ivy/core/trunk:r1375250

Modified: ant/ivy/core/branches/2.3.x/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/CHANGES.txt?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/CHANGES.txt (original)
+++ ant/ivy/core/branches/2.3.x/CHANGES.txt Mon Aug 20 21:58:12 2012
@@ -129,6 +129,7 @@ for detailed view of each issue, please 
 	
    2.3.x
 =====================================
+- FIX: SimpleDateFormat is not thread safe (IVY-1373)
 - FIX: Maven 'hk2-jar' packaging is now supported (IVY-1357)
 - FIX: Maven 'orbit' and 'pear' packaging is now supported (IVY-899)
 - FIX: Memory leak and infinite loop in ModuleId.java (IVY-1362)

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/Ivy.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/Ivy.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/Ivy.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/Ivy.java Mon Aug 20 21:58:12 2012
@@ -65,6 +65,7 @@ import org.apache.ivy.plugins.repository
 import org.apache.ivy.plugins.resolver.BasicResolver;
 import org.apache.ivy.plugins.resolver.DependencyResolver;
 import org.apache.ivy.plugins.trigger.Trigger;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.HostUtil;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.MessageLoggerEngine;
@@ -130,7 +131,10 @@ public class Ivy {
     
     private static final int KILO = 1024;
 
-    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss");
+    /**
+     * @deprecated Use the {@link DateUtil} utility class instead.
+     */
+    public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(DateUtil.DATE_FORMAT_PATTERN);
     
     /**
      * the current version of Ivy, as displayed on the console when 

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyDeliver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyDeliver.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyDeliver.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyDeliver.java Mon Aug 20 21:58:12 2012
@@ -28,6 +28,7 @@ import org.apache.ivy.core.module.descri
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.module.status.StatusManager;
 import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.Message;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.taskdefs.CallTarget;
@@ -375,7 +376,7 @@ public class IvyDeliver extends IvyTask 
         Date pubdate = getPubDate(this.pubdate, new Date());
         if (pubRevision == null) {
             if (revision.startsWith("working@")) {
-                pubRevision = Ivy.DATE_FORMAT.format(pubdate);
+                pubRevision = DateUtil.format(pubdate);
             } else {
                 pubRevision = revision;
             }

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyPublish.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyPublish.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyPublish.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/ant/IvyPublish.java Mon Aug 20 21:58:12 2012
@@ -33,6 +33,7 @@ import org.apache.ivy.core.module.id.Art
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.publish.PublishOptions;
 import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.util.DateUtil;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.DynamicAttribute;
 
@@ -271,7 +272,7 @@ public class IvyPublish extends IvyTask 
         Date pubdate = getPubDate(this.pubdate, new Date());
         if (pubRevision == null) {
             if (revision.startsWith("working@")) {
-                pubRevision = Ivy.DATE_FORMAT.format(pubdate);
+                pubRevision = DateUtil.format(pubdate);
             } else {
                 pubRevision = revision;
             }
@@ -295,7 +296,7 @@ public class IvyPublish extends IvyTask 
                 deliver.setDeliveryList(deliveryList);
                 deliver.setModule(getModule());
                 deliver.setOrganisation(getOrganisation());
-                deliver.setPubdate(Ivy.DATE_FORMAT.format(pubdate));
+                deliver.setPubdate(DateUtil.format(pubdate));
                 deliver.setPubrevision(getPubrevision());
                 deliver.setPubbranch(getPubbranch());
                 deliver.setRevision(getRevision());

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorParser.java Mon Aug 20 21:58:12 2012
@@ -71,6 +71,7 @@ import org.apache.ivy.plugins.repository
 import org.apache.ivy.plugins.repository.url.URLResource;
 import org.apache.ivy.plugins.resolver.DependencyResolver;
 import org.apache.ivy.plugins.resolver.URLResolver;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.XMLHelper;
 import org.apache.ivy.util.extendable.ExtendableItemHelper;
@@ -1008,7 +1009,7 @@ public class XmlModuleDescriptorParser e
             String pubDate = settings.substitute(attributes.getValue("publication"));
             if (pubDate != null && pubDate.length() > 0) {
                 try {
-                    getMd().setPublicationDate(Ivy.DATE_FORMAT.parse(pubDate));
+                    getMd().setPublicationDate(DateUtil.parse(pubDate));
                 } catch (ParseException e) {
                     addError("invalid publication date format: " + pubDate);
                     getMd().setPublicationDate(getDefaultPubDate());

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorUpdater.java Mon Aug 20 21:58:12 2012
@@ -41,7 +41,6 @@ import java.util.StringTokenizer;
 
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.ivy.Ivy;
 import org.apache.ivy.core.module.descriptor.Configuration;
 import org.apache.ivy.core.module.descriptor.DefaultModuleDescriptor;
 import org.apache.ivy.core.module.descriptor.DependencyDescriptor;
@@ -57,6 +56,7 @@ import org.apache.ivy.plugins.repository
 import org.apache.ivy.plugins.repository.file.FileResource;
 import org.apache.ivy.plugins.repository.url.URLResource;
 import org.apache.ivy.util.Checks;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.XMLHelper;
 import org.apache.ivy.util.extendable.ExtendableItemHelper;
@@ -755,7 +755,7 @@ public final class XmlModuleDescriptorUp
             }
             write(" status=\"" + XMLHelper.escape(status) + "\"");
             if (pubdate != null) {
-                write(" publication=\"" + Ivy.DATE_FORMAT.format(pubdate) + "\"");
+                write(" publication=\"" + DateUtil.format(pubdate) + "\"");
             } else if (attributes.getValue("publication") != null) {
                 write(" publication=\""
                         + substitute(settings, attributes.getValue("publication")) + "\"");

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/parser/xml/XmlModuleDescriptorWriter.java Mon Aug 20 21:58:12 2012
@@ -27,7 +27,6 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.ivy.Ivy;
 import org.apache.ivy.core.IvyPatternHelper;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.Configuration;
@@ -43,6 +42,7 @@ import org.apache.ivy.core.module.descri
 import org.apache.ivy.core.module.descriptor.OverrideDependencyDescriptorMediator;
 import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.plugins.matcher.MapMatcher;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.Message;
 import org.apache.ivy.util.StringUtils;
 import org.apache.ivy.util.XMLHelper;
@@ -450,7 +450,7 @@ public final class XmlModuleDescriptorWr
         }
         out.println("\t\tstatus=\"" + XMLHelper.escape(md.getStatus()) + "\"");
         out.println("\t\tpublication=\""
-                + Ivy.DATE_FORMAT.format(md.getResolvedPublicationDate()) + "\"");
+                + DateUtil.format(md.getResolvedPublicationDate()) + "\"");
         if (md.isDefault()) {
             out.println("\t\tdefault=\"true\"");
         }

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportParser.java Mon Aug 20 21:58:12 2012
@@ -31,7 +31,6 @@ import java.util.TreeMap;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
-import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.ArtifactOrigin;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultArtifact;
@@ -39,6 +38,7 @@ import org.apache.ivy.core.module.id.Mod
 import org.apache.ivy.core.report.ArtifactDownloadReport;
 import org.apache.ivy.core.report.DownloadStatus;
 import org.apache.ivy.core.report.MetadataArtifactDownloadReport;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.extendable.ExtendableItemHelper;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -108,7 +108,7 @@ public class XmlReportParser {
                         try {
                             String pubDateAttr = attributes.getValue("pubdate");
                             if (pubDateAttr != null) {
-                                pubdate = Ivy.DATE_FORMAT.parse(pubDateAttr);
+                                pubdate = DateUtil.parse(pubDateAttr);
                             }
                             skip = false;
                         } catch (ParseException e) {

Modified: ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java?rev=1375271&r1=1375270&r2=1375271&view=diff
==============================================================================
--- ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java (original)
+++ ant/ivy/core/branches/2.3.x/src/java/org/apache/ivy/plugins/report/XmlReportWriter.java Mon Aug 20 21:58:12 2012
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
-import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.ArtifactOrigin;
 import org.apache.ivy.core.module.descriptor.License;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
@@ -42,6 +41,7 @@ import org.apache.ivy.core.report.Metada
 import org.apache.ivy.core.resolve.IvyNode;
 import org.apache.ivy.core.resolve.IvyNodeCallers.Caller;
 import org.apache.ivy.core.resolve.IvyNodeEviction.EvictionData;
+import org.apache.ivy.util.DateUtil;
 import org.apache.ivy.util.StringUtils;
 import org.apache.ivy.util.XMLHelper;
 
@@ -85,7 +85,7 @@ public class XmlReportWriter {
         }
         out.println("\t\tconf=\"" + XMLHelper.escape(report.getConfiguration()) + "\"");
         out.println("\t\tconfs=\"" + XMLHelper.escape(StringUtils.join(confs, ", ")) + "\"");
-        out.println("\t\tdate=\"" + Ivy.DATE_FORMAT.format(report.getDate()) + "\"/>");
+        out.println("\t\tdate=\"" + DateUtil.format(report.getDate()) + "\"/>");
 
         out.println("\t<dependencies>");
 
@@ -120,7 +120,7 @@ public class XmlReportWriter {
             details.append(" status=\"");
             details.append(XMLHelper.escape(dep.getDescriptor().getStatus()));
             details.append("\" pubdate=\"");
-            details.append(Ivy.DATE_FORMAT.format(new Date(dep.getPublication())));
+            details.append(DateUtil.format(new Date(dep.getPublication())));
             details.append("\" resolver=\"");
             details.append(XMLHelper.escape(
                 dep.getModuleRevision().getResolver().getName()));