[threeten-dev] TzdbZoneRulesCompiler
Xueming Shen
xueming.shen at oracle.com
Fri Dec 14 15:32:45 PST 2012
If StandardZoneRules is the only class needed to be serializable in zone
package,
Isn't Ser delegation no longer necessary? it has a short name for sure.
-Sherman
On 12/14/12 3:12 PM, Xueming Shen wrote:
> With Roger's comment, I took a step back to keep the ZOT and ZOTR
> un-touched for
> now. To have the sun.time.zone.Ser for SZR only, it appears we can
> also save one byte
> as well:-) It should be easy to simply remove the javax.time.Ser and
> the methods in
> ZOT and ZOTR, if we decide to let them go.
>
> http://cr.openjdk.java.net/~sherman/jdk8_threeten/tzcompiler/
>
> -Sherman
>
> On 12/14/12 2:56 PM, Stephen Colebourne wrote:
>> On 14 December 2012 20:44, Xueming Shen <xueming.shen at oracle.com> wrote:
>>> This is the first draft to pull the tzdb compiler out of the core
>>> javax.time.zone
>>> package. "Inevitably" it brings the ZoneRulesBulder with it and then
>>> the
>>> StandardZoneRules and finally the Ser:-)
>> I would expect the ZoneRulesBuilder to be separated as well, as it is
>> designed in quite a TZDB way.
>>
>>> Now ZoneOffsetTransition and ZoneOffsetTransitionRule completely
>>> outsource
>>> its serialization to the Ser. Arguably, it should be fine to just
>>> leave the
>>> serialization
>>> stuff of these two classes to the default implementation, or
>>> further, not
>>> serializable
>>> at all (any third-party ZoneRules implementation, if any, can feel
>>> free to
>>> implement
>>> their serialization form for these two, if they are needed in their
>>> ZoneRules serialization
>>> form...). The implementation will be clearer, if we give up the
>>> serialization of these
>>> two classes. We still keep those read/write of these two for SZR.
>> There is no need for ZOT and ZOTR to be independently serializable.
>> Only the rules themselves need to be serializable.
>>
>>> There are still 2 issues in ZoneOffsetTransition class. The big one
>>> is that
>>> it appears
>>> we have bunch of "transitions" that have the same before and after
>>> offset
>>> from the
>>> builder/compiler, I have not looked into the details of these
>>> "transitions".
>> They are probably due to locations where the time-zone name changed
>> without changing the offset.
>>
>>> The small one is that the toEpochSecond() method,
>>> which is
>>> "frequently" used by the builder and the SZR, is it worth make it
>>> public, or
>>> I should have
>>> it as the utility method somewhere in sun.time.zone.
>> There is a case for ZoneRules to have a getOffset(epochSecond) method
>> as well. If the method has to be public then so be it.
>>
>>> Opinion? the surgery is too big?
>> Taking a step back, I think that ZoneRules probably does not need to
>> be an interface. There are only two sensible implementations - single
>> offset and complex, as per StandardZoneRules.
>>
>> If we made this change, then StandardZoneRules and the rules inside
>> ZoneOffset would merge inside ZoneRules. Then, all the serialization
>> would stay in the core. The tool would simply create the necessary
>> items to pass to the standard public factory on ZoneRules.
>>
>> So, what you've done makes sense given where we are, but I think there
>> is a better option.
>>
>> Stephen
>
More information about the threeten-dev
mailing list