Matías Albanesi created SCM-744:
-----------------------------------

             Summary: api's AbstractConsumer ignores Locale when using a custom 
dateFormatter
                 Key: SCM-744
                 URL: https://jira.codehaus.org/browse/SCM-744
             Project: Maven SCM
          Issue Type: Bug
          Components: maven-scm-api
    Affects Versions: 1.8.1
            Reporter: Matías Albanesi
            Priority: Minor


Class org.apache.maven.scm.util.AbstractConsumer contains a method:

protected Date parseDate( String date, String userPattern, String 
defaultPattern, Locale locale )

Which ignores the specified locale if there is a userPattern specified. Current 
implementation is:
        if ( StringUtils.isNotEmpty( userPattern ) )
        {
            format = new SimpleDateFormat( userPattern );
            patternUsed = userPattern;
        }

When the date parsing fails it misleadingly displays a message indicating that 
it did make use of the Locale but clearly it did not:

[ERROR] skip ParseException: Unparseable date: "Mon Oct 21 18:14:36 2013 -0300" 
during parsing date Mon Oct 21 18:14:36 2013 -0300 with pattern EEE MMM dd 
HH:mm:ss yyyy Z with Locale en
java.text.ParseException: Unparseable date: "Mon Oct 21 18:14:36 2013 -0300"
        at java.text.DateFormat.parse(DateFormat.java:337)
        at 
org.apache.maven.scm.util.AbstractConsumer.parseDate(AbstractConsumer.java:112)
        at 
org.apache.maven.scm.provider.hg.command.changelog.HgChangeLogConsumer.doConsume(HgChangeLogConsumer.java:196)
        at 
org.apache.maven.scm.provider.hg.command.changelog.HgChangeLogConsumer.consumeLine(HgChangeLogConsumer.java:97)
        at 
org.codehaus.plexus.util.cli.StreamPumper.consumeLine(StreamPumper.java:195)

The issue happens because my environment has user.language=es, user.country=AR. 
Even passing these parameters in the command line does not help:

mvn clean changelog:changelog -Duser.language=en -Duser.country=US

fails the same way.

How this was tested:
- Mercurial repository
- using maven-changelog-plugin (specifying system parameters here does not help 
either)
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-changelog-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <dateFormat>EEE MMM dd HH:mm:ss yyyy Z</dateFormat>
      <systemProperties>
       <property><name>user.language</name><value>en</value></property>
       <property><name>user.country</name><value>US</value></property>
      </systemProperties>
    </configuration>
  </plugin>




--
This message was sent by Atlassian JIRA
(v6.1.6#6162)

Reply via email to