You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Carsten Ziegeler (JIRA)" <ji...@apache.org> on 2013/07/18 13:02:48 UTC
[jira] [Created] (SLING-2975) MapEntry#compareTo method is not
consistent and might throw ISE on Java7
Carsten Ziegeler created SLING-2975:
---------------------------------------
Summary: MapEntry#compareTo method is not consistent and might throw ISE on Java7
Key: SLING-2975
URL: https://issues.apache.org/jira/browse/SLING-2975
Project: Sling
Issue Type: Bug
Components: ResourceResolver
Affects Versions: Resource Resolver 1.0.6
Reporter: Carsten Ziegeler
Assignee: Carsten Ziegeler
Fix For: Resource Resolver 1.1.0
On Java7 sorting the map entries might result in an IllegalStateException:
java.lang.IllegalArgumentException: Comparison method violates its general
contract!
at java.util.ComparableTimSort.mergeLo(ComparableTimSort.java:714)
at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:451)
at java.util.ComparableTimSort.mergeCollapse(ComparableTimSort.java:376)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:182)
at java.util.ComparableTimSort.sort(ComparableTimSort.java:146)
at java.util.Arrays.sort(Arrays.java:472)
at java.util.Collections.sort(Collections.java:155)
The behaviour of sorting has changed with Java7 (see http://stackoverflow.com/questions/7849539/comparison-method-violates-its-general-contract-java-7-only) and it now throws such an exception if the compare method is not implemented in an consistent way.
In our case: if the two strings have the same lengths, always 1 is returned, so compareTo("a", "b") returns 1 while compareTo("b", "a") returns 1 as well
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira