[ 
https://issues.apache.org/jira/browse/LUCENE-1736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steven Rowe resolved LUCENE-1736.
---------------------------------

       Resolution: Fixed
    Fix Version/s: 3.3

Committed:
- r1132806: trunk
- r1132812: branch_3x

Thanks David!

> DateTools.java general improvements
> -----------------------------------
>
>                 Key: LUCENE-1736
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1736
>             Project: Lucene - Java
>          Issue Type: Improvement
>          Components: core/index
>    Affects Versions: 2.9
>            Reporter: David Smiley
>            Assignee: Steven Rowe
>            Priority: Minor
>             Fix For: 3.3, 4.0
>
>         Attachments: LUCENE-1736.patch, 
> LUCENE-1736_DateTools_improvements.patch, cleanerDateTools.patch
>
>
> Applying the attached patch shows the improvements to DateTools.java that I 
> think should be done. All logic that does anything at all is moved to 
> instance methods of the inner class Resolution. I argue this is more 
> object-oriented.
> 1. In cases where Resolution is an argument to the method, I can simply 
> invoke the appropriate call on the Resolution object. Formerly there was a 
> big branch if/else.
> 2. Instead of "synchronized" being used seemingly everywhere, synchronized is 
> used to sync on the object that is not threadsafe, be it a DateFormat or 
> Calendar instance.
> 3. Since different DateFormat and Calendar instances are created 
> per-Resolution, there is now less lock contention since threads using 
> different resolutions will not use the same locks.
> 4. The old implementation of timeToString rounded the time before formatting 
> it. That's unnecessary since the format only includes the resolution desired.
> 5. round() now uses a switch statement that benefits from fall-through (no 
> break).
> Another debatable improvement that could be made is putting the resolution 
> instances into an array indexed by format length. This would mean I could 
> remove the switch in lookupResolutionByLength() and avoid the length 
> constants there. Maybe that would be a bit too over-engineered when the 
> switch is fine.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to