I’m not crazy about adding date related stuff directly to the util package. I 
am not thrilled that we have date/time related stuff there when we have a 
datetime package they could have been placed in. Since we already have a 
datetime package there and if those classes could be moved to core.time along 
with the new ones I’d be OK with that. If the classes in util/datetime can’t be 
moved to time then I would be ok with the new classes residing in 
util/datetime.  

I am not a fan of having date/time related classes in util, util/datetime and 
time. To me having all the related classes in the same package is more 
important than them residing in the package with the best name.

Ralph


> On Jan 26, 2018, at 5:09 PM, Remko Popma <remko.po...@gmail.com> wrote:
> 
> On Sat, Jan 27, 2018 at 8:30 Remko Popma <remko.po...@gmail.com> wrote:
> 
>> 
>> On Jan 26, 2018, at 21:19, Remko Popma <remko.po...@gmail.com> wrote:
>> 
>> I moved the new precise time-related classes to a new package core.time as
>> requested by Gary.
>> 
>> Note that the preexisting time-related classes in util cannot be moved as
>> that would break user code.
>> 
>> 
>> I’m actually still unsure if moving these new classes to a new `core.time`
>> package is really better...
>> 
>> For the Java 8 platform it made sense to have a separate new `java.time`
>> package: it contains a cohesive set of classes that represent a new way of
>> thinking about time that doesn’t interact well with the old date/time
>> related classes.
>> 
>> None of these properties hold for the classes in `log4j.core.time`: our
>> classes simply extend the old classes and add some limited functionality.
>> Functionality-wise there’s nothing that justifies a new package.
>> 
>> It would make sense to have a separate time package if we could put all
>> the existing Clock, NanoClock and factory classes there as well, but moving
>> those would break other people’s code.
>> 
>> The result looks messy to me. We have some time classes in util and some
>> in core.time while conceptually there’s nothing different about them. The
>> more I think about it the less I like it.
>> 
>> I agree with Gary that it’s not ideal and it would have been nicer to have
>> all time-related classes in a separate package, but that ship has sailed.
>> Having all time classes in util is more consistent than having only some
>> classes in a separate package...
>> 
>> I’m thinking to move them back.
>> 
> 
> The only saving grace is that the classes in `log4j.core.time` are meant to
> emulate some functionality available in Java 8’s `java.time` package. But
> is that enough reason to put them in a separate package?
> 
> 
> 
>> 
>> 
>> On Fri, Jan 26, 2018 at 8:59 PM, Remko Popma <remko.po...@gmail.com>
>> wrote:
>> 
>>> I renamed DummyPreciseClock to FixedPreciseClock since it is similar to
>>> the Java 8 Clock::fixed factory method.
>>> 
>>> On Thu, Jan 25, 2018 at 9:55 AM, Matt Sicker <boa...@gmail.com> wrote:
>>> 
>>>> Aren't the classes in datetime copied from commons? Might be simpler to
>>>> keep that package uncluttered for easier updates.
>>>> 
>>>> Also, I like the name ConstantClock or something like that. Constant is a
>>>> nice term with appropriate mathematical connotations.
>>>> 
>>>> On 24 January 2018 at 12:00, Gary Gregory <garydgreg...@gmail.com>
>>>> wrote:
>>>> 
>>>>> On Wed, Jan 24, 2018 at 10:55 AM, Gary Gregory <garydgreg...@gmail.com
>>>>> 
>>>>> wrote:
>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On Wed, Jan 24, 2018 at 8:58 AM, Remko Popma <remko.po...@gmail.com>
>>>>>> wrote:
>>>>>> 
>>>>>>> I see what you mean. Hmm...
>>>>>>> 
>>>>>>> FYI, this feature (LOG4J2-1883) adds the following classes. I added
>>>> them
>>>>>>> to
>>>>>>> core.util, but they could still be moved to another package:
>>>>>>> * Instant <interface>
>>>>>>> * PreciseClock <interface>
>>>>>>> * MutableInstant
>>>>>>> * DummyPreciseClock
>>>>>>> 
>>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I urge you _not_ to name this class Dummy*, that tells me nothing :-(
>>>>> 
>>>>> OTOH, the Javadoc states:
>>>>> 
>>>>> /**
>>>>> * Implementation of the {@code PreciseClock} interface that always
>>>> returns
>>>>> a fixed value.
>>>>> * @since 2.11
>>>>> */
>>>>> 
>>>>> 
>>>>> public class DummyPreciseClock implements PreciseClock {
>>>>> 
>>>>> So I would call this class StaticPreciseClock (or
>>>> FixedValuePreciseClock,
>>>>> or ConstantPreciseClock)
>>>>> 
>>>>> ah... better :-)
>>>>> 
>>>>> Gary
>>>>> 
>>>>> 
>>>>> 
>>>>>> * SystemMillisClock
>>>>>>> 
>>>>>>> I would not consider moving the existing time-related classes,
>>>> because
>>>>>>> that
>>>>>>> would break client code. These should stay as is:
>>>>>>> * Clock <interface>
>>>>>>> * NanoClock <interface>
>>>>>>> * ClockFactory
>>>>>>> * SystemNanoClock, DummyNanoClock
>>>>>>> * CachedClock, CoarseCachedClock, SystemClock
>>>>>>> 
>>>>>>> I also would not want to rename core.util.datetime; that would just
>>>>> break
>>>>>>> client code without any tangible benefit.
>>>>>>> 
>>>>>>> So, we can add the new 5 classes to core.util.datetime, or create a
>>>> new
>>>>>>> package core.util.time and add them there, or leave them in
>>>> core.util.
>>>>>>> Not
>>>>>>> sure which I prefer actually, need to think about it a bit...
>>>>>>> 
>>>>>> 
>>>>>> For me the right place is core.time. Anything in or under "util" is
>>>> not
>>>>>> nice IMO. In Java 8 we have java.time, not java.util.time, so
>>>> core.time
>>>>>> feels right (and modern.)
>>>>>> 
>>>>>> Gary
>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Wed, Jan 24, 2018 at 11:54 PM, Gary Gregory <
>>>> garydgreg...@gmail.com>
>>>>>>> wrote:
>>>>>>> 
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> The package core.time is starting to look like a kitchen sink.
>>>> Why not
>>>>>>> put
>>>>>>>> this new class into the existing core.util.datetime or into a new
>>>>>>> core.time
>>>>>>>> package. IMO core.util.datetime, should be core.datetime or simply
>>>>>>>> core.util.time.
>>>>>>>> 
>>>>>>>> Gary
>>>>>>>> 
>>>>>>>> On Wed, Jan 24, 2018 at 4:22 AM, <rpo...@apache.org> wrote:
>>>>>>>> 
>>>>>>>>> Repository: logging-log4j2
>>>>>>>>> Updated Branches:
>>>>>>>>>  refs/heads/LOG4J2-1883-instant-field 3c22d3d83 -> b8b519e5b
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> LOG4J2-1883 moved SystemMillisClock out of the java9 module into
>>>>> core
>>>>>>> so
>>>>>>>>> it can be used with any supported Java version
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Project:
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
>>>>>>>>> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/
>>>>>>>>> commit/b8b519e5
>>>>>>>>> Tree:
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/
>>>>>>>> b8b519e5
>>>>>>>>> Diff:
>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/
>>>>>>>> b8b519e5
>>>>>>>>> 
>>>>>>>>> Branch: refs/heads/LOG4J2-1883-instant-field
>>>>>>>>> Commit: b8b519e5b6125ca08545691a631e8b3e0a0e4cd0
>>>>>>>>> Parents: 3c22d3d
>>>>>>>>> Author: rpopma <rpo...@apache.org>
>>>>>>>>> Authored: Wed Jan 24 20:22:41 2018 +0900
>>>>>>>>> Committer: rpopma <rpo...@apache.org>
>>>>>>>>> Committed: Wed Jan 24 20:22:41 2018 +0900
>>>>>>>>> 
>>>>>>>>> ------------------------------------------------------------
>>>>>>> ----------
>>>>>>>>> .../log4j/core/util/SystemMillisClock.java      | 34
>>>>>>>> --------------------
>>>>>>>>> .../log4j/core/util/SystemMillisClock.java      | 34
>>>>>>>> ++++++++++++++++++++
>>>>>>>>> 2 files changed, 34 insertions(+), 34 deletions(-)
>>>>>>>>> ------------------------------------------------------------
>>>>>>> ----------
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
>>>>>>>>> b8b519e5/log4j-core-java9/src/main/java/org/apache/logging/
>>>>>>>>> log4j/core/util/SystemMillisClock.java
>>>>>>>>> ------------------------------------------------------------
>>>>>>> ----------
>>>>>>>>> diff --git a/log4j-core-java9/src/main/
>>>>> java/org/apache/logging/log4j/
>>>>>>>>> core/util/SystemMillisClock.java b/log4j-core-java9/src/main/
>>>>>>>>> java/org/apache/logging/log4j/core/util/SystemMillisClock.java
>>>>>>>>> deleted file mode 100644
>>>>>>>>> index f267320..0000000
>>>>>>>>> --- a/log4j-core-java9/src/main/java/org/apache/logging/log4j/
>>>>>>>>> core/util/SystemMillisClock.java
>>>>>>>>> +++ /dev/null
>>>>>>>>> @@ -1,34 +0,0 @@
>>>>>>>>> -/*
>>>>>>>>> - * Licensed to the Apache Software Foundation (ASF) under one
>>>> or
>>>>> more
>>>>>>>>> - * contributor license agreements. See the NOTICE file
>>>> distributed
>>>>>>> with
>>>>>>>>> - * this work for additional information regarding copyright
>>>>>>> ownership.
>>>>>>>>> - * The ASF licenses this file to You under the Apache license,
>>>>>>> Version
>>>>>>>> 2.0
>>>>>>>>> - * (the "License"); you may not use this file except in
>>>> compliance
>>>>>>> with
>>>>>>>>> - * the License. You may obtain a copy of the License at
>>>>>>>>> - *
>>>>>>>>> - *      http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>> - *
>>>>>>>>> - * Unless required by applicable law or agreed to in writing,
>>>>>>> software
>>>>>>>>> - * distributed under the License is distributed on an "AS IS"
>>>>> BASIS,
>>>>>>>>> - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
>>>> express or
>>>>>>>>> implied.
>>>>>>>>> - * See the license for the specific language governing
>>>> permissions
>>>>>>> and
>>>>>>>>> - * limitations under the license.
>>>>>>>>> - */
>>>>>>>>> -package org.apache.logging.log4j.core.util;
>>>>>>>>> -
>>>>>>>>> -/**
>>>>>>>>> - * Implementation of the {@code Clock} interface that returns
>>>> the
>>>>>>> system
>>>>>>>>> time in millisecond granularity.
>>>>>>>>> - * @since 2.11
>>>>>>>>> - */
>>>>>>>>> -public final class SystemMillisClock implements Clock {
>>>>>>>>> -
>>>>>>>>> -    /**
>>>>>>>>> -     * Returns the system time.
>>>>>>>>> -     * @return the result of calling {@code
>>>>>>> System.currentTimeMillis()}
>>>>>>>>> -     */
>>>>>>>>> -    @Override
>>>>>>>>> -    public long currentTimeMillis() {
>>>>>>>>> -        return System.currentTimeMillis();
>>>>>>>>> -    }
>>>>>>>>> -
>>>>>>>>> -}
>>>>>>>>> 
>>>>>>>>> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/
>>>>>>>>> b8b519e5/log4j-core/src/main/java/org/apache/logging/log4j/
>>>>>>>>> core/util/SystemMillisClock.java
>>>>>>>>> ------------------------------------------------------------
>>>>>>> ----------
>>>>>>>>> diff --git a/log4j-core/src/main/java/
>>>>> org/apache/logging/log4j/core/
>>>>>>>> util/SystemMillisClock.java
>>>>>>>>> b/log4j-core/src/main/java/org/apache/logging/log4j/core/
>>>>>>>>> util/SystemMillisClock.java
>>>>>>>>> new file mode 100644
>>>>>>>>> index 0000000..f267320
>>>>>>>>> --- /dev/null
>>>>>>>>> +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/
>>>>>>>>> util/SystemMillisClock.java
>>>>>>>>> @@ -0,0 +1,34 @@
>>>>>>>>> +/*
>>>>>>>>> + * Licensed to the Apache Software Foundation (ASF) under one
>>>> or
>>>>> more
>>>>>>>>> + * contributor license agreements. See the NOTICE file
>>>> distributed
>>>>>>> with
>>>>>>>>> + * this work for additional information regarding copyright
>>>>>>> ownership.
>>>>>>>>> + * The ASF licenses this file to You under the Apache license,
>>>>>>> Version
>>>>>>>> 2.0
>>>>>>>>> + * (the "License"); you may not use this file except in
>>>> compliance
>>>>>>> with
>>>>>>>>> + * the License. You may obtain a copy of the License at
>>>>>>>>> + *
>>>>>>>>> + *      http://www.apache.org/licenses/LICENSE-2.0
>>>>>>>>> + *
>>>>>>>>> + * Unless required by applicable law or agreed to in writing,
>>>>>>> software
>>>>>>>>> + * distributed under the License is distributed on an "AS IS"
>>>>> BASIS,
>>>>>>>>> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
>>>> express or
>>>>>>>>> implied.
>>>>>>>>> + * See the license for the specific language governing
>>>> permissions
>>>>>>> and
>>>>>>>>> + * limitations under the license.
>>>>>>>>> + */
>>>>>>>>> +package org.apache.logging.log4j.core.util;
>>>>>>>>> +
>>>>>>>>> +/**
>>>>>>>>> + * Implementation of the {@code Clock} interface that returns
>>>> the
>>>>>>> system
>>>>>>>>> time in millisecond granularity.
>>>>>>>>> + * @since 2.11
>>>>>>>>> + */
>>>>>>>>> +public final class SystemMillisClock implements Clock {
>>>>>>>>> +
>>>>>>>>> +    /**
>>>>>>>>> +     * Returns the system time.
>>>>>>>>> +     * @return the result of calling {@code
>>>>>>> System.currentTimeMillis()}
>>>>>>>>> +     */
>>>>>>>>> +    @Override
>>>>>>>>> +    public long currentTimeMillis() {
>>>>>>>>> +        return System.currentTimeMillis();
>>>>>>>>> +    }
>>>>>>>>> +
>>>>>>>>> +}
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>>> --
>>>> Matt Sicker <boa...@gmail.com>
>>>> 
>>> 
>>> 
>> 


Reply via email to