On Wed, 15 Sep 2021 06:11:31 GMT, Jaikiran Pai <j...@openjdk.org> wrote:

>> I think we want the entries to be sorted by default; that is the most useful 
>> to the most people.
>> Checking for the overloaded method seems like trying too hard.
>> Changing the entrySet to return them sorted (always) would add overhead in a 
>> lot of cases but would allow a subclass to re-sort them as they see fit.
>> A half measure would be to sort only if the properties instance was not 
>> subclassed and spec it that way as an implementation detail.
>
> Good catch regarding the possibility of entrySet() being overridden.
> 
>> I think we want the entries to be sorted by default; that is the most useful 
>> to the most people.
> 
> Agreed
> 
>> Changing the entrySet to return them sorted (always) would add overhead in a 
>> lot of cases but would allow a subclass to re-sort them as they see fit.
> 
> Agreed - I think changing the implementation of entrySet to return an ordered 
> set is an unnecessary overhead in the context of what's being targeted in 
> this PR.
> 
>> A half measure would be to sort only if the properties instance was not 
>> subclassed and spec it that way as an implementation detail.
> 
> I think just checking the properties instance type to see if it is subclassed 
> is perhaps too big a penalty for those applications that do subclass 
> java.util.Properties but don't override the entrySet() method. Such 
> applications/subclasses will then never be able to use this new 
> implementation where we write out the properties in the natural order. 
> Perhaps a middle ground would be your other option:
> 
>> Checking for the overloaded method seems like trying too hard.
> 
> IMO, I don't think we would be trying too hard to identify this. I have 
> updated this PR to try and articulate this both in terms of the 
> implementation as well as the updated javadoc of this method. Tests have then 
> been introduced to verify this case of Properties subclasses. This 
> https://github.com/openjdk/jdk/pull/5372/commits/79d1052775dd8e98fb7078710eda0fd6dd83b164
>  is the relevant commit in the updated PR. I understand that we haven't come 
> to an agreement on this aspect yet, but it was easier to show it in terms of 
> code and spec, so I decided to include this commit in the PR. I will of 
> course revert it or change it appropriately depending on how we want to deal 
> with this case.

>   >  Checking for the overloaded method seems like trying too hard.
> 
> IMO, I don't think we would be trying too hard to identify this. I have 
> updated this PR to try and articulate this both in terms of the 
> implementation as well as the updated javadoc of this method. Tests have then 
> been introduced to verify this case of Properties subclasses. This 79d1052 is 
> the relevant commit in the updated PR. I understand that we haven't come to 
> an agreement on this aspect yet, but it was easier to show it in terms of 
> code and spec, so I decided to include this commit in the PR. I will of 
> course revert it or change it appropriately depending on how we want to deal 
> with this case.

Hmm. Interesting idea - it looks like it could work given that properties as a 
private `EntrySet` class used for its entry set implementation... @RogerRiggs 
what do you think?

-------------

PR: https://git.openjdk.java.net/jdk/pull/5372

Reply via email to